aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2020-11-19 19:43:38 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2020-11-19 19:43:38 -0500
commit63e4f9bb7cea4f73a091431407d042ec9ae8b5f7 (patch)
treed56703bf5e2a0932e7519843589d31c228d0314e
parent79783ce4f83642ba748824dc02ecc1d897df347a (diff)
parent6a0204e95aa5358ef2bf7714559ccd366dba4617 (diff)
downloadhopm-63e4f9bb7cea4f73a091431407d042ec9ae8b5f7.tar.bz2
hopm-63e4f9bb7cea4f73a091431407d042ec9ae8b5f7.tar.xz
hopm-63e4f9bb7cea4f73a091431407d042ec9ae8b5f7.tar.zst
Update upstream source from tag 'upstream/1.1.9'
Update to upstream version '1.1.9' with Debian dir f87a15f8b0e0242659f92e8bd07df9e123305fbe
-rw-r--r--NEWS192
-rw-r--r--README27
-rwxr-xr-xconfig.guess312
-rwxr-xr-xconfig.sub647
-rwxr-xr-xconfigure32
-rw-r--r--configure.ac6
-rw-r--r--doc/reference.conf38
-rw-r--r--ltmain.sh10
-rw-r--r--m4/ax_arg_openssl.m42
-rw-r--r--m4/libtool.m46
-rw-r--r--src/Makefile.am1
-rw-r--r--src/Makefile.in1
-rw-r--r--src/config-lexer.c1039
-rw-r--r--src/config-lexer.l4
-rw-r--r--src/config-parser.c1705
-rw-r--r--src/config-parser.h279
-rw-r--r--src/config-parser.y39
-rw-r--r--src/config.c8
-rw-r--r--src/config.h6
-rw-r--r--src/irc.c104
-rw-r--r--src/libopm/src/config.c33
-rw-r--r--src/libopm/src/libopm.c66
-rw-r--r--src/libopm/src/libopm.h3
-rw-r--r--src/patchlevel.h2
-rw-r--r--src/scan.c2
-rw-r--r--src/serno.h1
26 files changed, 2467 insertions, 2098 deletions
diff --git a/NEWS b/NEWS
index 5068d6b..99b5735 100644
--- a/NEWS
+++ b/NEWS
@@ -1,160 +1,160 @@
+-- Noteworthy changes in version 1.1.9 (2020-11-16)
+* Implemented support for loading a user-provided private key and tls client
+ certificate. The `irc::rsa_private_key_file`and `irc::tls_certificate_file`
+ configuration directives have been added for this.
+ As a side effect this now allows HOPM to use certificate fingerprints for
+ NickServ authentication
+* The `vhost` configuration directive found in the irc {} and scanner {} blocks
+ has been renamed to `bind`
+
+
-- Noteworthy changes in version 1.1.8 (2020-07-05)
-o) Minimum supported OpenSSL version is 1.1.1 now
-o) Experimental TLS support for the irc client part has been implemented. We
- only do TLSv1.2 and higher
-o) The irc::tls and irc::tls_hostname_verification configuration directives
- have been added
-o) A possible out-of-bounds write in the irc parser logic has been fixed
+* Minimum supported OpenSSL version is 1.1.1 now
+* Experimental TLS support for the irc client part has been implemented. We
+ only do TLSv1.2 and higher
+* The `irc::tls` and `irc::tls_hostname_verification` configuration directives
+ have been added
+* A possible out-of-bounds write in the irc parser logic has been fixed
-- Noteworthy changes in version 1.1.7 (2020-04-19)
-o) Fixed github issue #31: hopm attempts to open stderr for logging in
- non-debug/fork mode which can cause hopm to exit silently
+* Fixed github issue #31: hopm attempts to open stderr for logging in
+ non-debug/fork mode which can cause hopm to exit silently
-- Noteworthy changes in version 1.1.6 (2019-04-21)
-o) Fixed issue with ssh banner scans where hopm would test connections only
- against the 'target_string' that's defined last in the scanner{} block
-o) Minimum supported OpenSSL version is 1.0.1f now
+* Fixed issue with ssh banner scans where hopm would test connections only
+ against the `target_string` that's defined last in the scanner{} block
+* Minimum supported OpenSSL version is 1.0.1f now
-- Noteworthy changes in version 1.1.5 (2018-10-14)
-o) The ':', and ',' nickname delimiters work again
-o) Fixed a bug where the hopm process couldn't be restarted under certain
- conditions
-o) The hopm process can now be restarted from the command line via "kill -HUP"
-o) Added --enable-efence switch to allow easy linking with the
- electric fence memory debugger library
-o) Implemented proper support to kill users with vulnerable SSH versions by
- version announcement. Patch provided by falsovsky (Pedro de Oliveira). See
- doc/reference.conf for more information.
-o) Minimum supported OpenSSL version is 1.0.1d now
+* The `:`, and `,` nickname delimiters work again
+* Fixed a bug where the hopm process couldn't be restarted under certain
+ conditions
+* The hopm process can now be restarted from the command line via `kill -HUP`
+* Added `--enable-efence` switch to allow easy linking with the
+ electric fence memory debugger library
+* Implemented proper support to kill users with vulnerable SSH versions by
+ version announcement. Patch provided by falsovsky (Pedro de Oliveira). See
+ `doc/reference.conf` for more information.
+* Minimum supported OpenSSL version is 1.0.1d now
-- Noteworthy changes in version 1.1.4 (2017-04-05)
-o) IPv6 blacklist support has been implemented
-o) The CHECK command now accepts IPv6 addresses
-o) The negative cache has been rewritten to use latest Net::Patricia
- C sources and does support IPv6 now
-o) Further code cleanups and optimizations
+* IPv6 blacklist support has been implemented
+* The `CHECK` command now accepts IPv6 addresses
+* The negative cache has been rewritten to use latest Net::Patricia C sources
+ and does support IPv6 now
-- Noteworthy changes in version 1.1.3 (2016-09-26)
-o) Allow inclusion of other configuration files in the main hopm.conf
- file. See doc/reference.conf for further information on how to use
- the new .include configuration directive.
+* Allow inclusion of other configuration files in the main `hopm.conf` file.
+ See `doc/reference.conf` for further information on how to use the new
+ `.include` configuration directive.
-- Noteworthy changes in version 1.1.2 (2016-05-15)
-o) Fixed archaic bug which can cause the scanner to either detect nothing or
- to detect everything and therefore even kill legit clients
+* Fixed archaic bug which can cause the scanner to either detect nothing or to
+ detect everything and therefore even kill legit clients
-- Noteworthy changes in version 1.1.1 (2016-01-03)
-o) Added 'command_queue_size', 'command_interval', and 'command_timeout',
- configuration directives to the options {} block. See doc/reference.conf
- for more information.
-o) Various updates to the reference.conf; added updated 'connregex' directives
- for ircd-hybrid in conjunction with user mode +F (far connect notices), and
- UnrealIRCd 4.0.0, which now uses a different format for connect notices
-o) Minor code cleanups
+* Added `command_queue_size`, `command_interval`, and `command_timeout`,
+ configuration directives to the options {} block. See `doc/reference.conf`
+ for more information.
+* Various updates to the `reference.conf`; added updated `connregex` directives
+ for ircd-hybrid in conjunction with user mode +F (far connect notices), and
+ UnrealIRCd 4.0.0, which now uses a different format for connect notices
-- Noteworthy changes in version 1.1.0 (2015-08-07)
-o) options::pidfile and options::scanlog can now be relative pathnames
-o) Due to security reasons the PROTOCOLS command has been removed again
+* `options::pidfile` and `options::scanlog` can now be relative pathnames
+* Due to security reasons the `PROTOCOLS` command has been removed again
-- Noteworthy changes in version 1.1.0beta1 (2015-07-02)
-o) Added HTTPS support for SSL/TLS-enabled HTTP proxies which seem to be
- used quite a lot on IRC nowadays. LibreSSL or OpenSSL 0.9.8o and above
- is required for this to work.
-o) Added new HTTPS and HTTPSPOST protocol configuration directives to the
- scanner {} block.
+* Added HTTPS support for SSL/TLS-enabled HTTP proxies which seem to be used
+ quite a lot on IRC nowadays. LibreSSL or OpenSSL 0.9.8o and above is required
+ for this to work.
+* Added new `HTTPS` and `HTTPSPOST` protocol configuration directives to the
+ scanner {} block
-- Noteworthy changes in version 1.0.8 (2015-06-25)
-o) Added options::reconnectinterval configuration option. See doc/reference.conf
- for more information.
-o) Added options::dns_timeout configuration option. See doc/reference.conf
- for more information.
-o) Further modernizations and cleanups to the build system
-o) HOPM now compiles with -fstack-protector-strong and -fstack-protector,
- respectively, depending on what the compiler supports
-o) Added --enable-assert switch to ./configure. assert() statements are now
- disabled by default and can be enabled with ./configure --enable-assert
-o) Added --enable-warnings switch to ./configure, which enables various
- compiler warnings if supported by the compiler
+* Added `options::reconnectinterval` configuration option. See `doc/reference.conf`
+ for more information.
+* Added `options::dns_timeout` configuration option. See `doc/reference.conf`
+ for more information.
+* Further modernizations and cleanups to the build system
+* HOPM now compiles with `-fstack-protector-strong` and `-fstack-protector`,
+ respectively, depending on what the compiler supports
+* Added `--enable-assert` switch to `./configure`. assert() statements are now
+ disabled by default and can be enabled with `./configure --enable-assert`
+* Added `--enable-warnings` switch to `./configure`, which enables various
+ compiler warnings if supported by the compiler
-- Noteworthy changes in version 1.0.7 (2015-06-06)
-o) HOPM can now detect Dreamboxes with default root passwords
-o) Fixed bug where the configuration parser would report syntax errors
- with invalid line numbers when there are multi-line C-style
- comments in the config file
-o) Minor code cleanups
+* HOPM can now detect Dreamboxes with default root passwords
+* Fixed bug where the configuration parser would report syntax errors with
+ invalid line numbers when there are multi-line C-style comments in the
+ config file
-- Noteworthy changes in version 1.0.6 (2015-05-27)
-o) HOPM now catches MikroTik HttpProxies
+* HOPM now catches MikroTik HttpProxies
-- Noteworthy changes in version 1.0.5 (2015-05-04)
-o) Fixed bug where HOPM couldn't connect to the server specified
- in the irc {} block on some OS
+* Fixed bug where HOPM couldn't connect to the server specified in the irc {}
+ block on some OS
-- Noteworthy changes in version 1.0.4 (2015-03-17)
-o) Log timestamp format is ISO8601 now
-o) Added 'protocols' command which dumps a list of configured scanners
- and their associated protocols/ports to a channel
-o) Code cleanups and performance improvements
+* Log timestamp format is ISO8601 now
+* Added `protocols` command which dumps a list of configured scanners and their
+ associated protocols/ports to a channel
-- Noteworthy changes in version 1.0.3 (2015-01-28)
-o) Fixed bug where HOPM wouldn't try re-connecting to the server in
- case the connection got lost
-o) Added irc::notice configuration option
+* Fixed bug where HOPM wouldn't try re-connecting to the server in case the
+ connection got lost
+* Added `irc::notice` configuration option
-- Noteworthy changes in version 1.0.2 (2015-01-12)
-o) Added options::negcache_rebuild configuration option
-o) Added basic IPv6 support allowing HOPM to bind and
- connect to IPv6 addresses
-o) Many code cleanups and optimizations
+* Added `options::negcache_rebuild` configuration option
+* Added basic IPv6 support allowing HOPM to bind and connect to IPv6 addresses
-- Noteworthy changes in version 1.0.1 (2015-01-06)
-o) Fixed build on OS X
-o) More code cleanups, no user-visible changes
+* Fixed build on OS X
-- Noteworthy changes in version 1.0.0 (2015-01-03)
-o) Minor stabilization and performance improvements
+* Minor stabilization and performance improvements
-- Noteworthy changes in version 1.0.0beta2 (2014-12-31)
-o) Added irc::readtimeout configuration option
-o) Many code cleanups and optimizations
-o) Worked towards IPv6 support
-o) Fixed reference.conf from causing syntax errors
-o) HOPM now uses poll() for I/O event notification instead of select()
+* Added `irc::readtimeout` configuration option
+* Worked towards IPv6 support
+* Fixed `reference.conf` from causing syntax errors
+* HOPM now uses poll() for I/O event notification instead of select()
-- Noteworthy changes in version 1.0.0beta1 (2014-12-25)
-########################################################################
-o) NOTE: this is the first release of the hybrid open proxy monitor (HOPM)
- fully based off the discontinued blitzed open proxy monitor (BOPM) 3.1.3
-########################################################################
-o) Modernized and cleaned up build system
-o) Modernized the example configuration file. Removed/updated blacklist entries.
-o) The configuration parser now does support time and size units
-o) The configuration parser now does support c++ style comments
-o) Fixed a memory leak in conjunction with manual scans
-o) Fixed weird behaviour in the command parser
-o) Code hardening. Replaced occurences of strcpy/strcat with strlcpy/strlcat, etc.
-o) Various code cleanups and optimizations
-o) The irc::away configuration option is now optional
+* **NOTE:** this is the first release of the hybrid open proxy monitor (HOPM)
+ fully based off the discontinued blitzed open proxy monitor (BOPM) 3.1.3
+* Modernized and cleaned up build system
+* Modernized the example configuration file. Removed/updated blacklist entries.
+* The configuration parser now does support time and size units
+* The configuration parser now does support c++ style comments
+* Fixed a memory leak in conjunction with manual scans
+* Fixed weird behaviour in the command parser
+* Code hardening. Replaced occurences of strcpy/strcat with strlcpy/strlcat, etc.
+* Various code cleanups and optimizations
+* The `irc::away` configuration option is now optional
--------------------------------------------------------------------------------
diff --git a/README b/README
index 6017b22..d4f7e8c 100644
--- a/README
+++ b/README
@@ -3,7 +3,7 @@ Introduction
HOPM (Hybrid Open Proxy Monitor) is an open-proxy monitoring bot designed to
monitor an individual server (all servers on the network have to run their own
-bot if the IRCD does not support `farconnect` user mode) with a local
+bot if the IRCD does not support the "far connect" user mode) with a local
operator {} block and monitor connections. When a client connects to a server,
HOPM will scan the connection for insecure proxies. Insecure proxies are
determined by attempting to connect the proxy back to another host (usually the
@@ -21,7 +21,7 @@ Requirements
* An IRCD, which presents connection notices in a format, which HOPM recognizes;
* A host with full connectivity for all the ports you wish to scan. i.e. is NOT
-transparently proxied -- many domestic Internet connections have port 80
+transparently proxied -- many domestic internet connections have port 80
transparently proxied and this produces completely unpredictable results,
sometimes as severe as 100% of clients being K:lined;
@@ -45,19 +45,19 @@ Compatibility
* Charybdis 3.4.x
HOPM is easily suitable for any other IRCD with little modification (`connregex`
-in hopm.conf). However, if an IRCD does not send IP addresses in a connection
+in `hopm.conf`). However, if an IRCD does not send IP addresses in a connection
notice, HOPM will not work.
Command-line options
====================
-`-c <name>` Configuration filename. By default, HOPM reads hopm.conf,
- `-c foo` will cause HOPM to read foo.conf. The primary use for
+`-c <name>` Configuration filename. By default, HOPM reads `hopm.conf`,
+ `-c foo` will cause HOPM to read `foo.conf`. The primary use for
this is to run multiple HOPM from one directory.
-`-d` Debug mode. HOPM will not fork and will write logs to stderr.
- Multiple -d increase debug level.
+`-d` Debug mode. HOPM will not fork and will write logs to `stderr`.
+ Multiple `-d` increase debug level.
Operator channel commands
@@ -65,23 +65,23 @@ Operator channel commands
`<bot> check <host> [scanner]` Manually scans host for insecure proxies and
outputs all errors. If scanner is not given,
- HOPM will scan on all scanners.NOTE: this will
- NOT add a kline if it finds a proxy.
+ HOPM will scan on all scanners. NOTE: this will
+ not add a kline if it finds a proxy.
`<bot> stats` Outputs scan stats, uptime and connection count.
`<bot> fdstat` Outputs info about file descriptors in use.
-Also, if several HOPM are present in one channel, they will all respond to !all,
+Also, if several HOPM are present in one channel, they will all respond to `!all`,
for example `!all stats`.
Rehashing HOPM
==============
-A /quote KILL on HOPM will cause the process to restart, rehashing the
+A `/quote KILL` on HOPM will cause the process to restart, rehashing the
configuration file and ending all queued scans. The same can be achieved
-with "kill -HUP" from the command line.
+with `kill -HUP` from the command line.
Logging
@@ -92,7 +92,7 @@ which by default can be found at `$HOME/hopm/var/log/hopm.log`. There is also a
configuration option, `scanlog`, to log all proxy scans initiated, which can be
quite useful if you receive an abuse report related to portscanning.
-These log files, especially the scan.log, can grow quite large. It is suggested
+These log files, especially the `scan.log`, can grow quite large. It is suggested
that you arrange for these files to be rotated periodically. You should send a
`USR1` signal to HOPM after moving its logfiles -- this will cause HOPM to
reopen those files.
@@ -101,6 +101,7 @@ reopen those files.
Contact information
===================
+* Home page: https://www.ircd-hybrid.org
* Bug reports: bugs@ircd-hybrid.org
* IRC: #ircd-coders on irc.ircd-hybrid.org
* GitHub: https://github.com/ircd-hybrid/hopm
diff --git a/config.guess b/config.guess
index 4cd9454..0fc11ed 100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2019 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2019-04-28'
+timestamp='2020-11-07'
# 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
@@ -32,7 +32,7 @@ timestamp='2019-04-28'
# Please send patches to <config-patches@gnu.org>.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
Usage: $0 [OPTION]
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2020 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."
@@ -99,9 +99,11 @@ tmp=
trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
: "${TMPDIR=/tmp}"
# shellcheck disable=SC2039
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
@@ -129,10 +131,10 @@ if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
+UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
+UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
+UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
@@ -148,17 +150,15 @@ Linux|GNU|GNU/*)
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
+ #include <stdarg.h>
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #else
LIBC=gnu
#endif
+ #endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
-
- # If ldd exists, use it to detect musl libc.
- if command -v ldd >/dev/null && \
- ldd --version 2>&1 | grep -q ^musl
- then
- LIBC=musl
- fi
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
;;
esac
@@ -177,19 +177,20 @@ 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=`(uname -p 2>/dev/null || \
+ UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
"/sbin/$sysctl" 2>/dev/null || \
"/usr/sbin/$sysctl" 2>/dev/null || \
- echo unknown)`
+ echo unknown))
case "$UNAME_MACHINE_ARCH" in
+ aarch64eb) machine=aarch64_be-unknown ;;
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'`
+ 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 ;;
@@ -220,7 +221,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
case "$UNAME_MACHINE_ARCH" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
;;
esac
# The OS release
@@ -233,7 +234,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
release='-gnu'
;;
*)
- release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+ release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
@@ -242,15 +243,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
exit ;;
*:LibertyBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
exit ;;
*:MidnightBSD:*:*)
@@ -262,6 +263,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:SolidBSD:*:*)
echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+ exit ;;
macppc:MirBSD:*:*)
echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
@@ -271,26 +275,29 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:Sortix:*:*)
echo "$UNAME_MACHINE"-unknown-sortix
exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
*:Redox:*:*)
echo "$UNAME_MACHINE"-unknown-redox
exit ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ 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 ;;
@@ -328,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# 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
@@ -362,7 +369,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ if test "$( (/bin/universe) 2>/dev/null)" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
@@ -375,17 +382,17 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo sparc-icl-nx6
exit ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
+ case $(/usr/bin/uname -p) in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+ echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+ echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
echo i386-pc-auroraux"$UNAME_RELEASE"
@@ -396,7 +403,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# 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 test "$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) | \
grep IS_64BIT_ARCH >/dev/null
@@ -404,30 +411,30 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
SUN_ARCH=x86_64
fi
fi
- echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
+ case "$(/usr/bin/arch -k)" in
Series*|S4*)
- UNAME_RELEASE=`uname -v`
+ UNAME_RELEASE=$(uname -v)
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
+ echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
+ case "$(/bin/arch)" in
sun3)
echo m68k-sun-sunos"$UNAME_RELEASE"
;;
@@ -507,8 +514,8 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
- dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+ dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
+ SYSTEM_NAME=$("$dummy" "$dummyarg") &&
{ echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
@@ -535,11 +542,11 @@ EOF
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
- [ "$TARGET_BINARY_INTERFACE"x = x ]
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
then
echo m88k-dg-dgux"$UNAME_RELEASE"
else
@@ -563,17 +570,17 @@ EOF
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
+ echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
exit ;;
ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if test -x /usr/bin/oslevel ; then
+ IBM_REV=$(/usr/bin/oslevel)
else
IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
@@ -593,7 +600,7 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
then
echo "$SYSTEM_NAME"
else
@@ -606,15 +613,15 @@ EOF
fi
exit ;;
*:AIX:*:[4567])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
- awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ if test -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
@@ -642,14 +649,14 @@ EOF
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
case "$UNAME_MACHINE" in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
+ sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
case "$sc_cpu_version" in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
@@ -661,7 +668,7 @@ EOF
esac ;;
esac
fi
- if [ "$HP_ARCH" = "" ]; then
+ if test "$HP_ARCH" = ""; then
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -696,11 +703,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 test "$HP_ARCH" = hppa2.0w
then
set_cc_for_build
@@ -724,7 +731,7 @@ EOF
echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
@@ -754,7 +761,7 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
@@ -774,7 +781,7 @@ EOF
echo hppa1.0-hp-osf
exit ;;
i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
+ if test -x /usr/sbin/sysversion ; then
echo "$UNAME_MACHINE"-unknown-osf1mk
else
echo "$UNAME_MACHINE"-unknown-osf1
@@ -823,14 +830,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_REL=`echo "$UNAME_RELEASE" | 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:*:*)
@@ -843,25 +850,25 @@ EOF
echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
arm:FreeBSD:*:*)
- UNAME_PROCESSOR=`uname -p`
+ UNAME_PROCESSOR=$(uname -p)
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
else
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
fi
exit ;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
case "$UNAME_PROCESSOR" in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
exit ;;
i*:CYGWIN*:*)
echo "$UNAME_MACHINE"-pc-cygwin
@@ -897,15 +904,15 @@ EOF
echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
*:GNU:*:*)
# the GNU system
- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`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 "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
+ echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
exit ;;
*:Minix:*:*)
echo "$UNAME_MACHINE"-unknown-minix
@@ -918,7 +925,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -1027,7 +1034,7 @@ EOF
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`"
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
@@ -1047,7 +1054,7 @@ EOF
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
*) echo hppa-unknown-linux-"$LIBC" ;;
@@ -1087,7 +1094,17 @@ EOF
echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI="$LIBC"x32
+ fi
+ fi
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
exit ;;
xtensa*:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1127,7 +1144,7 @@ EOF
echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
i*86:*:4.*:*)
- UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+ UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
@@ -1136,7 +1153,7 @@ EOF
exit ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
+ case $(/bin/uname -X | grep "^Machine") in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
@@ -1145,10 +1162,10 @@ EOF
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
@@ -1198,7 +1215,7 @@ EOF
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1209,7 +1226,7 @@ EOF
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1242,7 +1259,7 @@ EOF
exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
@@ -1276,7 +1293,7 @@ EOF
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
+ if test -d /usr/nec; then
echo mips-nec-sysv"$UNAME_RELEASE"
else
echo mips-unknown-sysv"$UNAME_RELEASE"
@@ -1324,44 +1341,48 @@ EOF
*:Rhapsody:*:*)
echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
+ arm64:Darwin:*:*)
+ echo aarch64-apple-darwin"$UNAME_RELEASE"
+ exit ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=$(uname -p)
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
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
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if test "$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
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
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
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
+ UNAME_PROCESSOR=$(uname -p)
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
@@ -1429,10 +1450,10 @@ EOF
echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+ echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1442,7 +1463,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
@@ -1500,7 +1521,7 @@ main ()
#define __ARCHITECTURE__ "m68k"
#endif
int version;
- version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+ 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
@@ -1592,7 +1613,7 @@ main ()
}
EOF
-$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` &&
+$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.
@@ -1620,6 +1641,12 @@ copies of config.guess and config.sub with the latest versions from:
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+EOF
+
+year=$(echo $timestamp | sed 's,-.*,,')
+# shellcheck disable=SC2003
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1627,26 +1654,27 @@ provide the necessary information to handle your system.
config.guess timestamp = $timestamp
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X = $( (/bin/uname -X) 2>/dev/null)
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+hostinfo = $( (hostinfo) 2>/dev/null)
+/bin/universe = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
UNAME_MACHINE = "$UNAME_MACHINE"
UNAME_RELEASE = "$UNAME_RELEASE"
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
diff --git a/config.sub b/config.sub
index f53af5a..c874b7a 100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2019 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2019-01-05'
+timestamp='2020-11-07'
# 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
@@ -50,7 +50,7 @@ timestamp='2019-01-05'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2019 Free Software Foundation, Inc.
+Copyright 1992-2020 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."
@@ -124,28 +124,27 @@ case $1 in
;;
*-*-*-*)
basic_machine=$field1-$field2
- os=$field3-$field4
+ basic_os=$field3-$field4
;;
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
- | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
basic_machine=$field1
- os=$maybe_os
+ basic_os=$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
- os=linux-android
+ basic_os=linux-android
;;
*)
basic_machine=$field1-$field2
- os=$field3
+ basic_os=$field3
;;
esac
;;
@@ -154,7 +153,7 @@ case $1 in
case $field1-$field2 in
decstation-3100)
basic_machine=mips-dec
- os=
+ basic_os=
;;
*-*)
# Second component is usually, but not always the OS
@@ -162,7 +161,7 @@ case $1 in
# Prevent following clause from handling this valid os
sun*os*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
@@ -175,11 +174,11 @@ case $1 in
| microblaze* | sim | cisco \
| oki | wec | wrs | winbond)
basic_machine=$field1-$field2
- os=
+ basic_os=
;;
*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
esac
;;
@@ -191,450 +190,451 @@ case $1 in
case $field1 in
386bsd)
basic_machine=i386-pc
- os=bsd
+ basic_os=bsd
;;
a29khif)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
adobe68k)
basic_machine=m68010-adobe
- os=scout
+ basic_os=scout
;;
alliant)
basic_machine=fx80-alliant
- os=
+ basic_os=
;;
altos | altos3068)
basic_machine=m68k-altos
- os=
+ basic_os=
;;
am29k)
basic_machine=a29k-none
- os=bsd
+ basic_os=bsd
;;
amdahl)
basic_machine=580-amdahl
- os=sysv
+ basic_os=sysv
;;
amiga)
basic_machine=m68k-unknown
- os=
+ basic_os=
;;
amigaos | amigados)
basic_machine=m68k-unknown
- os=amigaos
+ basic_os=amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
- os=sysv4
+ basic_os=sysv4
;;
apollo68)
basic_machine=m68k-apollo
- os=sysv
+ basic_os=sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
- os=bsd
+ basic_os=bsd
;;
aros)
basic_machine=i386-pc
- os=aros
+ basic_os=aros
;;
aux)
basic_machine=m68k-apple
- os=aux
+ basic_os=aux
;;
balance)
basic_machine=ns32k-sequent
- os=dynix
+ basic_os=dynix
;;
blackfin)
basic_machine=bfin-unknown
- os=linux
+ basic_os=linux
;;
cegcc)
basic_machine=arm-unknown
- os=cegcc
+ basic_os=cegcc
;;
convex-c1)
basic_machine=c1-convex
- os=bsd
+ basic_os=bsd
;;
convex-c2)
basic_machine=c2-convex
- os=bsd
+ basic_os=bsd
;;
convex-c32)
basic_machine=c32-convex
- os=bsd
+ basic_os=bsd
;;
convex-c34)
basic_machine=c34-convex
- os=bsd
+ basic_os=bsd
;;
convex-c38)
basic_machine=c38-convex
- os=bsd
+ basic_os=bsd
;;
cray)
basic_machine=j90-cray
- os=unicos
+ basic_os=unicos
;;
crds | unos)
basic_machine=m68k-crds
- os=
+ basic_os=
;;
da30)
basic_machine=m68k-da30
- os=
+ basic_os=
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
- os=
+ basic_os=
;;
delta88)
basic_machine=m88k-motorola
- os=sysv3
+ basic_os=sysv3
;;
dicos)
basic_machine=i686-pc
- os=dicos
+ basic_os=dicos
;;
djgpp)
basic_machine=i586-pc
- os=msdosdjgpp
+ basic_os=msdosdjgpp
;;
ebmon29k)
basic_machine=a29k-amd
- os=ebmon
+ basic_os=ebmon
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
- os=ose
+ basic_os=ose
;;
gmicro)
basic_machine=tron-gmicro
- os=sysv
+ basic_os=sysv
;;
go32)
basic_machine=i386-pc
- os=go32
+ basic_os=go32
;;
h8300hms)
basic_machine=h8300-hitachi
- os=hms
+ basic_os=hms
;;
h8300xray)
basic_machine=h8300-hitachi
- os=xray
+ basic_os=xray
;;
h8500hms)
basic_machine=h8500-hitachi
- os=hms
+ basic_os=hms
;;
harris)
basic_machine=m88k-harris
- os=sysv3
+ basic_os=sysv3
;;
- hp300)
+ hp300 | hp300hpux)
basic_machine=m68k-hp
+ basic_os=hpux
;;
hp300bsd)
basic_machine=m68k-hp
- os=bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=hpux
+ basic_os=bsd
;;
hppaosf)
basic_machine=hppa1.1-hp
- os=osf
+ basic_os=osf
;;
hppro)
basic_machine=hppa1.1-hp
- os=proelf
+ basic_os=proelf
;;
i386mach)
basic_machine=i386-mach
- os=mach
- ;;
- vsta)
- basic_machine=i386-pc
- os=vsta
+ basic_os=mach
;;
isi68 | isi)
basic_machine=m68k-isi
- os=sysv
+ basic_os=sysv
;;
m68knommu)
basic_machine=m68k-unknown
- os=linux
+ basic_os=linux
;;
magnum | m3230)
basic_machine=mips-mips
- os=sysv
+ basic_os=sysv
;;
merlin)
basic_machine=ns32k-utek
- os=sysv
+ basic_os=sysv
;;
mingw64)
basic_machine=x86_64-pc
- os=mingw64
+ basic_os=mingw64
;;
mingw32)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
mingw32ce)
basic_machine=arm-unknown
- os=mingw32ce
+ basic_os=mingw32ce
;;
monitor)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
morphos)
basic_machine=powerpc-unknown
- os=morphos
+ basic_os=morphos
;;
moxiebox)
basic_machine=moxie-unknown
- os=moxiebox
+ basic_os=moxiebox
;;
msdos)
basic_machine=i386-pc
- os=msdos
+ basic_os=msdos
;;
msys)
basic_machine=i686-pc
- os=msys
+ basic_os=msys
;;
mvs)
basic_machine=i370-ibm
- os=mvs
+ basic_os=mvs
;;
nacl)
basic_machine=le32-unknown
- os=nacl
+ basic_os=nacl
;;
ncr3000)
basic_machine=i486-ncr
- os=sysv4
+ basic_os=sysv4
;;
netbsd386)
basic_machine=i386-pc
- os=netbsd
+ basic_os=netbsd
;;
netwinder)
basic_machine=armv4l-rebel
- os=linux
+ basic_os=linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
- os=newsos
+ basic_os=newsos
;;
news1000)
basic_machine=m68030-sony
- os=newsos
+ basic_os=newsos
;;
necv70)
basic_machine=v70-nec
- os=sysv
+ basic_os=sysv
;;
nh3000)
basic_machine=m68k-harris
- os=cxux
+ basic_os=cxux
;;
nh[45]000)
basic_machine=m88k-harris
- os=cxux
+ basic_os=cxux
;;
nindy960)
basic_machine=i960-intel
- os=nindy
+ basic_os=nindy
;;
mon960)
basic_machine=i960-intel
- os=mon960
+ basic_os=mon960
;;
nonstopux)
basic_machine=mips-compaq
- os=nonstopux
+ basic_os=nonstopux
;;
os400)
basic_machine=powerpc-ibm
- os=os400
+ basic_os=os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
- os=ose
+ basic_os=ose
;;
os68k)
basic_machine=m68k-none
- os=os68k
+ basic_os=os68k
;;
paragon)
basic_machine=i860-intel
- os=osf
+ basic_os=osf
;;
parisc)
basic_machine=hppa-unknown
- os=linux
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
;;
pw32)
basic_machine=i586-unknown
- os=pw32
+ basic_os=pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
- os=rdos
+ basic_os=rdos
;;
rdos32)
basic_machine=i386-pc
- os=rdos
+ basic_os=rdos
;;
rom68k)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
sa29200)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
sei)
basic_machine=mips-sei
- os=seiux
+ basic_os=seiux
;;
sequent)
basic_machine=i386-sequent
- os=
+ basic_os=
;;
sps7)
basic_machine=m68k-bull
- os=sysv2
+ basic_os=sysv2
;;
st2000)
basic_machine=m68k-tandem
- os=
+ basic_os=
;;
stratus)
basic_machine=i860-stratus
- os=sysv4
+ basic_os=sysv4
;;
sun2)
basic_machine=m68000-sun
- os=
+ basic_os=
;;
sun2os3)
basic_machine=m68000-sun
- os=sunos3
+ basic_os=sunos3
;;
sun2os4)
basic_machine=m68000-sun
- os=sunos4
+ basic_os=sunos4
;;
sun3)
basic_machine=m68k-sun
- os=
+ basic_os=
;;
sun3os3)
basic_machine=m68k-sun
- os=sunos3
+ basic_os=sunos3
;;
sun3os4)
basic_machine=m68k-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4)
basic_machine=sparc-sun
- os=
+ basic_os=
;;
sun4os3)
basic_machine=sparc-sun
- os=sunos3
+ basic_os=sunos3
;;
sun4os4)
basic_machine=sparc-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4sol2)
basic_machine=sparc-sun
- os=solaris2
+ basic_os=solaris2
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
- os=
+ basic_os=
;;
sv1)
basic_machine=sv1-cray
- os=unicos
+ basic_os=unicos
;;
symmetry)
basic_machine=i386-sequent
- os=dynix
+ basic_os=dynix
;;
t3e)
basic_machine=alphaev5-cray
- os=unicos
+ basic_os=unicos
;;
t90)
basic_machine=t90-cray
- os=unicos
+ basic_os=unicos
;;
toad1)
basic_machine=pdp10-xkl
- os=tops20
+ basic_os=tops20
;;
tpf)
basic_machine=s390x-ibm
- os=tpf
+ basic_os=tpf
;;
udi29k)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
ultra3)
basic_machine=a29k-nyu
- os=sym1
+ basic_os=sym1
;;
v810 | necv810)
basic_machine=v810-nec
- os=none
+ basic_os=none
;;
vaxv)
basic_machine=vax-dec
- os=sysv
+ basic_os=sysv
;;
vms)
basic_machine=vax-dec
- os=vms
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
;;
vxworks960)
basic_machine=i960-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks68)
basic_machine=m68k-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
- os=vxworks
+ basic_os=vxworks
;;
xbox)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
ymp)
basic_machine=ymp-cray
- os=unicos
+ basic_os=unicos
;;
*)
basic_machine=$1
- os=
+ basic_os=
;;
esac
;;
@@ -686,17 +686,17 @@ case $basic_machine in
bluegene*)
cpu=powerpc
vendor=ibm
- os=cnk
+ basic_os=cnk
;;
decsystem10* | dec10*)
cpu=pdp10
vendor=dec
- os=tops10
+ basic_os=tops10
;;
decsystem20* | dec20*)
cpu=pdp10
vendor=dec
- os=tops20
+ basic_os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
@@ -706,7 +706,7 @@ case $basic_machine in
dpx2*)
cpu=m68k
vendor=bull
- os=sysv3
+ basic_os=sysv3
;;
encore | umax | mmax)
cpu=ns32k
@@ -715,7 +715,7 @@ case $basic_machine in
elxsi)
cpu=elxsi
vendor=elxsi
- os=${os:-bsd}
+ basic_os=${basic_os:-bsd}
;;
fx2800)
cpu=i860
@@ -728,7 +728,7 @@ case $basic_machine in
h3050r* | hiux*)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
cpu=hppa1.0
@@ -769,38 +769,38 @@ case $basic_machine in
vendor=hp
;;
i*86v32)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv32
+ basic_os=sysv32
;;
i*86v4*)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv4
+ basic_os=sysv4
;;
i*86v)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv
+ basic_os=sysv
;;
i*86sol2)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=solaris2
+ basic_os=solaris2
;;
j90 | j90-cray)
cpu=j90
vendor=cray
- os=${os:-unicos}
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
cpu=mips
vendor=sgi
- case $os in
+ case $basic_os in
irix*)
;;
*)
- os=irix4
+ basic_os=irix4
;;
esac
;;
@@ -811,26 +811,26 @@ case $basic_machine in
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
- os=mint
+ basic_os=mint
;;
news-3600 | risc-news)
cpu=mips
vendor=sony
- os=newsos
+ basic_os=newsos
;;
next | m*-next)
cpu=m68k
vendor=next
- case $os in
+ case $basic_os in
openstep*)
;;
nextstep*)
;;
ns2*)
- os=nextstep2
+ basic_os=nextstep2
;;
*)
- os=nextstep3
+ basic_os=nextstep3
;;
esac
;;
@@ -841,12 +841,12 @@ case $basic_machine in
op50n-* | op60c-*)
cpu=hppa1.1
vendor=oki
- os=proelf
+ basic_os=proelf
;;
pa-hitachi)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
pbd)
cpu=sparc
@@ -883,12 +883,12 @@ case $basic_machine in
sde)
cpu=mipsisa32
vendor=sde
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
simso-wrs)
cpu=sparclite
vendor=wrs
- os=vxworks
+ basic_os=vxworks
;;
tower | tower-32)
cpu=m68k
@@ -905,7 +905,7 @@ case $basic_machine in
w89k-*)
cpu=hppa1.1
vendor=winbond
- os=proelf
+ basic_os=proelf
;;
none)
cpu=none
@@ -917,7 +917,7 @@ case $basic_machine in
;;
leon-*|leon[3-9]-*)
cpu=sparc
- vendor=`echo "$basic_machine" | sed 's/-.*//'`
+ vendor=$(echo "$basic_machine" | sed 's/-.*//')
;;
*-*)
@@ -958,11 +958,11 @@ case $cpu-$vendor in
# some cases the only manufacturer, in others, it is the most popular.
craynv-unknown)
vendor=cray
- os=${os:-unicosmp}
+ basic_os=${basic_os:-unicosmp}
;;
c90-unknown | c90-cray)
vendor=cray
- os=${os:-unicos}
+ basic_os=${Basic_os:-unicos}
;;
fx80-unknown)
vendor=alliant
@@ -1006,7 +1006,7 @@ case $cpu-$vendor in
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
- os=${os:-bosx}
+ basic_os=${basic_os:-bosx}
;;
# Here we normalize CPU types irrespective of the vendor
@@ -1015,7 +1015,7 @@ case $cpu-$vendor in
;;
blackfin-*)
cpu=bfin
- os=linux
+ basic_os=linux
;;
c54x-*)
cpu=tic54x
@@ -1028,7 +1028,7 @@ case $cpu-$vendor in
;;
e500v[12]-*)
cpu=powerpc
- os=$os"spe"
+ basic_os=${basic_os}"spe"
;;
mips3*-*)
cpu=mips64
@@ -1038,7 +1038,7 @@ case $cpu-$vendor in
;;
m68knommu-*)
cpu=m68k
- os=linux
+ basic_os=linux
;;
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
@@ -1048,7 +1048,7 @@ case $cpu-$vendor in
;;
parisc-*)
cpu=hppa
- os=linux
+ basic_os=linux
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
@@ -1084,7 +1084,7 @@ case $cpu-$vendor in
cpu=mipsisa64sb1el
;;
sh5e[lb]-*)
- cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+ cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
;;
spur-*)
cpu=spur
@@ -1102,13 +1102,16 @@ case $cpu-$vendor in
cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
- cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+ cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
+ ;;
+ arm64-*)
+ cpu=aarch64
;;
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
crisv32-* | etraxfs*-*)
cpu=crisv32
@@ -1119,7 +1122,7 @@ case $cpu-$vendor in
vendor=axis
;;
crx-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
neo-tandem)
cpu=neo
@@ -1141,16 +1144,12 @@ case $cpu-$vendor in
cpu=nsx
vendor=tandem
;;
- s390-*)
- cpu=s390
- vendor=ibm
- ;;
- s390x-*)
- cpu=s390x
- vendor=ibm
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
tile*-*)
- os=${os:-linux-gnu}
+ basic_os=${basic_os:-linux-gnu}
;;
*)
@@ -1167,12 +1166,12 @@ case $cpu-$vendor in
| am33_2.0 \
| amdgcn \
| arc | arceb \
- | arm | arm[lb]e | arme[lb] | armv* \
+ | arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
| ba \
| be32 | be64 \
- | bfin | bs2000 \
+ | bfin | bpf | bs2000 \
| c[123]* | c30 | [cjt]90 | c4x \
| c8051 | clipper | craynv | csky | cydra \
| d10v | d30v | dlx | dsp16xx \
@@ -1232,6 +1231,7 @@ case $cpu-$vendor in
| pyramid \
| riscv | riscv32 | riscv64 \
| rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
| score \
| sh | shl \
| sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
@@ -1278,8 +1278,47 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x$os != x ]
+if test x$basic_os != x
then
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
+ ;;
+ os2-emx)
+ kernel=os2
+ os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto|qnx|')
+ ;;
+ linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|linux|gnu|')
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
case $os in
# First match some system type aliases that might get confused
# with valid system types.
@@ -1291,7 +1330,7 @@ case $os in
os=cnk
;;
solaris1 | solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ os=$(echo $os | sed -e 's|solaris1|sunos4|')
;;
solaris)
os=solaris2
@@ -1299,9 +1338,6 @@ case $os in
unixware*)
os=sysv4.2uw
;;
- gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
# es1800 is here to avoid being matched by es* (a different OS)
es1800*)
os=ose
@@ -1323,12 +1359,9 @@ case $os in
os=sco3.2v4
;;
sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+ os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
;;
- sco3.2v[4-9]* | sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
- ;;
- scout)
+ sco*v* | scout)
# Don't match below
;;
sco*)
@@ -1337,78 +1370,26 @@ case $os in
psos*)
os=psos
;;
- # Now accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST end in a * to match a version number.
- # sysv* is not here because it comes later, after sysvr4.
- gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
- | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
- | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
- | sym* | kopensolaris* | plan9* \
- | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- | aos* | aros* | cloudabi* | sortix* \
- | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
- | knetbsd* | mirbsd* | netbsd* \
- | 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* | hcos* \
- | chorusrdb* | cegcc* | glidix* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
- | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
- | linux-newlib* | linux-musl* | linux-uclibc* \
- | uxpv* | beos* | mpeix* | udk* | moxiebox* \
- | interix* | uwin* | mks* | rhapsody* | darwin* \
- | openstep* | oskit* | conix* | pw32* | nonstopux* \
- | storm-chaos* | tops10* | tenex* | tops20* | its* \
- | os2* | vos* | palmos* | uclinux* | nucleus* \
- | morphos* | superux* | rtmk* | windiss* \
- | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
- | skyos* | haiku* | rdos* | toppers* | drops* | es* \
- | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
qnx*)
- case $cpu in
- x86 | i*86)
- ;;
- *)
- os=nto-$os
- ;;
- esac
+ os=qnx
;;
hiux*)
os=hiuxwe2
;;
- nto-qnx*)
- ;;
- nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- sim | xray | os68k* | v88r* \
- | windows* | osx | abug | netware* | os9* \
- | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
- ;;
- linux-dietlibc)
- os=linux-dietlibc
- ;;
- linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
lynx*178)
os=lynxos178
;;
lynx*5)
os=lynxos5
;;
+ lynxos*)
+ # don't get caught up in next wildcard
+ ;;
lynx*)
os=lynxos
;;
- mac*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
+ mac[0-9]*)
+ os=$(echo "$os" | sed -e 's|mac|macos|')
;;
opened*)
os=openedition
@@ -1417,10 +1398,10 @@ case $os in
os=os400
;;
sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
;;
sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
;;
wince*)
os=wince
@@ -1452,12 +1433,9 @@ case $os in
ns2)
os=nextstep2
;;
- nsk*)
- os=nsk
- ;;
# Preserve the version number of sinix5.
sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ os=$(echo $os | sed -e 's|sinix|sysv|')
;;
sinix*)
os=sysv4
@@ -1480,18 +1458,12 @@ case $os in
sysvr4)
os=sysv4
;;
- # This must come after sysvr4.
- sysv*)
- ;;
ose*)
os=ose
;;
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
;;
- zvmoe)
- os=zvmoe
- ;;
dicos*)
os=dicos
;;
@@ -1508,19 +1480,11 @@ case $os in
;;
esac
;;
- nacl*)
- ;;
- ios)
- ;;
- none)
- ;;
- *-eabi)
- ;;
*)
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
- exit 1
+ # No normalization, but not necessarily accepted, that comes below.
;;
esac
+
else
# Here we handle the default operating systems that come with various machines.
@@ -1533,6 +1497,7 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
+kernel=
case $cpu-$vendor in
score-*)
os=elf
@@ -1544,7 +1509,8 @@ case $cpu-$vendor in
os=riscix1.2
;;
arm*-rebel)
- os=linux
+ kernel=linux
+ os=gnu
;;
arm*-semi)
os=aout
@@ -1710,84 +1676,173 @@ case $cpu-$vendor in
os=none
;;
esac
+
fi
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-abi", so those need to count as OSes.
+ musl* | newlib* | uclibc*)
+ ;;
+ # Likewise for "kernel-libc"
+ eabi | eabihf | gnueabi | gnueabihf)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
case $vendor in
unknown)
- case $os in
- riscix*)
+ case $cpu-$os in
+ *-riscix*)
vendor=acorn
;;
- sunos*)
+ *-sunos*)
vendor=sun
;;
- cnk*|-aix*)
+ *-cnk* | *-aix*)
vendor=ibm
;;
- beos*)
+ *-beos*)
vendor=be
;;
- hpux*)
+ *-hpux*)
vendor=hp
;;
- mpeix*)
+ *-mpeix*)
vendor=hp
;;
- hiux*)
+ *-hiux*)
vendor=hitachi
;;
- unos*)
+ *-unos*)
vendor=crds
;;
- dgux*)
+ *-dgux*)
vendor=dg
;;
- luna*)
+ *-luna*)
vendor=omron
;;
- genix*)
+ *-genix*)
vendor=ns
;;
- clix*)
+ *-clix*)
vendor=intergraph
;;
- mvs* | opened*)
+ *-mvs* | *-opened*)
+ vendor=ibm
+ ;;
+ *-os400*)
vendor=ibm
;;
- os400*)
+ s390-* | s390x-*)
vendor=ibm
;;
- ptx*)
+ *-ptx*)
vendor=sequent
;;
- tpf*)
+ *-tpf*)
vendor=ibm
;;
- vxsim* | vxworks* | windiss*)
+ *-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
- aux*)
+ *-aux*)
vendor=apple
;;
- hms*)
+ *-hms*)
vendor=hitachi
;;
- mpw* | macos*)
+ *-mpw* | *-macos*)
vendor=apple
;;
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
- vos*)
+ *-vos*)
vendor=stratus
;;
esac
;;
esac
-echo "$cpu-$vendor-$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit
# Local variables:
diff --git a/configure b/configure
index d6c172d..1f30926 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.ac Id: configure.ac 9327 2020-03-29 13:15:12Z michael .
+# From configure.ac Id: configure.ac 9677 2020-10-24 11:10:13Z michael .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for hopm 1.1.8.
+# Generated by GNU Autoconf 2.69 for hopm 1.1.9.
#
# Report bugs to <bugs@ircd-hybrid.org>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='hopm'
PACKAGE_TARNAME='hopm'
-PACKAGE_VERSION='1.1.8'
-PACKAGE_STRING='hopm 1.1.8'
+PACKAGE_VERSION='1.1.9'
+PACKAGE_STRING='hopm 1.1.9'
PACKAGE_BUGREPORT='bugs@ircd-hybrid.org'
PACKAGE_URL=''
@@ -1341,7 +1341,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 hopm 1.1.8 to adapt to many kinds of systems.
+\`configure' configures hopm 1.1.9 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1412,7 +1412,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of hopm 1.1.8:";;
+ short | recursive ) echo "Configuration of hopm 1.1.9:";;
esac
cat <<\_ACEOF
@@ -1537,7 +1537,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-hopm configure 1.1.8
+hopm configure 1.1.9
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1815,7 +1815,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 hopm $as_me 1.1.8, which was
+It was created by hopm $as_me 1.1.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2678,7 +2678,7 @@ fi
# Define the identity of the package.
PACKAGE='hopm'
- VERSION='1.1.8'
+ VERSION='1.1.9'
cat >>confdefs.h <<_ACEOF
@@ -5691,7 +5691,7 @@ esac
fi
: ${AR=ar}
-: ${AR_FLAGS=cru}
+: ${AR_FLAGS=cr}
@@ -7412,8 +7412,8 @@ int forced_loaded() { return 2;}
_LT_EOF
echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5
- echo "$AR cru libconftest.a conftest.o" >&5
- $AR cru libconftest.a conftest.o 2>&5
+ echo "$AR cr libconftest.a conftest.o" >&5
+ $AR cr libconftest.a conftest.o 2>&5
echo "$RANLIB libconftest.a" >&5
$RANLIB libconftest.a 2>&5
cat > conftest.c << _LT_EOF
@@ -12668,8 +12668,8 @@ $as_echo "disabled" >&6; }
fi
if test "$cf_enable_openssl" != "no"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL" >&5
-$as_echo_n "checking for LibreSSL... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LibreSSL, or OpenSSL 1.1.1 and above" >&5
+$as_echo_n "checking for LibreSSL, or OpenSSL 1.1.1 and above... " >&6; }
if test "$cross_compiling" = yes; then :
cf_openssl_version_ok=no
else
@@ -15480,7 +15480,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 hopm $as_me 1.1.8, which was
+This file was extended by hopm $as_me 1.1.9, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15546,7 +15546,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="\\
-hopm config.status 1.1.8
+hopm config.status 1.1.9
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index ded84eb..f742140 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,11 +3,11 @@ dnl Process this file with autoconf to produce a configure script.
AC_REVISION([$Id$])
AC_PREREQ(2.69)
-AC_INIT([hopm], [1.1.8], [bugs@ircd-hybrid.org])
-AM_INIT_AUTOMAKE(1.15)
+AC_INIT([hopm], [1.1.9], [bugs@ircd-hybrid.org])
+AM_INIT_AUTOMAKE(1.16.1)
AM_MAINTAINER_MODE
AC_CONFIG_SRCDIR(src/opercmd.h)
-AC_CONFIG_HEADER(src/setup.h)
+AC_CONFIG_HEADERS(src/setup.h)
AC_CONFIG_MACRO_DIR([m4])
AC_PREFIX_DEFAULT([\${HOME}/hopm])
diff --git a/doc/reference.conf b/doc/reference.conf
index 69eb210..65a1b6c 100644
--- a/doc/reference.conf
+++ b/doc/reference.conf
@@ -101,12 +101,12 @@ irc {
* IP address to bind to for the IRC connection. You only need to
* use this if you wish HOPM to use a particular interface
* (virtual host, IP alias, ...) when connecting to the IRC server.
- * There is another "vhost" setting in the scan {} block below for
+ * There is another "bind" setting in the scan {} block below for
* the actual portscans. Note that this directive expects an IP address,
* not a hostname. Please leave this commented out if you do not
* understand what it does, as most people don't need it.
*/
-# vhost = "0.0.0.0";
+# bind = "0.0.0.0";
/*
* Nickname for HOPM to use.
@@ -148,6 +148,23 @@ irc {
tls = no;
/*
+ * rsa_private_key_file: the path to the file containing the RSA key.
+ *
+ * Once the RSA key is generated, it is highly recommended to lock down
+ * its file permissions:
+ *
+ * chown <ircd-user>.<ircd.group> rsa.key
+ * chmod 0600 rsa.key
+ */
+# rsa_private_key_file = "etc/rsa.key";
+
+ /*
+ * tls_certificate_file: the path to the file containing our
+ * TLS certificate for encrypted client connection.
+ */
+# tls_certificate_file = "etc/cert.pem";
+
+ /*
* Checks if the host name defined above matches the identity in the
* certificate.
*/
@@ -350,7 +367,7 @@ irc {
*/
- /* dnsbl.dronebl.org - http://dronebl.org */
+ /* dnsbl.dronebl.org - https://dronebl.org */
# blacklist {
/* The DNS name of the blacklist */
# name = "dnsbl.dronebl.org";
@@ -382,7 +399,7 @@ irc {
/*
* The actual values returned by the dnsbl.dronebl.org blacklist as
- * documented at http://dronebl.org/docs/howtouse
+ * documented at https://dronebl.org/docs/howtouse
*/
# reply {
# 2 = "Sample data used for heuristical analysis";
@@ -400,7 +417,8 @@ irc {
# 15 = "Compromised router / gateway";
# 16 = "Autorooting worms";
# 17 = "Automatically determined botnet IPs (experimental)";
-# 18 = "DNS/MX type hostname detected on IRC";
+# 18 = "Possibly compromised DNS/MX type hostname detected on IRC";
+# 19 = "Abused VPN Service";
# 255 = "Uncategorized threat class";
# };
@@ -408,7 +426,7 @@ irc {
* The kline message sent for this specific blacklist, remember to put
* the removal method in this.
*/
-# kline = "KLINE 180 *@%i :You have a host listed in the DroneBL. For more information, visit http://dronebl.org/lookup_branded?ip=%i&network=Network";
+# kline = "KLINE 180 *@%i :You have a host listed in the DroneBL. For more information, visit https://dronebl.org/lookup_branded?ip=%i&network=Network";
# };
@@ -426,7 +444,7 @@ irc {
# 5 = "Drones / Flooding";
# };
-# kline = "KLINE 180 *@%i :Blacklisted proxy found. For more information, visit http://rbl.efnetrbl.org/?i=%i";
+# kline = "KLINE 180 *@%i :Blacklisted proxy found. For more information, visit https://rbl.efnetrbl.org/?i=%i";
# };
@@ -441,7 +459,7 @@ irc {
# 1 = "TOR";
# };
-# kline = "KLINE 180 *@%i :TOR exit node found. For more information, visit http://rbl.efnetrbl.org/?i=%i";
+# kline = "KLINE 180 *@%i :TOR exit node found. For more information, visit https://rbl.efnetrbl.org/?i=%i";
# };
/*
@@ -577,7 +595,7 @@ scanner {
* If you don't understand what this means, please leave this
* commented out, as this is a major source of support queries!
*/
-# vhost = "127.0.0.1";
+# bind = "127.0.0.1";
/*
* Maximum file descriptors this scanner can use. Remember that there
@@ -717,7 +735,7 @@ scanner {
* they will override the defaults set in the first scanner
* for this and subsequent scanners defined in the config file
* This affects the following options:
- * fd, vhost, target_ip, target_port, target_string, timeout and
+ * fd, bind, target_ip, target_port, target_string, timeout and
* max_read.
*/
};
diff --git a/ltmain.sh b/ltmain.sh
index f402c9c..0cb7f90 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -31,7 +31,7 @@
PROGRAM=libtool
PACKAGE=libtool
-VERSION="2.4.6 Debian-2.4.6-10"
+VERSION="2.4.6 Debian-2.4.6-14"
package_revision=2.4.6
@@ -387,7 +387,7 @@ EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
# putting '$debug_cmd' at the start of all your functions, you can get
# bash to show function call trace with:
#
-# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
+# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
debug_cmd=${debug_cmd-":"}
exit_cmd=:
@@ -2141,7 +2141,7 @@ include the following information:
compiler: $LTCC
compiler flags: $LTCFLAGS
linker: $LD (gnu? $with_gnu_ld)
- version: $progname $scriptversion Debian-2.4.6-10
+ version: $progname $scriptversion Debian-2.4.6-14
automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
@@ -7368,10 +7368,12 @@ func_mode_link ()
# -stdlib=* select c++ std lib with clang
# -fsanitize=* Clang/GCC memory and address sanitizer
# -fuse-ld=* Linker select flags for GCC
+ # -static-* direct GCC to link specific libraries statically
+ # -fcilkplus Cilk Plus language extension features for C/C++
-64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
-t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \
-O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
- -specs=*|-fsanitize=*|-fuse-ld=*)
+ -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus)
func_quote_for_eval "$arg"
arg=$func_quote_for_eval_result
func_append compile_command " $arg"
diff --git a/m4/ax_arg_openssl.m4 b/m4/ax_arg_openssl.m4
index 7391873..e172e16 100644
--- a/m4/ax_arg_openssl.m4
+++ b/m4/ax_arg_openssl.m4
@@ -61,7 +61,7 @@ else
fi
AS_IF([test "$cf_enable_openssl" != "no"],
- [AC_MSG_CHECKING(for LibreSSL, or OpenSSL 1.1.1 and above)
+ [AC_MSG_CHECKING([for LibreSSL, or OpenSSL 1.1.1 and above])
AC_RUN_IFELSE([
AC_LANG_PROGRAM([
#include <openssl/opensslv.h>
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 9d6dd9f..a6d21ae 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1041,8 +1041,8 @@ int forced_loaded() { return 2;}
_LT_EOF
echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD
$LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD
- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
+ echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD
+ $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD
echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD
$RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD
cat > conftest.c << _LT_EOF
@@ -1492,7 +1492,7 @@ need_locks=$enable_libtool_lock
m4_defun([_LT_PROG_AR],
[AC_CHECK_TOOLS(AR, [ar], false)
: ${AR=ar}
-: ${AR_FLAGS=cru}
+: ${AR_FLAGS=cr}
_LT_DECL([], [AR], [1], [The archiver])
_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive])
diff --git a/src/Makefile.am b/src/Makefile.am
index ec9337c..858547d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -39,7 +39,6 @@ hopm_SOURCES = compat.c \
patricia.h \
scan.c \
scan.h \
- serno.h \
stats.c \
stats.h
diff --git a/src/Makefile.in b/src/Makefile.in
index e0bb65e..5da1450 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -421,7 +421,6 @@ hopm_SOURCES = compat.c \
patricia.h \
scan.c \
scan.h \
- serno.h \
stats.c \
stats.h
diff --git a/src/config-lexer.c b/src/config-lexer.c
index 7ede571..4987d2a 100644
--- a/src/config-lexer.c
+++ b/src/config-lexer.c
@@ -355,8 +355,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
(yy_hold_char) = *yy_cp; \
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 110
-#define YY_END_OF_BUFFER 111
+#define YY_NUM_RULES 112
+#define YY_END_OF_BUFFER 113
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -364,63 +364,66 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[493] =
+static const flex_int16_t yy_accept[526] =
{ 0,
- 7, 7, 0, 0, 111, 109, 7, 6, 109, 8,
- 109, 109, 9, 109, 109, 109, 109, 109, 109, 109,
- 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
- 109, 109, 109, 3, 4, 3, 7, 6, 0, 10,
- 8, 0, 1, 8, 9, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 25, 0, 0,
- 0, 0, 0, 87, 0, 0, 0, 0, 92, 0,
- 0, 0, 0, 0, 0, 107, 0, 105, 0, 0,
+ 7, 7, 0, 0, 113, 111, 7, 6, 111, 8,
+ 111, 111, 9, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
+ 111, 111, 3, 4, 3, 7, 6, 0, 10, 8,
+ 0, 1, 8, 9, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 26, 0, 0,
+ 0, 0, 0, 89, 0, 0, 0, 0, 94, 0,
+ 0, 0, 0, 0, 0, 109, 0, 107, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 74, 0, 0, 0, 0, 0, 0, 0, 0, 29,
- 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 108, 0, 42, 0, 0,
+ 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
+ 30, 0, 32, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 110, 0, 43, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 0, 0, 61, 0, 0, 0,
- 0, 0, 0, 0, 104, 0, 0, 12, 0, 0,
- 82, 0, 0, 0, 73, 0, 0, 0, 0, 0,
- 76, 93, 0, 27, 28, 0, 0, 0, 32, 0,
- 0, 0, 0, 34, 0, 35, 0, 38, 0, 41,
-
- 0, 0, 0, 0, 47, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
- 63, 64, 0, 72, 0, 68, 0, 0, 0, 0,
- 81, 0, 0, 0, 0, 0, 0, 0, 0, 106,
- 75, 0, 95, 0, 86, 0, 30, 0, 91, 0,
- 0, 70, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 66, 71, 0, 67, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 24, 0, 0, 26, 85, 0, 0, 90, 0, 78,
+ 0, 0, 0, 0, 0, 104, 0, 0, 63, 0,
+ 0, 0, 0, 0, 0, 106, 0, 0, 12, 0,
+ 14, 0, 84, 0, 0, 0, 75, 0, 0, 0,
+ 0, 0, 78, 95, 0, 28, 29, 0, 0, 0,
+ 33, 0, 0, 0, 0, 35, 0, 36, 0, 39,
- 69, 0, 0, 40, 0, 0, 0, 0, 0, 0,
- 0, 0, 100, 0, 0, 80, 0, 56, 97, 98,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
+ 0, 42, 0, 0, 0, 0, 48, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 105, 66, 67, 74, 0, 70, 0, 0,
+ 0, 0, 83, 0, 0, 0, 0, 0, 0, 0,
+ 0, 108, 77, 0, 97, 0, 88, 0, 31, 0,
+ 93, 0, 0, 72, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 53, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 0, 69, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 25, 0, 0, 27, 87, 0, 0,
+
+ 92, 0, 80, 71, 0, 0, 41, 0, 0, 0,
+ 0, 0, 0, 0, 0, 102, 0, 0, 0, 82,
+ 0, 58, 99, 100, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 16, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 79, 0, 0,
+ 44, 0, 46, 47, 0, 0, 0, 0, 0, 55,
+ 56, 81, 0, 0, 62, 0, 0, 0, 101, 0,
+ 0, 0, 0, 0, 0, 0, 24, 0, 0, 103,
+ 96, 0, 86, 34, 91, 37, 40, 45, 49, 0,
+ 51, 0, 0, 57, 0, 0, 0, 0, 0, 68,
+
+ 0, 0, 0, 0, 0, 15, 0, 0, 0, 20,
+ 0, 0, 0, 98, 85, 90, 0, 0, 0, 0,
+ 59, 0, 0, 0, 0, 0, 5, 0, 5, 0,
+ 0, 0, 0, 0, 23, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0,
+ 21, 22, 0, 50, 0, 0, 60, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 77, 0, 0, 43, 0, 45, 46, 0,
- 0, 0, 0, 53, 54, 79, 0, 0, 60, 0,
- 0, 99, 0, 0, 0, 0, 0, 0, 0, 23,
- 0, 0, 101, 94, 0, 84, 33, 89, 36, 39,
- 44, 48, 0, 50, 0, 55, 0, 0, 0, 0,
- 65, 0, 0, 0, 0, 0, 14, 0, 0, 0,
-
- 19, 0, 0, 0, 96, 83, 88, 0, 0, 0,
- 57, 0, 0, 0, 0, 5, 0, 5, 0, 0,
- 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 13, 0, 0, 0, 20, 21, 0,
- 49, 0, 58, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 59,
- 0, 11, 0, 0, 0, 0, 0, 0, 0, 0,
- 18, 0, 0, 0, 16, 0, 37, 0, 0, 0,
- 51, 0, 17, 0, 0, 0, 0, 0, 0, 0,
- 62, 0
+ 0, 0, 0, 0, 0, 0, 0, 61, 0, 0,
+ 11, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 19, 0, 0, 0, 0, 0, 17, 0, 38,
+ 0, 0, 0, 0, 0, 52, 0, 0, 0, 18,
+ 0, 0, 0, 0, 0, 0, 54, 64, 0, 0,
+ 0, 0, 0, 65, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -466,243 +469,259 @@ static const YY_CHAR yy_meta[66] =
1, 1, 1, 1, 1
} ;
-static const flex_int16_t yy_base[499] =
+static const flex_int16_t yy_base[532] =
{ 0,
- 0, 0, 63, 64, 963, 972, 957, 0, 68, 0,
- 45, 67, 67, 56, 65, 59, 68, 45, 70, 56,
- 93, 107, 144, 112, 116, 184, 74, 151, 227, 54,
- 69, 128, 119, 972, 972, 950, 954, 0, 93, 972,
- 0, 112, 972, 0, 207, 136, 140, 147, 160, 143,
- 163, 161, 144, 152, 176, 178, 181, 972, 177, 187,
- 187, 192, 211, 192, 193, 209, 212, 208, 198, 222,
- 217, 237, 221, 228, 234, 226, 243, 972, 253, 235,
- 243, 262, 251, 255, 282, 253, 273, 290, 275, 272,
- 265, 275, 270, 269, 275, 291, 287, 297, 292, 316,
-
- 972, 307, 295, 294, 915, 317, 316, 311, 313, 313,
- 312, 333, 331, 325, 321, 323, 326, 333, 132, 972,
- 326, 972, 334, 336, 343, 911, 335, 354, 337, 357,
- 345, 364, 367, 362, 364, 972, 359, 972, 368, 360,
- 376, 378, 366, 367, 383, 375, 380, 373, 380, 383,
- 396, 380, 395, 972, 399, 402, 910, 404, 409, 399,
- 403, 412, 417, 408, 972, 417, 424, 972, 410, 424,
- 418, 424, 437, 422, 972, 430, 438, 431, 430, 441,
- 431, 443, 433, 972, 972, 448, 457, 461, 972, 451,
- 468, 472, 457, 972, 469, 972, 479, 463, 479, 972,
-
- 472, 466, 475, 481, 972, 477, 474, 482, 483, 473,
- 493, 498, 488, 492, 500, 492, 508, 504, 512, 972,
- 972, 512, 507, 510, 528, 514, 513, 516, 525, 529,
- 972, 536, 529, 538, 909, 541, 538, 546, 530, 972,
- 972, 536, 538, 551, 539, 537, 972, 557, 545, 541,
- 565, 554, 574, 573, 575, 568, 570, 568, 575, 587,
- 583, 592, 581, 972, 578, 583, 594, 596, 600, 585,
- 94, 586, 588, 595, 612, 972, 972, 595, 972, 611,
- 599, 612, 615, 618, 626, 625, 627, 625, 625, 624,
- 972, 624, 630, 972, 972, 626, 646, 972, 630, 633,
-
- 972, 644, 636, 972, 636, 640, 648, 656, 651, 654,
- 655, 664, 972, 667, 659, 663, 673, 972, 972, 972,
- 908, 665, 667, 676, 684, 685, 905, 681, 678, 972,
- 903, 692, 681, 685, 692, 698, 681, 686, 688, 704,
- 708, 708, 972, 712, 697, 972, 715, 972, 972, 710,
- 721, 723, 730, 972, 972, 972, 723, 731, 972, 717,
- 732, 972, 765, 735, 728, 729, 742, 727, 742, 972,
- 745, 751, 972, 972, 750, 752, 972, 753, 255, 972,
- 972, 972, 759, 972, 759, 972, 764, 766, 762, 772,
- 972, 802, 235, 212, 785, 766, 972, 776, 773, 785,
-
- 972, 786, 791, 782, 972, 972, 972, 786, 788, 800,
- 972, 793, 796, 815, 220, 188, 177, 176, 805, 805,
- 802, 817, 811, 972, 806, 808, 825, 812, 819, 814,
- 828, 826, 831, 972, 836, 825, 841, 972, 972, 848,
- 972, 833, 972, 841, 850, 849, 844, 857, 851, 848,
- 864, 863, 101, 849, 853, 97, 855, 868, 862, 972,
- 861, 972, 882, 866, 866, 878, 869, 887, 882, 888,
- 972, 894, 901, 887, 972, 881, 972, 896, 903, 908,
- 972, 908, 972, 908, 917, 920, 903, 916, 912, 914,
- 972, 972, 967, 133, 969, 132, 100, 97
-
+ 0, 0, 63, 64, 1026, 1038, 1023, 0, 68, 0,
+ 45, 67, 67, 56, 65, 59, 68, 45, 71, 63,
+ 97, 111, 148, 116, 113, 188, 65, 155, 231, 53,
+ 124, 101, 1038, 1038, 1016, 1020, 0, 98, 1038, 0,
+ 105, 1038, 0, 168, 131, 140, 155, 157, 171, 155,
+ 176, 168, 154, 164, 180, 182, 179, 1038, 171, 173,
+ 180, 188, 207, 188, 196, 210, 215, 207, 202, 226,
+ 221, 240, 225, 232, 238, 224, 239, 1038, 268, 231,
+ 240, 258, 247, 258, 281, 256, 276, 277, 288, 282,
+ 278, 272, 280, 275, 274, 280, 292, 295, 294, 323,
+
+ 1038, 306, 297, 292, 981, 321, 325, 324, 317, 320,
+ 321, 318, 335, 337, 327, 325, 327, 330, 337, 351,
+ 1038, 329, 1038, 338, 340, 347, 980, 340, 365, 348,
+ 368, 356, 371, 374, 370, 372, 1038, 365, 1038, 375,
+ 368, 381, 382, 370, 371, 387, 379, 384, 377, 979,
+ 384, 386, 400, 384, 399, 1038, 404, 413, 978, 415,
+ 420, 410, 418, 422, 415, 1038, 422, 429, 1038, 416,
+ 1038, 428, 421, 427, 440, 425, 1038, 432, 442, 433,
+ 432, 444, 432, 462, 433, 1038, 1038, 451, 455, 458,
+ 1038, 453, 467, 477, 462, 1038, 476, 1038, 484, 468,
+
+ 485, 1038, 476, 469, 478, 484, 1038, 480, 476, 484,
+ 486, 476, 496, 487, 502, 491, 496, 504, 504, 519,
+ 515, 528, 1038, 1038, 519, 515, 536, 520, 520, 524,
+ 530, 533, 1038, 540, 533, 542, 976, 545, 542, 550,
+ 534, 1038, 1038, 540, 541, 555, 543, 541, 1038, 562,
+ 556, 552, 576, 565, 581, 580, 583, 576, 576, 575,
+ 583, 592, 587, 596, 585, 1038, 582, 584, 589, 599,
+ 601, 605, 591, 94, 593, 593, 612, 605, 625, 1038,
+ 609, 1038, 629, 617, 626, 628, 629, 637, 635, 638,
+ 635, 635, 634, 1038, 631, 636, 1038, 1038, 632, 652,
+
+ 1038, 636, 638, 1038, 650, 643, 1038, 646, 648, 657,
+ 666, 664, 668, 673, 682, 1038, 679, 682, 675, 675,
+ 685, 1038, 1038, 1038, 975, 677, 681, 681, 688, 696,
+ 697, 974, 690, 687, 1038, 973, 702, 691, 695, 701,
+ 707, 693, 698, 703, 718, 726, 727, 1038, 732, 718,
+ 1038, 736, 1038, 1038, 730, 739, 740, 743, 727, 1038,
+ 1038, 1038, 739, 742, 1038, 733, 734, 749, 1038, 774,
+ 749, 745, 742, 773, 745, 755, 1038, 763, 770, 1038,
+ 1038, 769, 772, 1038, 773, 972, 1038, 1038, 1038, 779,
+ 1038, 777, 796, 1038, 783, 785, 781, 793, 790, 1038,
+
+ 821, 1007, 996, 803, 783, 1038, 793, 787, 803, 1038,
+ 801, 812, 807, 1038, 1038, 1038, 817, 815, 827, 818,
+ 1038, 823, 824, 836, 842, 271, 264, 229, 222, 832,
+ 832, 827, 843, 837, 1038, 831, 832, 847, 835, 842,
+ 851, 838, 849, 850, 852, 856, 1038, 868, 859, 881,
+ 1038, 1038, 885, 1038, 869, 188, 1038, 876, 889, 888,
+ 883, 878, 891, 883, 878, 895, 891, 895, 902, 145,
+ 880, 885, 111, 887, 899, 892, 905, 1038, 892, 895,
+ 1038, 916, 907, 912, 927, 918, 916, 936, 939, 934,
+ 937, 1038, 943, 947, 108, 105, 932, 1038, 925, 1038,
+
+ 941, 947, 948, 946, 951, 1038, 949, 950, 954, 1038,
+ 950, 951, 954, 963, 964, 974, 1038, 1038, 982, 971,
+ 982, 978, 980, 1038, 1038, 1033, 140, 1035, 137, 136,
+ 97
} ;
-static const flex_int16_t yy_def[499] =
+static const flex_int16_t yy_def[532] =
{ 0,
- 492, 1, 493, 493, 492, 492, 492, 494, 495, 496,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 494, 495, 492,
- 496, 492, 492, 496, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
-
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
-
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
-
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 497, 498, 492, 492, 492, 492, 492, 492,
-
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 497, 497, 498, 498, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 0, 492, 492, 492, 492, 492, 492
-
+ 525, 1, 526, 526, 525, 525, 525, 527, 528, 529,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 527, 528, 525, 529,
+ 525, 525, 529, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 530, 531, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 530, 530, 531, 531, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 0, 525, 525, 525, 525, 525,
+ 525
} ;
-static const flex_int16_t yy_nxt[1038] =
+static const flex_int16_t yy_nxt[1104] =
{ 0,
6, 7, 8, 9, 10, 6, 11, 12, 13, 13,
13, 13, 6, 6, 14, 15, 16, 17, 18, 19,
6, 20, 21, 22, 6, 23, 24, 25, 26, 6,
- 27, 28, 29, 30, 31, 32, 6, 33, 6, 6,
+ 27, 28, 29, 30, 6, 31, 6, 32, 6, 6,
14, 15, 16, 17, 18, 19, 6, 20, 21, 22,
6, 23, 24, 25, 26, 6, 27, 28, 29, 30,
- 31, 32, 6, 33, 6, 35, 35, 42, 36, 36,
- 40, 40, 43, 46, 44, 45, 45, 45, 45, 48,
- 51, 56, 53, 59, 57, 96, 52, 58, 60, 49,
- 97, 47, 85, 42, 54, 40, 40, 417, 55, 46,
-
- 415, 86, 50, 319, 320, 48, 51, 56, 53, 59,
- 57, 96, 52, 58, 60, 49, 97, 47, 85, 61,
- 54, 62, 64, 63, 55, 65, 73, 86, 50, 66,
- 74, 67, 41, 38, 75, 77, 464, 100, 102, 76,
- 461, 184, 78, 185, 79, 61, 98, 62, 64, 63,
- 99, 65, 73, 103, 104, 66, 74, 67, 68, 69,
- 75, 77, 70, 100, 102, 76, 71, 87, 78, 88,
- 79, 72, 98, 105, 106, 107, 99, 108, 89, 103,
- 104, 111, 90, 112, 68, 69, 109, 110, 70, 418,
- 418, 416, 71, 87, 113, 88, 114, 72, 80, 105,
-
- 106, 107, 81, 108, 89, 115, 82, 111, 90, 112,
- 116, 83, 109, 110, 84, 45, 45, 45, 45, 117,
- 113, 118, 114, 416, 80, 418, 119, 120, 81, 121,
- 122, 115, 82, 123, 124, 127, 116, 83, 416, 125,
- 84, 91, 128, 129, 126, 117, 132, 118, 133, 92,
- 134, 93, 119, 120, 130, 121, 122, 94, 135, 123,
- 124, 127, 136, 131, 95, 125, 140, 91, 128, 129,
- 126, 137, 132, 141, 133, 92, 134, 93, 138, 142,
- 130, 143, 144, 94, 135, 139, 148, 149, 136, 131,
- 95, 153, 140, 154, 408, 155, 145, 137, 146, 141,
-
- 156, 157, 158, 159, 138, 142, 150, 143, 144, 160,
- 147, 139, 148, 149, 161, 162, 151, 153, 163, 154,
- 152, 155, 145, 166, 146, 167, 156, 157, 158, 159,
- 164, 168, 150, 170, 171, 160, 147, 172, 173, 174,
- 161, 162, 151, 175, 163, 178, 152, 165, 176, 166,
- 179, 167, 180, 181, 182, 183, 164, 168, 186, 170,
- 171, 187, 188, 172, 173, 174, 189, 191, 192, 175,
- 193, 178, 177, 165, 176, 194, 179, 195, 180, 181,
- 182, 183, 196, 197, 186, 198, 199, 187, 188, 200,
- 201, 202, 189, 191, 192, 203, 193, 204, 205, 206,
-
- 207, 194, 209, 195, 210, 211, 212, 208, 196, 197,
- 213, 198, 199, 214, 215, 200, 201, 202, 216, 217,
- 218, 203, 220, 204, 205, 206, 207, 221, 209, 222,
- 210, 211, 212, 208, 223, 224, 213, 225, 226, 214,
- 215, 227, 228, 229, 216, 217, 218, 230, 220, 231,
- 232, 233, 234, 221, 235, 222, 238, 236, 239, 240,
- 223, 224, 241, 225, 226, 244, 245, 227, 228, 229,
- 237, 242, 246, 230, 243, 231, 232, 233, 234, 247,
- 235, 248, 238, 236, 239, 240, 249, 250, 241, 251,
- 252, 244, 245, 253, 254, 255, 237, 242, 246, 256,
-
- 243, 257, 258, 259, 260, 247, 261, 248, 262, 263,
- 264, 265, 249, 250, 268, 251, 252, 269, 270, 253,
- 254, 255, 266, 271, 267, 256, 272, 257, 258, 259,
- 260, 273, 261, 274, 262, 263, 264, 265, 275, 276,
- 268, 277, 278, 269, 270, 279, 280, 281, 266, 271,
- 267, 282, 272, 283, 284, 285, 286, 273, 288, 274,
- 289, 290, 291, 292, 275, 276, 293, 277, 278, 294,
- 295, 279, 280, 281, 296, 297, 298, 282, 299, 283,
- 284, 285, 286, 300, 288, 301, 289, 290, 291, 292,
- 302, 303, 293, 304, 305, 294, 295, 306, 307, 308,
-
- 296, 297, 298, 309, 299, 310, 311, 312, 313, 300,
- 314, 301, 315, 316, 317, 318, 302, 303, 321, 304,
- 305, 322, 323, 306, 307, 308, 324, 325, 326, 309,
- 327, 310, 311, 312, 313, 328, 314, 329, 315, 316,
- 317, 318, 330, 331, 321, 332, 333, 322, 323, 335,
- 336, 337, 324, 325, 326, 338, 327, 339, 340, 334,
- 341, 328, 342, 329, 343, 344, 345, 346, 330, 331,
- 347, 332, 333, 348, 349, 335, 336, 337, 350, 351,
- 352, 338, 353, 339, 340, 334, 341, 354, 342, 355,
- 343, 344, 345, 346, 356, 357, 347, 359, 360, 348,
-
- 349, 361, 362, 363, 350, 351, 352, 365, 353, 366,
- 368, 369, 370, 354, 371, 355, 372, 373, 374, 375,
- 356, 357, 376, 359, 360, 377, 378, 361, 362, 363,
- 379, 380, 381, 365, 382, 366, 368, 369, 370, 383,
- 371, 384, 372, 373, 374, 375, 385, 386, 376, 390,
- 391, 377, 378, 387, 395, 396, 379, 380, 381, 388,
- 382, 397, 389, 401, 398, 383, 392, 384, 393, 402,
- 403, 399, 385, 386, 400, 390, 391, 394, 404, 387,
- 395, 396, 405, 406, 407, 388, 409, 397, 389, 401,
- 398, 410, 411, 412, 413, 402, 403, 399, 414, 419,
-
- 400, 420, 421, 392, 404, 393, 422, 423, 405, 406,
- 407, 424, 409, 425, 394, 426, 427, 410, 411, 412,
- 413, 428, 429, 430, 414, 419, 431, 420, 421, 432,
- 433, 434, 422, 423, 435, 436, 437, 424, 438, 425,
- 439, 426, 427, 440, 441, 442, 443, 428, 429, 430,
- 444, 445, 431, 446, 447, 432, 433, 434, 448, 449,
- 435, 436, 437, 450, 438, 451, 439, 452, 453, 440,
- 441, 442, 443, 454, 455, 456, 444, 445, 457, 446,
- 447, 458, 459, 460, 448, 449, 462, 463, 465, 450,
- 466, 451, 467, 452, 453, 468, 469, 470, 471, 454,
-
- 455, 456, 472, 473, 457, 474, 475, 458, 459, 460,
- 476, 477, 462, 463, 465, 478, 466, 479, 467, 480,
- 481, 468, 469, 470, 471, 482, 483, 484, 472, 473,
- 485, 474, 475, 486, 487, 488, 476, 477, 489, 490,
- 491, 478, 367, 479, 364, 480, 481, 358, 287, 219,
- 190, 482, 483, 484, 169, 37, 485, 101, 37, 486,
- 487, 488, 492, 492, 489, 490, 491, 34, 34, 39,
- 39, 5, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
-
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492
+ 6, 31, 6, 32, 6, 34, 34, 41, 35, 35,
+ 39, 39, 42, 45, 43, 44, 44, 44, 44, 47,
+ 51, 56, 53, 85, 97, 57, 52, 48, 58, 49,
+ 59, 46, 86, 41, 54, 60, 87, 428, 55, 45,
+
+ 39, 39, 50, 323, 324, 47, 51, 56, 53, 85,
+ 97, 57, 52, 48, 58, 49, 59, 46, 86, 100,
+ 54, 60, 87, 61, 55, 62, 64, 63, 50, 65,
+ 73, 102, 77, 66, 74, 67, 426, 40, 75, 78,
+ 37, 79, 98, 76, 503, 100, 99, 502, 103, 61,
+ 483, 62, 64, 63, 104, 65, 73, 102, 77, 66,
+ 74, 67, 68, 69, 75, 78, 70, 79, 98, 76,
+ 71, 88, 99, 89, 103, 72, 44, 44, 44, 44,
+ 104, 105, 90, 106, 480, 107, 91, 108, 68, 69,
+ 109, 112, 70, 110, 111, 113, 71, 88, 114, 89,
+
+ 115, 72, 80, 116, 117, 118, 81, 105, 90, 106,
+ 82, 107, 91, 108, 119, 83, 109, 112, 84, 110,
+ 111, 113, 120, 121, 114, 122, 115, 467, 80, 116,
+ 117, 118, 81, 123, 124, 429, 82, 125, 126, 128,
+ 119, 83, 429, 127, 84, 92, 129, 130, 120, 121,
+ 133, 122, 134, 93, 135, 94, 136, 131, 137, 123,
+ 124, 95, 141, 125, 126, 128, 132, 427, 96, 127,
+ 142, 92, 129, 130, 427, 143, 133, 144, 134, 93,
+ 135, 94, 136, 131, 137, 145, 138, 95, 141, 149,
+ 150, 151, 132, 139, 96, 146, 142, 147, 155, 156,
+
+ 140, 143, 157, 144, 152, 158, 159, 160, 161, 148,
+ 162, 145, 138, 163, 153, 149, 150, 151, 154, 139,
+ 164, 146, 167, 147, 155, 156, 140, 168, 157, 169,
+ 152, 158, 159, 160, 161, 148, 162, 165, 171, 163,
+ 153, 172, 173, 174, 154, 175, 164, 176, 167, 177,
+ 178, 180, 181, 168, 166, 169, 182, 183, 184, 185,
+ 186, 188, 187, 165, 171, 189, 190, 172, 173, 174,
+ 191, 175, 193, 176, 179, 177, 178, 180, 181, 194,
+ 166, 195, 182, 183, 184, 185, 196, 188, 197, 198,
+ 199, 189, 190, 200, 201, 202, 191, 203, 193, 204,
+
+ 205, 206, 207, 208, 209, 194, 211, 195, 212, 213,
+ 215, 210, 196, 216, 197, 198, 199, 217, 218, 200,
+ 201, 202, 219, 203, 220, 204, 205, 206, 207, 208,
+ 209, 221, 211, 223, 212, 213, 215, 210, 224, 216,
+ 225, 226, 227, 217, 218, 228, 229, 230, 219, 231,
+ 220, 232, 233, 234, 235, 236, 237, 221, 240, 223,
+ 241, 238, 242, 243, 224, 246, 225, 226, 227, 247,
+ 248, 228, 229, 230, 239, 231, 249, 232, 233, 234,
+ 235, 236, 237, 250, 240, 251, 241, 238, 242, 243,
+ 244, 246, 252, 245, 253, 247, 248, 254, 255, 256,
+
+ 239, 257, 249, 258, 259, 260, 261, 262, 263, 250,
+ 264, 251, 265, 266, 267, 268, 244, 271, 252, 245,
+ 253, 272, 273, 254, 255, 256, 269, 257, 270, 258,
+ 259, 260, 261, 262, 263, 274, 264, 275, 265, 266,
+ 267, 268, 276, 271, 277, 279, 280, 272, 273, 278,
+ 281, 282, 269, 283, 270, 284, 285, 286, 287, 288,
+ 289, 274, 291, 275, 292, 293, 294, 295, 276, 296,
+ 277, 279, 280, 297, 298, 278, 281, 282, 299, 283,
+ 300, 284, 285, 286, 287, 288, 289, 301, 291, 302,
+ 292, 293, 294, 295, 303, 296, 304, 305, 306, 297,
+
+ 298, 307, 308, 309, 299, 310, 300, 311, 312, 313,
+ 314, 315, 316, 301, 317, 302, 318, 319, 320, 321,
+ 303, 322, 304, 305, 306, 325, 326, 307, 308, 309,
+ 327, 310, 328, 311, 312, 313, 314, 315, 316, 329,
+ 317, 330, 318, 319, 320, 321, 331, 322, 332, 333,
+ 334, 325, 326, 335, 336, 337, 327, 338, 328, 340,
+ 341, 342, 343, 344, 345, 329, 346, 330, 347, 348,
+ 339, 349, 331, 350, 332, 333, 334, 351, 352, 335,
+ 336, 337, 353, 338, 354, 340, 341, 342, 343, 344,
+ 345, 355, 346, 356, 347, 348, 339, 349, 357, 350,
+
+ 358, 359, 360, 351, 352, 361, 362, 363, 353, 365,
+ 354, 366, 367, 368, 369, 370, 372, 355, 373, 356,
+ 375, 376, 377, 378, 357, 379, 358, 359, 360, 380,
+ 381, 361, 362, 363, 382, 365, 383, 366, 367, 368,
+ 369, 370, 372, 384, 373, 385, 375, 376, 377, 378,
+ 386, 379, 387, 388, 389, 380, 381, 390, 391, 392,
+ 382, 393, 383, 394, 395, 398, 399, 400, 404, 384,
+ 396, 385, 405, 397, 406, 401, 386, 402, 387, 388,
+ 389, 410, 411, 390, 391, 392, 403, 393, 412, 394,
+ 395, 398, 399, 400, 404, 407, 396, 413, 405, 397,
+
+ 406, 414, 408, 415, 416, 409, 418, 410, 411, 419,
+ 420, 421, 422, 423, 412, 424, 425, 430, 431, 432,
+ 433, 407, 401, 413, 402, 434, 435, 414, 408, 415,
+ 416, 409, 418, 403, 436, 419, 420, 421, 422, 423,
+ 437, 424, 425, 430, 431, 432, 433, 438, 439, 440,
+ 441, 434, 435, 442, 443, 444, 445, 446, 447, 448,
+ 436, 449, 450, 451, 452, 453, 437, 454, 455, 456,
+ 457, 458, 459, 438, 439, 440, 441, 460, 461, 442,
+ 443, 444, 445, 446, 447, 448, 462, 449, 450, 451,
+ 452, 453, 463, 454, 455, 456, 457, 458, 459, 464,
+
+ 465, 466, 468, 460, 461, 469, 470, 471, 472, 473,
+ 474, 475, 462, 476, 477, 478, 479, 481, 463, 482,
+ 484, 485, 486, 487, 488, 464, 465, 466, 468, 489,
+ 490, 469, 470, 471, 472, 473, 474, 475, 491, 476,
+ 477, 478, 479, 481, 492, 482, 484, 485, 486, 487,
+ 488, 493, 494, 495, 496, 489, 490, 497, 498, 499,
+ 500, 501, 504, 505, 491, 506, 507, 508, 509, 510,
+ 492, 511, 512, 513, 514, 515, 516, 493, 494, 495,
+ 496, 517, 518, 497, 498, 499, 500, 501, 504, 505,
+ 519, 506, 507, 508, 509, 510, 520, 511, 512, 513,
+
+ 514, 515, 516, 521, 522, 523, 524, 517, 518, 429,
+ 427, 417, 374, 371, 364, 290, 519, 222, 214, 192,
+ 170, 36, 520, 101, 36, 525, 525, 525, 525, 521,
+ 522, 523, 524, 33, 33, 38, 38, 5, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 525, 525
} ;
-static const flex_int16_t yy_chk[1038] =
+static const flex_int16_t yy_chk[1104] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -712,112 +731,120 @@ static const flex_int16_t yy_chk[1038] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 3, 4, 11, 3, 4,
9, 9, 12, 14, 12, 13, 13, 13, 13, 15,
- 16, 18, 17, 20, 19, 30, 16, 19, 20, 15,
- 31, 14, 27, 11, 17, 39, 39, 498, 17, 14,
-
- 497, 27, 15, 271, 271, 15, 16, 18, 17, 20,
- 19, 30, 16, 19, 20, 15, 31, 14, 27, 21,
- 17, 21, 22, 21, 17, 22, 24, 27, 15, 22,
- 24, 22, 496, 494, 24, 25, 456, 33, 42, 24,
- 453, 119, 25, 119, 25, 21, 32, 21, 22, 21,
- 32, 22, 24, 46, 47, 22, 24, 22, 23, 23,
- 24, 25, 23, 33, 42, 24, 23, 28, 25, 28,
- 25, 23, 32, 48, 49, 50, 32, 51, 28, 46,
- 47, 53, 28, 54, 23, 23, 52, 52, 23, 418,
- 417, 416, 23, 28, 55, 28, 56, 23, 26, 48,
-
- 49, 50, 26, 51, 28, 57, 26, 53, 28, 54,
- 59, 26, 52, 52, 26, 45, 45, 45, 45, 60,
- 55, 61, 56, 415, 26, 394, 62, 63, 26, 64,
- 65, 57, 26, 66, 67, 69, 59, 26, 393, 68,
- 26, 29, 70, 71, 68, 60, 73, 61, 74, 29,
- 75, 29, 62, 63, 72, 64, 65, 29, 76, 66,
- 67, 69, 77, 72, 29, 68, 80, 29, 70, 71,
- 68, 79, 73, 81, 74, 29, 75, 29, 79, 82,
- 72, 83, 84, 29, 76, 79, 86, 87, 77, 72,
- 29, 89, 80, 90, 379, 91, 85, 79, 85, 81,
-
- 92, 93, 94, 95, 79, 82, 88, 83, 84, 96,
- 85, 79, 86, 87, 97, 98, 88, 89, 99, 90,
- 88, 91, 85, 102, 85, 103, 92, 93, 94, 95,
- 100, 104, 88, 106, 107, 96, 85, 108, 109, 110,
- 97, 98, 88, 111, 99, 113, 88, 100, 112, 102,
- 114, 103, 115, 116, 117, 118, 100, 104, 121, 106,
- 107, 123, 124, 108, 109, 110, 125, 127, 128, 111,
- 129, 113, 112, 100, 112, 130, 114, 131, 115, 116,
- 117, 118, 132, 133, 121, 134, 135, 123, 124, 137,
- 139, 140, 125, 127, 128, 141, 129, 142, 143, 144,
-
- 145, 130, 146, 131, 147, 148, 149, 145, 132, 133,
- 150, 134, 135, 151, 152, 137, 139, 140, 153, 155,
- 156, 141, 158, 142, 143, 144, 145, 159, 146, 160,
- 147, 148, 149, 145, 161, 162, 150, 163, 164, 151,
- 152, 166, 167, 169, 153, 155, 156, 170, 158, 171,
- 172, 173, 174, 159, 176, 160, 178, 177, 179, 180,
- 161, 162, 181, 163, 164, 183, 186, 166, 167, 169,
- 177, 182, 187, 170, 182, 171, 172, 173, 174, 188,
- 176, 190, 178, 177, 179, 180, 191, 192, 181, 193,
- 195, 183, 186, 197, 198, 199, 177, 182, 187, 201,
-
- 182, 202, 203, 204, 206, 188, 207, 190, 208, 209,
- 210, 211, 191, 192, 213, 193, 195, 214, 215, 197,
- 198, 199, 212, 216, 212, 201, 217, 202, 203, 204,
- 206, 218, 207, 219, 208, 209, 210, 211, 222, 223,
- 213, 224, 225, 214, 215, 226, 227, 228, 212, 216,
- 212, 229, 217, 230, 232, 233, 234, 218, 236, 219,
- 237, 238, 239, 242, 222, 223, 243, 224, 225, 244,
- 245, 226, 227, 228, 246, 248, 249, 229, 250, 230,
- 232, 233, 234, 251, 236, 252, 237, 238, 239, 242,
- 253, 254, 243, 255, 256, 244, 245, 257, 258, 259,
-
- 246, 248, 249, 260, 250, 261, 262, 263, 265, 251,
- 266, 252, 267, 268, 269, 270, 253, 254, 272, 255,
- 256, 273, 274, 257, 258, 259, 275, 278, 280, 260,
- 281, 261, 262, 263, 265, 282, 266, 283, 267, 268,
- 269, 270, 284, 285, 272, 286, 287, 273, 274, 288,
- 289, 290, 275, 278, 280, 292, 281, 293, 296, 287,
- 297, 282, 299, 283, 300, 302, 303, 305, 284, 285,
- 306, 286, 287, 307, 308, 288, 289, 290, 309, 310,
- 311, 292, 312, 293, 296, 287, 297, 314, 299, 315,
- 300, 302, 303, 305, 316, 317, 306, 322, 323, 307,
-
- 308, 324, 325, 326, 309, 310, 311, 328, 312, 329,
- 332, 333, 334, 314, 335, 315, 336, 337, 338, 339,
- 316, 317, 340, 322, 323, 341, 342, 324, 325, 326,
- 344, 345, 347, 328, 350, 329, 332, 333, 334, 351,
- 335, 352, 336, 337, 338, 339, 353, 357, 340, 360,
- 361, 341, 342, 358, 364, 365, 344, 345, 347, 358,
- 350, 366, 358, 368, 367, 351, 363, 352, 363, 369,
- 371, 367, 353, 357, 367, 360, 361, 363, 372, 358,
- 364, 365, 375, 376, 378, 358, 383, 366, 358, 368,
- 367, 385, 387, 388, 389, 369, 371, 367, 390, 395,
-
- 367, 396, 398, 392, 372, 392, 399, 400, 375, 376,
- 378, 402, 383, 403, 392, 404, 408, 385, 387, 388,
- 389, 409, 410, 412, 390, 395, 413, 396, 398, 414,
- 419, 420, 399, 400, 421, 422, 423, 402, 425, 403,
- 426, 404, 408, 427, 428, 429, 430, 409, 410, 412,
- 431, 432, 413, 433, 435, 414, 419, 420, 436, 437,
- 421, 422, 423, 440, 425, 442, 426, 444, 445, 427,
- 428, 429, 430, 446, 447, 448, 431, 432, 449, 433,
- 435, 450, 451, 452, 436, 437, 454, 455, 457, 440,
- 458, 442, 459, 444, 445, 461, 463, 464, 465, 446,
-
- 447, 448, 466, 467, 449, 468, 469, 450, 451, 452,
- 470, 472, 454, 455, 457, 473, 458, 474, 459, 476,
- 478, 461, 463, 464, 465, 479, 480, 482, 466, 467,
- 484, 468, 469, 485, 486, 487, 470, 472, 488, 489,
- 490, 473, 331, 474, 327, 476, 478, 321, 235, 157,
- 126, 479, 480, 482, 105, 37, 484, 36, 7, 485,
- 486, 487, 5, 0, 488, 489, 490, 493, 493, 495,
- 495, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
-
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 492, 492, 492, 492, 492, 492
+ 16, 18, 17, 27, 30, 19, 16, 15, 19, 15,
+ 20, 14, 27, 11, 17, 20, 27, 531, 17, 14,
+
+ 38, 38, 15, 274, 274, 15, 16, 18, 17, 27,
+ 30, 19, 16, 15, 19, 15, 20, 14, 27, 32,
+ 17, 20, 27, 21, 17, 21, 22, 21, 15, 22,
+ 24, 41, 25, 22, 24, 22, 530, 529, 24, 25,
+ 527, 25, 31, 24, 496, 32, 31, 495, 45, 21,
+ 473, 21, 22, 21, 46, 22, 24, 41, 25, 22,
+ 24, 22, 23, 23, 24, 25, 23, 25, 31, 24,
+ 23, 28, 31, 28, 45, 23, 44, 44, 44, 44,
+ 46, 47, 28, 48, 470, 49, 28, 50, 23, 23,
+ 51, 53, 23, 52, 52, 54, 23, 28, 55, 28,
+
+ 56, 23, 26, 57, 59, 60, 26, 47, 28, 48,
+ 26, 49, 28, 50, 61, 26, 51, 53, 26, 52,
+ 52, 54, 62, 63, 55, 64, 56, 456, 26, 57,
+ 59, 60, 26, 65, 66, 429, 26, 67, 68, 69,
+ 61, 26, 428, 68, 26, 29, 70, 71, 62, 63,
+ 73, 64, 74, 29, 75, 29, 76, 72, 77, 65,
+ 66, 29, 80, 67, 68, 69, 72, 427, 29, 68,
+ 81, 29, 70, 71, 426, 82, 73, 83, 74, 29,
+ 75, 29, 76, 72, 77, 84, 79, 29, 80, 86,
+ 87, 88, 72, 79, 29, 85, 81, 85, 90, 91,
+
+ 79, 82, 92, 83, 89, 93, 94, 95, 96, 85,
+ 97, 84, 79, 98, 89, 86, 87, 88, 89, 79,
+ 99, 85, 102, 85, 90, 91, 79, 103, 92, 104,
+ 89, 93, 94, 95, 96, 85, 97, 100, 106, 98,
+ 89, 107, 108, 109, 89, 110, 99, 111, 102, 112,
+ 113, 114, 115, 103, 100, 104, 116, 117, 118, 119,
+ 120, 122, 120, 100, 106, 124, 125, 107, 108, 109,
+ 126, 110, 128, 111, 113, 112, 113, 114, 115, 129,
+ 100, 130, 116, 117, 118, 119, 131, 122, 132, 133,
+ 134, 124, 125, 135, 136, 138, 126, 140, 128, 141,
+
+ 142, 143, 144, 145, 146, 129, 147, 130, 148, 149,
+ 151, 146, 131, 152, 132, 133, 134, 153, 154, 135,
+ 136, 138, 155, 140, 157, 141, 142, 143, 144, 145,
+ 146, 158, 147, 160, 148, 149, 151, 146, 161, 152,
+ 162, 163, 164, 153, 154, 165, 167, 168, 155, 170,
+ 157, 172, 173, 174, 175, 176, 178, 158, 180, 160,
+ 181, 179, 182, 183, 161, 185, 162, 163, 164, 188,
+ 189, 165, 167, 168, 179, 170, 190, 172, 173, 174,
+ 175, 176, 178, 192, 180, 193, 181, 179, 182, 183,
+ 184, 185, 194, 184, 195, 188, 189, 197, 199, 200,
+
+ 179, 201, 190, 203, 204, 205, 206, 208, 209, 192,
+ 210, 193, 211, 212, 213, 214, 184, 216, 194, 184,
+ 195, 217, 218, 197, 199, 200, 215, 201, 215, 203,
+ 204, 205, 206, 208, 209, 219, 210, 220, 211, 212,
+ 213, 214, 221, 216, 222, 225, 226, 217, 218, 222,
+ 227, 228, 215, 229, 215, 230, 231, 232, 234, 235,
+ 236, 219, 238, 220, 239, 240, 241, 244, 221, 245,
+ 222, 225, 226, 246, 247, 222, 227, 228, 248, 229,
+ 250, 230, 231, 232, 234, 235, 236, 251, 238, 252,
+ 239, 240, 241, 244, 253, 245, 254, 255, 256, 246,
+
+ 247, 257, 258, 259, 248, 260, 250, 261, 262, 263,
+ 264, 265, 267, 251, 268, 252, 269, 270, 271, 272,
+ 253, 273, 254, 255, 256, 275, 276, 257, 258, 259,
+ 277, 260, 278, 261, 262, 263, 264, 265, 267, 279,
+ 268, 281, 269, 270, 271, 272, 283, 273, 284, 285,
+ 286, 275, 276, 287, 288, 289, 277, 290, 278, 291,
+ 292, 293, 295, 296, 299, 279, 300, 281, 302, 303,
+ 290, 305, 283, 306, 284, 285, 286, 308, 309, 287,
+ 288, 289, 310, 290, 311, 291, 292, 293, 295, 296,
+ 299, 312, 300, 313, 302, 303, 290, 305, 314, 306,
+
+ 315, 317, 318, 308, 309, 319, 320, 321, 310, 326,
+ 311, 327, 328, 329, 330, 331, 333, 312, 334, 313,
+ 337, 338, 339, 340, 314, 341, 315, 317, 318, 342,
+ 343, 319, 320, 321, 344, 326, 345, 327, 328, 329,
+ 330, 331, 333, 346, 334, 347, 337, 338, 339, 340,
+ 349, 341, 350, 352, 355, 342, 343, 356, 357, 358,
+ 344, 359, 345, 363, 364, 366, 367, 368, 371, 346,
+ 364, 347, 372, 364, 373, 370, 349, 370, 350, 352,
+ 355, 375, 376, 356, 357, 358, 370, 359, 378, 363,
+ 364, 366, 367, 368, 371, 374, 364, 379, 372, 364,
+
+ 373, 382, 374, 383, 385, 374, 390, 375, 376, 392,
+ 393, 395, 396, 397, 378, 398, 399, 404, 405, 407,
+ 408, 374, 401, 379, 401, 409, 411, 382, 374, 383,
+ 385, 374, 390, 401, 412, 392, 393, 395, 396, 397,
+ 413, 398, 399, 404, 405, 407, 408, 417, 418, 419,
+ 420, 409, 411, 422, 423, 424, 425, 430, 431, 432,
+ 412, 433, 434, 436, 437, 438, 413, 439, 440, 441,
+ 442, 443, 444, 417, 418, 419, 420, 445, 446, 422,
+ 423, 424, 425, 430, 431, 432, 448, 433, 434, 436,
+ 437, 438, 449, 439, 440, 441, 442, 443, 444, 450,
+
+ 453, 455, 458, 445, 446, 459, 460, 461, 462, 463,
+ 464, 465, 448, 466, 467, 468, 469, 471, 449, 472,
+ 474, 475, 476, 477, 479, 450, 453, 455, 458, 480,
+ 482, 459, 460, 461, 462, 463, 464, 465, 483, 466,
+ 467, 468, 469, 471, 484, 472, 474, 475, 476, 477,
+ 479, 485, 486, 487, 488, 480, 482, 489, 490, 491,
+ 493, 494, 497, 499, 483, 501, 502, 503, 504, 505,
+ 484, 507, 508, 509, 511, 512, 513, 485, 486, 487,
+ 488, 514, 515, 489, 490, 491, 493, 494, 497, 499,
+ 516, 501, 502, 503, 504, 505, 519, 507, 508, 509,
+
+ 511, 512, 513, 520, 521, 522, 523, 514, 515, 403,
+ 402, 386, 336, 332, 325, 237, 516, 159, 150, 127,
+ 105, 36, 519, 35, 7, 5, 0, 0, 0, 520,
+ 521, 522, 523, 526, 526, 528, 528, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+ 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
+
+ 525, 525, 525
} ;
static yy_state_type yy_last_accepting_state;
@@ -909,8 +936,8 @@ conf_yy_fatal_error(const char *msg)
{
return 0;
}
-#line 913 "config-lexer.c"
-#line 914 "config-lexer.c"
+#line 940 "config-lexer.c"
+#line 941 "config-lexer.c"
#define INITIAL 0
#define IN_COMMENT 1
@@ -1129,7 +1156,7 @@ YY_DECL
#line 88 "config-lexer.l"
-#line 1133 "config-lexer.c"
+#line 1160 "config-lexer.c"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1162,13 +1189,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 493 )
+ if ( yy_current_state >= 526 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 492 );
+ while ( yy_current_state != 525 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1302,357 +1329,357 @@ YY_RULE_SETUP
case 14:
YY_RULE_SETUP
#line 145 "config-lexer.l"
-{ return BLACKLIST; }
+{ return BIND; }
YY_BREAK
case 15:
YY_RULE_SETUP
#line 146 "config-lexer.l"
-{ return CHANNEL; }
+{ return BLACKLIST; }
YY_BREAK
case 16:
YY_RULE_SETUP
#line 147 "config-lexer.l"
-{ return COMMAND_INTERVAL; }
+{ return CHANNEL; }
YY_BREAK
case 17:
YY_RULE_SETUP
#line 148 "config-lexer.l"
-{ return COMMAND_QUEUE_SIZE; }
+{ return COMMAND_INTERVAL; }
YY_BREAK
case 18:
YY_RULE_SETUP
#line 149 "config-lexer.l"
-{ return COMMAND_TIMEOUT; }
+{ return COMMAND_QUEUE_SIZE; }
YY_BREAK
case 19:
YY_RULE_SETUP
#line 150 "config-lexer.l"
-{ return CONNREGEX; }
+{ return COMMAND_TIMEOUT; }
YY_BREAK
case 20:
YY_RULE_SETUP
#line 151 "config-lexer.l"
-{ return DNS_FDLIMIT; }
+{ return CONNREGEX; }
YY_BREAK
case 21:
YY_RULE_SETUP
#line 152 "config-lexer.l"
-{ return DNS_TIMEOUT; }
+{ return DNS_FDLIMIT; }
YY_BREAK
case 22:
YY_RULE_SETUP
#line 153 "config-lexer.l"
-{ return DNSBL_FROM; }
+{ return DNS_TIMEOUT; }
YY_BREAK
case 23:
YY_RULE_SETUP
#line 154 "config-lexer.l"
-{ return DNSBL_TO; }
+{ return DNSBL_FROM; }
YY_BREAK
case 24:
YY_RULE_SETUP
#line 155 "config-lexer.l"
-{ return EXEMPT; }
+{ return DNSBL_TO; }
YY_BREAK
case 25:
YY_RULE_SETUP
#line 156 "config-lexer.l"
-{ return FD; }
+{ return EXEMPT; }
YY_BREAK
case 26:
YY_RULE_SETUP
#line 157 "config-lexer.l"
-{ return INVITE; }
+{ return FD; }
YY_BREAK
case 27:
YY_RULE_SETUP
#line 158 "config-lexer.l"
-{ return IPV4; }
+{ return INVITE; }
YY_BREAK
case 28:
YY_RULE_SETUP
#line 159 "config-lexer.l"
-{ return IPV6; }
+{ return IPV4; }
YY_BREAK
case 29:
YY_RULE_SETUP
#line 160 "config-lexer.l"
-{ return IRC; }
+{ return IPV6; }
YY_BREAK
case 30:
YY_RULE_SETUP
#line 161 "config-lexer.l"
-{ return KLINE; }
+{ return IRC; }
YY_BREAK
case 31:
YY_RULE_SETUP
#line 162 "config-lexer.l"
-{ return KEY; }
+{ return KLINE; }
YY_BREAK
case 32:
YY_RULE_SETUP
#line 163 "config-lexer.l"
-{ return MASK; }
+{ return KEY; }
YY_BREAK
case 33:
YY_RULE_SETUP
#line 164 "config-lexer.l"
-{ return MAX_READ; }
+{ return MASK; }
YY_BREAK
case 34:
YY_RULE_SETUP
#line 165 "config-lexer.l"
-{ return MODE; }
+{ return MAX_READ; }
YY_BREAK
case 35:
YY_RULE_SETUP
#line 166 "config-lexer.l"
-{ return NAME; }
+{ return MODE; }
YY_BREAK
case 36:
YY_RULE_SETUP
#line 167 "config-lexer.l"
-{ return NEGCACHE; }
+{ return NAME; }
YY_BREAK
case 37:
YY_RULE_SETUP
#line 168 "config-lexer.l"
-{ return NEGCACHE_REBUILD; }
+{ return NEGCACHE; }
YY_BREAK
case 38:
YY_RULE_SETUP
#line 169 "config-lexer.l"
-{ return NICK; }
+{ return NEGCACHE_REBUILD; }
YY_BREAK
case 39:
YY_RULE_SETUP
#line 170 "config-lexer.l"
-{ return NICKSERV; }
+{ return NICK; }
YY_BREAK
case 40:
YY_RULE_SETUP
#line 171 "config-lexer.l"
-{ return NOTICE; }
+{ return NICKSERV; }
YY_BREAK
case 41:
YY_RULE_SETUP
#line 172 "config-lexer.l"
-{ return OPER; }
+{ return NOTICE; }
YY_BREAK
case 42:
YY_RULE_SETUP
#line 173 "config-lexer.l"
-{ return OPM; }
+{ return OPER; }
YY_BREAK
case 43:
YY_RULE_SETUP
#line 174 "config-lexer.l"
-{ return OPTIONS; }
+{ return OPM; }
YY_BREAK
case 44:
YY_RULE_SETUP
#line 175 "config-lexer.l"
-{ return PASSWORD; }
+{ return OPTIONS; }
YY_BREAK
case 45:
YY_RULE_SETUP
#line 176 "config-lexer.l"
-{ return PERFORM; }
+{ return PASSWORD; }
YY_BREAK
case 46:
YY_RULE_SETUP
#line 177 "config-lexer.l"
-{ return PIDFILE; }
+{ return PERFORM; }
YY_BREAK
case 47:
YY_RULE_SETUP
#line 178 "config-lexer.l"
-{ return PORT; }
+{ return PIDFILE; }
YY_BREAK
case 48:
YY_RULE_SETUP
#line 179 "config-lexer.l"
-{ return PROTOCOL; }
+{ return PORT; }
YY_BREAK
case 49:
YY_RULE_SETUP
#line 180 "config-lexer.l"
-{ return READTIMEOUT; }
+{ return PROTOCOL; }
YY_BREAK
case 50:
YY_RULE_SETUP
#line 181 "config-lexer.l"
-{ return REALNAME; }
+{ return READTIMEOUT; }
YY_BREAK
case 51:
YY_RULE_SETUP
#line 182 "config-lexer.l"
-{ return RECONNECTINTERVAL; }
+{ return REALNAME; }
YY_BREAK
case 52:
YY_RULE_SETUP
#line 183 "config-lexer.l"
-{ return REPLY; }
+{ return RECONNECTINTERVAL; }
YY_BREAK
case 53:
YY_RULE_SETUP
#line 184 "config-lexer.l"
-{ return SCANLOG; }
+{ return REPLY; }
YY_BREAK
case 54:
YY_RULE_SETUP
#line 185 "config-lexer.l"
-{ return SCANNER; }
+{ return RSA_PRIVATE_KEY_FILE; }
YY_BREAK
case 55:
YY_RULE_SETUP
#line 186 "config-lexer.l"
-{ return SENDMAIL; }
+{ return SCANLOG; }
YY_BREAK
case 56:
YY_RULE_SETUP
#line 187 "config-lexer.l"
-{ return SERVER; }
+{ return SCANNER; }
YY_BREAK
case 57:
YY_RULE_SETUP
#line 188 "config-lexer.l"
-{ return TARGET_IP; }
+{ return SENDMAIL; }
YY_BREAK
case 58:
YY_RULE_SETUP
#line 189 "config-lexer.l"
-{ return TARGET_PORT; }
+{ return SERVER; }
YY_BREAK
case 59:
YY_RULE_SETUP
#line 190 "config-lexer.l"
-{ return TARGET_STRING;}
+{ return TARGET_IP; }
YY_BREAK
case 60:
YY_RULE_SETUP
#line 191 "config-lexer.l"
-{ return TIMEOUT; }
+{ return TARGET_PORT; }
YY_BREAK
case 61:
YY_RULE_SETUP
#line 192 "config-lexer.l"
-{ return TLS; }
+{ return TARGET_STRING;}
YY_BREAK
case 62:
YY_RULE_SETUP
#line 193 "config-lexer.l"
-{ return TLS_HOSTNAME_VERIFICATION; }
+{ return TIMEOUT; }
YY_BREAK
case 63:
YY_RULE_SETUP
#line 194 "config-lexer.l"
-{ return TYPE; }
+{ return TLS; }
YY_BREAK
case 64:
YY_RULE_SETUP
#line 195 "config-lexer.l"
-{ return USER; }
+{ return TLS_CERTIFICATE_FILE; }
YY_BREAK
case 65:
YY_RULE_SETUP
#line 196 "config-lexer.l"
-{ return USERNAME; }
+{ return TLS_HOSTNAME_VERIFICATION; }
YY_BREAK
case 66:
YY_RULE_SETUP
#line 197 "config-lexer.l"
-{ return VHOST; }
+{ return TYPE; }
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 199 "config-lexer.l"
-{ return YEARS; }
+#line 198 "config-lexer.l"
+{ return USER; }
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 200 "config-lexer.l"
-{ return YEARS; }
+#line 199 "config-lexer.l"
+{ return USERNAME; }
YY_BREAK
case 69:
YY_RULE_SETUP
#line 201 "config-lexer.l"
-{ return MONTHS; }
+{ return YEARS; }
YY_BREAK
case 70:
YY_RULE_SETUP
#line 202 "config-lexer.l"
-{ return MONTHS; }
+{ return YEARS; }
YY_BREAK
case 71:
YY_RULE_SETUP
#line 203 "config-lexer.l"
-{ return WEEKS; }
+{ return MONTHS; }
YY_BREAK
case 72:
YY_RULE_SETUP
#line 204 "config-lexer.l"
-{ return WEEKS; }
+{ return MONTHS; }
YY_BREAK
case 73:
YY_RULE_SETUP
#line 205 "config-lexer.l"
-{ return DAYS; }
+{ return WEEKS; }
YY_BREAK
case 74:
YY_RULE_SETUP
#line 206 "config-lexer.l"
-{ return DAYS; }
+{ return WEEKS; }
YY_BREAK
case 75:
YY_RULE_SETUP
#line 207 "config-lexer.l"
-{ return HOURS; }
+{ return DAYS; }
YY_BREAK
case 76:
YY_RULE_SETUP
#line 208 "config-lexer.l"
-{ return HOURS; }
+{ return DAYS; }
YY_BREAK
case 77:
YY_RULE_SETUP
#line 209 "config-lexer.l"
-{ return MINUTES; }
+{ return HOURS; }
YY_BREAK
case 78:
YY_RULE_SETUP
#line 210 "config-lexer.l"
-{ return MINUTES; }
+{ return HOURS; }
YY_BREAK
case 79:
YY_RULE_SETUP
#line 211 "config-lexer.l"
-{ return SECONDS; }
+{ return MINUTES; }
YY_BREAK
case 80:
YY_RULE_SETUP
#line 212 "config-lexer.l"
-{ return SECONDS; }
+{ return MINUTES; }
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 214 "config-lexer.l"
-{ return BYTES; }
+#line 213 "config-lexer.l"
+{ return SECONDS; }
YY_BREAK
case 82:
YY_RULE_SETUP
-#line 215 "config-lexer.l"
-{ return BYTES; }
+#line 214 "config-lexer.l"
+{ return SECONDS; }
YY_BREAK
case 83:
YY_RULE_SETUP
#line 216 "config-lexer.l"
-{ return KBYTES; }
+{ return BYTES; }
YY_BREAK
case 84:
YY_RULE_SETUP
#line 217 "config-lexer.l"
-{ return KBYTES; }
+{ return BYTES; }
YY_BREAK
case 85:
YY_RULE_SETUP
@@ -1672,12 +1699,12 @@ YY_RULE_SETUP
case 88:
YY_RULE_SETUP
#line 221 "config-lexer.l"
-{ return MBYTES; }
+{ return KBYTES; }
YY_BREAK
case 89:
YY_RULE_SETUP
#line 222 "config-lexer.l"
-{ return MBYTES; }
+{ return KBYTES; }
YY_BREAK
case 90:
YY_RULE_SETUP
@@ -1696,147 +1723,157 @@ YY_RULE_SETUP
YY_BREAK
case 93:
YY_RULE_SETUP
+#line 226 "config-lexer.l"
+{ return MBYTES; }
+ YY_BREAK
+case 94:
+YY_RULE_SETUP
#line 227 "config-lexer.l"
+{ return MBYTES; }
+ YY_BREAK
+case 95:
+YY_RULE_SETUP
+#line 229 "config-lexer.l"
{
yylval.number = OPM_TYPE_HTTP;
return PROTOCOLTYPE;
}
YY_BREAK
-case 94:
+case 96:
YY_RULE_SETUP
-#line 232 "config-lexer.l"
+#line 234 "config-lexer.l"
{
yylval.number = OPM_TYPE_HTTPPOST;
return PROTOCOLTYPE;
}
YY_BREAK
-case 95:
+case 97:
YY_RULE_SETUP
-#line 237 "config-lexer.l"
+#line 239 "config-lexer.l"
{
yylval.number = OPM_TYPE_HTTPS;
return PROTOCOLTYPE;
}
YY_BREAK
-case 96:
+case 98:
YY_RULE_SETUP
-#line 242 "config-lexer.l"
+#line 244 "config-lexer.l"
{
yylval.number = OPM_TYPE_HTTPSPOST;
return PROTOCOLTYPE;
}
YY_BREAK
-case 97:
+case 99:
YY_RULE_SETUP
-#line 247 "config-lexer.l"
+#line 249 "config-lexer.l"
{
yylval.number = OPM_TYPE_SOCKS4;
return PROTOCOLTYPE;
}
YY_BREAK
-case 98:
+case 100:
YY_RULE_SETUP
-#line 252 "config-lexer.l"
+#line 254 "config-lexer.l"
{
yylval.number = OPM_TYPE_SOCKS5;
return PROTOCOLTYPE;
}
YY_BREAK
-case 99:
+case 101:
YY_RULE_SETUP
-#line 257 "config-lexer.l"
+#line 259 "config-lexer.l"
{
yylval.number = OPM_TYPE_WINGATE;
return PROTOCOLTYPE;
}
YY_BREAK
-case 100:
+case 102:
YY_RULE_SETUP
-#line 262 "config-lexer.l"
+#line 264 "config-lexer.l"
{
yylval.number = OPM_TYPE_ROUTER;
return PROTOCOLTYPE;
}
YY_BREAK
-case 101:
+case 103:
YY_RULE_SETUP
-#line 267 "config-lexer.l"
+#line 269 "config-lexer.l"
{
yylval.number = OPM_TYPE_DREAMBOX;
return PROTOCOLTYPE;
}
YY_BREAK
-case 102:
+case 104:
YY_RULE_SETUP
-#line 273 "config-lexer.l"
+#line 275 "config-lexer.l"
{
yylval.number = OPM_TYPE_SSH;
return PROTOCOLTYPE;
}
YY_BREAK
-case 103:
+case 105:
YY_RULE_SETUP
-#line 278 "config-lexer.l"
+#line 280 "config-lexer.l"
{
yylval.number=1;
return NUMBER;
}
YY_BREAK
-case 104:
+case 106:
YY_RULE_SETUP
-#line 282 "config-lexer.l"
+#line 284 "config-lexer.l"
{
yylval.number=1;
return NUMBER;
}
YY_BREAK
-case 105:
+case 107:
YY_RULE_SETUP
-#line 286 "config-lexer.l"
+#line 288 "config-lexer.l"
{
yylval.number=1;
return NUMBER;
}
YY_BREAK
-case 106:
+case 108:
YY_RULE_SETUP
-#line 293 "config-lexer.l"
+#line 295 "config-lexer.l"
{
yylval.number=0;
return NUMBER;
}
YY_BREAK
-case 107:
+case 109:
YY_RULE_SETUP
-#line 298 "config-lexer.l"
+#line 300 "config-lexer.l"
{
yylval.number=0;
return NUMBER;
}
YY_BREAK
-case 108:
+case 110:
YY_RULE_SETUP
-#line 303 "config-lexer.l"
+#line 305 "config-lexer.l"
{
yylval.number=0;
return NUMBER;
}
YY_BREAK
-case 109:
+case 111:
YY_RULE_SETUP
-#line 308 "config-lexer.l"
+#line 310 "config-lexer.l"
{ return yytext[0]; }
YY_BREAK
case YY_STATE_EOF(INITIAL):
-#line 309 "config-lexer.l"
+#line 311 "config-lexer.l"
{ if (conf_eof()) yyterminate(); }
YY_BREAK
-case 110:
+case 112:
YY_RULE_SETUP
-#line 311 "config-lexer.l"
+#line 313 "config-lexer.l"
ECHO;
YY_BREAK
-#line 1840 "config-lexer.c"
+#line 1877 "config-lexer.c"
case YY_END_OF_BUFFER:
{
@@ -2132,7 +2169,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 493 )
+ if ( yy_current_state >= 526 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2160,11 +2197,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 493 )
+ if ( yy_current_state >= 526 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 492);
+ yy_is_jam = (yy_current_state == 525);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2803,7 +2840,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 311 "config-lexer.l"
+#line 313 "config-lexer.l"
static void
diff --git a/src/config-lexer.l b/src/config-lexer.l
index 58fa98e..e7a9afc 100644
--- a/src/config-lexer.l
+++ b/src/config-lexer.l
@@ -142,6 +142,7 @@ include \.include{WS}(\<.*\>|\".*\")
ADDRESS_FAMILY { return ADDRESS_FAMILY; }
AWAY { return AWAY; }
BAN_UNKNOWN { return BAN_UNKNOWN; }
+BIND { return BIND; }
BLACKLIST { return BLACKLIST; }
CHANNEL { return CHANNEL; }
COMMAND_INTERVAL { return COMMAND_INTERVAL; }
@@ -181,6 +182,7 @@ READTIMEOUT { return READTIMEOUT; }
REALNAME { return REALNAME; }
RECONNECTINTERVAL { return RECONNECTINTERVAL; }
REPLY { return REPLY; }
+RSA_PRIVATE_KEY_FILE { return RSA_PRIVATE_KEY_FILE; }
SCANLOG { return SCANLOG; }
SCANNER { return SCANNER; }
SENDMAIL { return SENDMAIL; }
@@ -190,11 +192,11 @@ TARGET_PORT { return TARGET_PORT; }
TARGET_STRING { return TARGET_STRING;}
TIMEOUT { return TIMEOUT; }
TLS { return TLS; }
+TLS_CERTIFICATE_FILE { return TLS_CERTIFICATE_FILE; }
TLS_HOSTNAME_VERIFICATION { return TLS_HOSTNAME_VERIFICATION; }
TYPE { return TYPE; }
USER { return USER; }
USERNAME { return USERNAME; }
-VHOST { return VHOST; }
years { return YEARS; }
year { return YEARS; }
diff --git a/src/config-parser.c b/src/config-parser.c
index 221da4b..f9802a4 100644
--- a/src/config-parser.c
+++ b/src/config-parser.c
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.3.2. */
+/* A Bison parser, made by GNU Bison 3.5.1. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -48,7 +48,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.3.2"
+#define YYBISON_VERSION "3.5.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -66,7 +66,7 @@
/* First part of user prologue. */
-#line 21 "config-parser.y" /* yacc.c:337 */
+#line 21 "config-parser.y"
#include <string.h>
@@ -78,7 +78,17 @@ int yylex(void);
static void *tmp; /* Variable to temporarily hold nodes before insertion to list */
-#line 82 "config-parser.c" /* yacc.c:337 */
+#line 82 "config-parser.c"
+
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
# ifndef YY_NULLPTR
# if defined __cplusplus
# if 201103L <= __cplusplus
@@ -99,8 +109,8 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis
# define YYERROR_VERBOSE 0
#endif
-/* In a future release of Bison, this section will be replaced
- by #include "y.tab.h". */
+/* Use api.header.include to #include this header
+ instead of duplicating it here. */
#ifndef YY_YY_CONFIG_PARSER_H_INCLUDED
# define YY_YY_CONFIG_PARSER_H_INCLUDED
/* Debug traces. */
@@ -119,158 +129,161 @@ extern int yydebug;
ADDRESS_FAMILY = 258,
AWAY = 259,
BAN_UNKNOWN = 260,
- BLACKLIST = 261,
- BYTES = 262,
- KBYTES = 263,
- MBYTES = 264,
- CHANNEL = 265,
- COMMAND_INTERVAL = 266,
- COMMAND_QUEUE_SIZE = 267,
- COMMAND_TIMEOUT = 268,
- CONNREGEX = 269,
- DNS_FDLIMIT = 270,
- DNS_TIMEOUT = 271,
- DNSBL_FROM = 272,
- DNSBL_TO = 273,
- EXEMPT = 274,
- FD = 275,
- INVITE = 276,
- IPV4 = 277,
- IPV6 = 278,
- IRC = 279,
- KLINE = 280,
- KEY = 281,
- MASK = 282,
- MAX_READ = 283,
- MODE = 284,
- NAME = 285,
- NEGCACHE = 286,
- NEGCACHE_REBUILD = 287,
- NICK = 288,
- NICKSERV = 289,
- NOTICE = 290,
- OPER = 291,
- OPM = 292,
- OPTIONS = 293,
- PASSWORD = 294,
- PERFORM = 295,
- PIDFILE = 296,
- PORT = 297,
- PROTOCOL = 298,
- READTIMEOUT = 299,
- REALNAME = 300,
- RECONNECTINTERVAL = 301,
- REPLY = 302,
- SCANLOG = 303,
- SCANNER = 304,
- SECONDS = 305,
- MINUTES = 306,
- HOURS = 307,
- DAYS = 308,
- WEEKS = 309,
- MONTHS = 310,
- YEARS = 311,
- SENDMAIL = 312,
- SERVER = 313,
- TARGET_IP = 314,
- TARGET_PORT = 315,
- TARGET_STRING = 316,
- TIMEOUT = 317,
- TLS = 318,
- TLS_HOSTNAME_VERIFICATION = 319,
- TYPE = 320,
- USERNAME = 321,
- USER = 322,
- VHOST = 323,
- NUMBER = 324,
- STRING = 325,
- PROTOCOLTYPE = 326
+ BIND = 261,
+ BLACKLIST = 262,
+ BYTES = 263,
+ KBYTES = 264,
+ MBYTES = 265,
+ CHANNEL = 266,
+ COMMAND_INTERVAL = 267,
+ COMMAND_QUEUE_SIZE = 268,
+ COMMAND_TIMEOUT = 269,
+ CONNREGEX = 270,
+ DNS_FDLIMIT = 271,
+ DNS_TIMEOUT = 272,
+ DNSBL_FROM = 273,
+ DNSBL_TO = 274,
+ EXEMPT = 275,
+ FD = 276,
+ INVITE = 277,
+ IPV4 = 278,
+ IPV6 = 279,
+ IRC = 280,
+ KLINE = 281,
+ KEY = 282,
+ MASK = 283,
+ MAX_READ = 284,
+ MODE = 285,
+ NAME = 286,
+ NEGCACHE = 287,
+ NEGCACHE_REBUILD = 288,
+ NICK = 289,
+ NICKSERV = 290,
+ NOTICE = 291,
+ OPER = 292,
+ OPM = 293,
+ OPTIONS = 294,
+ PASSWORD = 295,
+ PERFORM = 296,
+ PIDFILE = 297,
+ PORT = 298,
+ PROTOCOL = 299,
+ RSA_PRIVATE_KEY_FILE = 300,
+ READTIMEOUT = 301,
+ REALNAME = 302,
+ RECONNECTINTERVAL = 303,
+ REPLY = 304,
+ SCANLOG = 305,
+ SCANNER = 306,
+ SECONDS = 307,
+ MINUTES = 308,
+ HOURS = 309,
+ DAYS = 310,
+ WEEKS = 311,
+ MONTHS = 312,
+ YEARS = 313,
+ SENDMAIL = 314,
+ SERVER = 315,
+ TARGET_IP = 316,
+ TARGET_PORT = 317,
+ TARGET_STRING = 318,
+ TIMEOUT = 319,
+ TLS = 320,
+ TLS_CERTIFICATE_FILE = 321,
+ TLS_HOSTNAME_VERIFICATION = 322,
+ TYPE = 323,
+ USERNAME = 324,
+ USER = 325,
+ NUMBER = 326,
+ STRING = 327,
+ PROTOCOLTYPE = 328
};
#endif
/* Tokens. */
#define ADDRESS_FAMILY 258
#define AWAY 259
#define BAN_UNKNOWN 260
-#define BLACKLIST 261
-#define BYTES 262
-#define KBYTES 263
-#define MBYTES 264
-#define CHANNEL 265
-#define COMMAND_INTERVAL 266
-#define COMMAND_QUEUE_SIZE 267
-#define COMMAND_TIMEOUT 268
-#define CONNREGEX 269
-#define DNS_FDLIMIT 270
-#define DNS_TIMEOUT 271
-#define DNSBL_FROM 272
-#define DNSBL_TO 273
-#define EXEMPT 274
-#define FD 275
-#define INVITE 276
-#define IPV4 277
-#define IPV6 278
-#define IRC 279
-#define KLINE 280
-#define KEY 281
-#define MASK 282
-#define MAX_READ 283
-#define MODE 284
-#define NAME 285
-#define NEGCACHE 286
-#define NEGCACHE_REBUILD 287
-#define NICK 288
-#define NICKSERV 289
-#define NOTICE 290
-#define OPER 291
-#define OPM 292
-#define OPTIONS 293
-#define PASSWORD 294
-#define PERFORM 295
-#define PIDFILE 296
-#define PORT 297
-#define PROTOCOL 298
-#define READTIMEOUT 299
-#define REALNAME 300
-#define RECONNECTINTERVAL 301
-#define REPLY 302
-#define SCANLOG 303
-#define SCANNER 304
-#define SECONDS 305
-#define MINUTES 306
-#define HOURS 307
-#define DAYS 308
-#define WEEKS 309
-#define MONTHS 310
-#define YEARS 311
-#define SENDMAIL 312
-#define SERVER 313
-#define TARGET_IP 314
-#define TARGET_PORT 315
-#define TARGET_STRING 316
-#define TIMEOUT 317
-#define TLS 318
-#define TLS_HOSTNAME_VERIFICATION 319
-#define TYPE 320
-#define USERNAME 321
-#define USER 322
-#define VHOST 323
-#define NUMBER 324
-#define STRING 325
-#define PROTOCOLTYPE 326
+#define BIND 261
+#define BLACKLIST 262
+#define BYTES 263
+#define KBYTES 264
+#define MBYTES 265
+#define CHANNEL 266
+#define COMMAND_INTERVAL 267
+#define COMMAND_QUEUE_SIZE 268
+#define COMMAND_TIMEOUT 269
+#define CONNREGEX 270
+#define DNS_FDLIMIT 271
+#define DNS_TIMEOUT 272
+#define DNSBL_FROM 273
+#define DNSBL_TO 274
+#define EXEMPT 275
+#define FD 276
+#define INVITE 277
+#define IPV4 278
+#define IPV6 279
+#define IRC 280
+#define KLINE 281
+#define KEY 282
+#define MASK 283
+#define MAX_READ 284
+#define MODE 285
+#define NAME 286
+#define NEGCACHE 287
+#define NEGCACHE_REBUILD 288
+#define NICK 289
+#define NICKSERV 290
+#define NOTICE 291
+#define OPER 292
+#define OPM 293
+#define OPTIONS 294
+#define PASSWORD 295
+#define PERFORM 296
+#define PIDFILE 297
+#define PORT 298
+#define PROTOCOL 299
+#define RSA_PRIVATE_KEY_FILE 300
+#define READTIMEOUT 301
+#define REALNAME 302
+#define RECONNECTINTERVAL 303
+#define REPLY 304
+#define SCANLOG 305
+#define SCANNER 306
+#define SECONDS 307
+#define MINUTES 308
+#define HOURS 309
+#define DAYS 310
+#define WEEKS 311
+#define MONTHS 312
+#define YEARS 313
+#define SENDMAIL 314
+#define SERVER 315
+#define TARGET_IP 316
+#define TARGET_PORT 317
+#define TARGET_STRING 318
+#define TIMEOUT 319
+#define TLS 320
+#define TLS_CERTIFICATE_FILE 321
+#define TLS_HOSTNAME_VERIFICATION 322
+#define TYPE 323
+#define USERNAME 324
+#define USER 325
+#define NUMBER 326
+#define STRING 327
+#define PROTOCOLTYPE 328
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 93 "config-parser.y" /* yacc.c:352 */
+#line 95 "config-parser.y"
int number;
char *string;
-#line 272 "config-parser.c" /* yacc.c:352 */
-};
+#line 285 "config-parser.c"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
@@ -289,28 +302,75 @@ int yyparse (void);
# undef short
#endif
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+ <limits.h> and (if available) <stdint.h> are included
+ so that the code can choose integer types of a good width. */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_STDINT_H
+# endif
#endif
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+ signed or unsigned integer of at least N bits. In tables they can
+ save space and decrease cache pressure. Promoting to a signed type
+ helps avoid bugs in integer arithmetic. */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
#else
-typedef unsigned short yytype_uint16;
+typedef short yytype_int16;
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
+#else
+typedef short yytype_uint8;
#endif
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
#else
-typedef short yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+# define YYPTRDIFF_T __PTRDIFF_TYPE__
+# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+# ifndef ptrdiff_t
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYPTRDIFF_T ptrdiff_t
+# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+# define YYPTRDIFF_T long
+# define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
#endif
#ifndef YYSIZE_T
@@ -318,7 +378,7 @@ typedef short yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
@@ -326,7 +386,19 @@ typedef short yytype_int16;
# endif
#endif
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM \
+ YY_CAST (YYPTRDIFF_T, \
+ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
+ ? YYPTRDIFF_MAXIMUM \
+ : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations. */
+typedef int yy_state_fast_t;
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
@@ -340,22 +412,20 @@ typedef short yytype_int16;
# endif
#endif
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__ \
- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
# else
-# define YY_ATTRIBUTE(Spec) /* empty */
+# define YY_ATTRIBUTE_PURE
# endif
#endif
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
-#endif
-
#ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+# define YY_ATTRIBUTE_UNUSED
+# endif
#endif
/* Suppress unused-variable warnings by "using" E. */
@@ -367,11 +437,11 @@ typedef short yytype_int16;
#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
- _Pragma ("GCC diagnostic push") \
- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
_Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
@@ -384,6 +454,20 @@ typedef short yytype_int16;
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
#if ! defined yyoverflow || YYERROR_VERBOSE
@@ -460,17 +544,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss_alloc;
+ yy_state_t yyss_alloc;
YYSTYPE yyvs_alloc;
};
/* The size of the maximum gap between one aligned stack and the next. */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
# define YYCOPY_NEEDED 1
@@ -483,11 +567,11 @@ union yyalloc
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
- YYSIZE_T yynewbytes; \
+ YYPTRDIFF_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
+ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / YYSIZEOF (*yyptr); \
} \
while (0)
@@ -499,12 +583,12 @@ union yyalloc
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
# else
# define YYCOPY(Dst, Src, Count) \
do \
{ \
- YYSIZE_T yyi; \
+ YYPTRDIFF_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
@@ -516,42 +600,43 @@ union yyalloc
/* YYFINAL -- State number of the termination state. */
#define YYFINAL 2
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 355
+#define YYLAST 374
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 78
+#define YYNTOKENS 80
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 92
+#define YYNNTS 94
/* YYNRULES -- Number of rules. */
-#define YYNRULES 174
+#define YYNRULES 178
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 380
+#define YYNSTATES 390
#define YYUNDEFTOK 2
-#define YYMAXUTOK 326
+#define YYMAXUTOK 328
+
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, with out-of-bounds checking. */
#define YYTRANSLATE(YYX) \
- ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex. */
-static const yytype_uint8 yytranslate[] =
+static const yytype_int8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 77, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 76, 74,
- 2, 75, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 79, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 78, 76,
+ 2, 77, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 72, 2, 73, 2, 2, 2, 2,
+ 2, 2, 2, 74, 2, 75, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -571,31 +656,31 @@ static const yytype_uint8 yytranslate[] =
35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71
+ 65, 66, 67, 68, 69, 70, 71, 72, 73
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
-static const yytype_uint16 yyrline[] =
-{
- 0, 108, 108, 109, 112, 113, 114, 115, 116, 117,
- 119, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 130, 130, 131, 132, 133, 134, 139, 141, 142, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 155,
- 160, 165, 171, 176, 181, 187, 192, 197, 204, 206,
- 207, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 231, 237, 243, 249, 255, 261, 267, 273,
- 278, 283, 288, 293, 298, 303, 308, 314, 320, 326,
- 332, 341, 341, 354, 355, 357, 358, 359, 361, 369,
- 377, 388, 388, 398, 399, 401, 402, 403, 405, 412,
- 422, 422, 457, 458, 460, 461, 462, 463, 464, 465,
- 466, 467, 468, 469, 471, 479, 487, 495, 508, 515,
- 522, 529, 536, 552, 554, 555, 557, 558, 559, 560,
- 561, 563, 569, 575, 584, 584, 600, 601, 603, 604,
- 605, 606, 607, 608, 609, 611, 620, 619, 627, 627,
- 628, 633, 640, 648, 660, 667, 669, 670, 672, 686,
- 688, 689, 691, 692, 694
+static const yytype_int16 yyrline[] =
+{
+ 0, 110, 110, 111, 114, 115, 116, 117, 118, 119,
+ 121, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 132, 132, 133, 134, 135, 136, 141, 143, 144, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 157,
+ 162, 167, 173, 178, 183, 189, 194, 199, 206, 208,
+ 209, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 235, 241, 247, 253, 259, 265,
+ 271, 277, 282, 287, 292, 297, 304, 310, 315, 320,
+ 325, 331, 337, 343, 349, 358, 358, 371, 372, 374,
+ 375, 376, 378, 386, 394, 405, 405, 415, 416, 418,
+ 419, 420, 422, 429, 439, 439, 474, 475, 477, 478,
+ 479, 480, 481, 482, 483, 484, 485, 486, 488, 496,
+ 504, 512, 525, 532, 539, 546, 553, 569, 571, 572,
+ 574, 575, 576, 577, 578, 580, 586, 592, 601, 601,
+ 617, 618, 620, 621, 622, 623, 624, 625, 626, 628,
+ 637, 636, 644, 644, 645, 650, 657, 665, 677, 684,
+ 686, 687, 689, 703, 705, 706, 708, 709, 711
};
#endif
@@ -605,32 +690,34 @@ static const yytype_uint16 yyrline[] =
static const char *const yytname[] =
{
"$end", "error", "$undefined", "ADDRESS_FAMILY", "AWAY", "BAN_UNKNOWN",
- "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL", "COMMAND_INTERVAL",
- "COMMAND_QUEUE_SIZE", "COMMAND_TIMEOUT", "CONNREGEX", "DNS_FDLIMIT",
- "DNS_TIMEOUT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE",
- "IPV4", "IPV6", "IRC", "KLINE", "KEY", "MASK", "MAX_READ", "MODE",
- "NAME", "NEGCACHE", "NEGCACHE_REBUILD", "NICK", "NICKSERV", "NOTICE",
- "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", "PORT",
- "PROTOCOL", "READTIMEOUT", "REALNAME", "RECONNECTINTERVAL", "REPLY",
- "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS", "DAYS", "WEEKS",
- "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP", "TARGET_PORT",
- "TARGET_STRING", "TIMEOUT", "TLS", "TLS_HOSTNAME_VERIFICATION", "TYPE",
- "USERNAME", "USER", "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'",
- "'}'", "';'", "'='", "':'", "','", "$accept", "config", "config_items",
- "timespec_", "timespec", "sizespec_", "sizespec", "options_entry",
- "options_items", "options_item", "options_negcache",
- "options_negcache_rebuild", "options_pidfile", "options_dns_fdlimit",
- "options_dns_timeout", "options_scanlog", "options_command_queue_size",
+ "BIND", "BLACKLIST", "BYTES", "KBYTES", "MBYTES", "CHANNEL",
+ "COMMAND_INTERVAL", "COMMAND_QUEUE_SIZE", "COMMAND_TIMEOUT", "CONNREGEX",
+ "DNS_FDLIMIT", "DNS_TIMEOUT", "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD",
+ "INVITE", "IPV4", "IPV6", "IRC", "KLINE", "KEY", "MASK", "MAX_READ",
+ "MODE", "NAME", "NEGCACHE", "NEGCACHE_REBUILD", "NICK", "NICKSERV",
+ "NOTICE", "OPER", "OPM", "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE",
+ "PORT", "PROTOCOL", "RSA_PRIVATE_KEY_FILE", "READTIMEOUT", "REALNAME",
+ "RECONNECTINTERVAL", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES",
+ "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER",
+ "TARGET_IP", "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TLS",
+ "TLS_CERTIFICATE_FILE", "TLS_HOSTNAME_VERIFICATION", "TYPE", "USERNAME",
+ "USER", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='",
+ "':'", "','", "$accept", "config", "config_items", "timespec_",
+ "timespec", "sizespec_", "sizespec", "options_entry", "options_items",
+ "options_item", "options_negcache", "options_negcache_rebuild",
+ "options_pidfile", "options_dns_fdlimit", "options_dns_timeout",
+ "options_scanlog", "options_command_queue_size",
"options_command_interval", "options_command_timeout", "irc_entry",
"irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
"irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_notice",
- "irc_port", "irc_tls", "irc_tls_hostname_verification",
+ "irc_port", "irc_tls", "irc_rsa_private_key_file",
+ "irc_tls_certificate_file", "irc_tls_hostname_verification",
"irc_readtimeout", "irc_reconnectinterval", "irc_realname", "irc_server",
- "irc_username", "irc_vhost", "irc_connregex", "channel_entry", "$@1",
+ "irc_username", "irc_bind", "irc_connregex", "channel_entry", "$@1",
"channel_items", "channel_item", "channel_name", "channel_key",
"channel_invite", "user_entry", "$@2", "user_items", "user_item",
"user_mask", "user_scanner", "scanner_entry", "$@3", "scanner_items",
- "scanner_item", "scanner_name", "scanner_vhost", "scanner_target_ip",
+ "scanner_item", "scanner_name", "scanner_bind", "scanner_target_ip",
"scanner_target_string", "scanner_fd", "scanner_target_port",
"scanner_timeout", "scanner_max_read", "scanner_protocol", "opm_entry",
"opm_items", "opm_item", "opm_dnsbl_from", "opm_dnsbl_to",
@@ -646,7 +733,7 @@ static const char *const yytname[] =
# ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
@@ -655,62 +742,63 @@ static const yytype_uint16 yytoknum[] =
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
- 325, 326, 123, 125, 59, 61, 58, 44
+ 325, 326, 327, 328, 123, 125, 59, 61, 58, 44
};
# endif
-#define YYPACT_NINF -304
+#define YYPACT_NINF (-209)
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-304)))
+#define yypact_value_is_default(Yyn) \
+ ((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF -145
+#define YYTABLE_NINF (-149)
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -304, 164, -304, -65, -56, -52, -48, -304, -304, -304,
- -304, -37, -304, -6, -304, -304, 10, 123, 83, 183,
- -23, -22, -304, -13, 4, -304, -304, -304, -5, 1,
- 7, 11, 17, 18, 20, 27, 28, 29, 33, 34,
- 36, 39, 41, 43, 47, 50, 51, 0, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, 59,
- -304, 56, 60, 61, 73, -304, -304, -304, -304, -304,
- 69, -304, 63, 66, 68, 70, 74, 75, 78, 79,
- 85, 40, -304, -304, -304, -304, -304, -304, -304, -304,
- -304, -304, 93, 150, 64, 92, -304, 101, 103, 104,
- 106, 107, 112, 115, 120, 122, 127, 131, 134, 135,
- 134, 136, 138, 139, 146, 147, 98, -304, 132, 149,
- 151, 152, 153, -304, 148, 134, 154, 134, 156, 134,
- 134, 134, 158, 159, 172, -304, -304, 155, 173, 5,
- -304, -304, -304, -304, 174, 175, 177, 178, 179, 180,
- 181, 184, 185, 37, -304, -304, -304, -304, -304, -304,
- -304, -304, -304, -304, 187, -304, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 182, 199, 200,
- 201, 202, 203, 204, 205, 206, -304, -18, 207, 208,
- 209, -304, 114, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, -304, 223, 224, 221, -304, 157, 227, 228,
- 176, 229, 231, 232, 134, 233, 230, -304, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, -304,
- 134, 134, 134, 134, 134, 134, 134, -304, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, 222, 226, 234,
- 102, -304, -304, -304, -304, -304, -304, -304, -304, -304,
- 235, 236, 237, 186, 238, 82, -304, -304, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, -304,
- -304, -304, 240, 241, -304, 242, 52, 243, 244, 245,
- 246, 248, 249, 250, 251, -304, -304, -304, -304, -304,
- -304, -304, -304, 256, 257, 258, 255, -304, 259, 239,
- 260, 261, 263, 265, 262, -304, -304, -304, -304, 227,
- 227, 227, -304, -304, -304, -304, 264, -304, -304, -304,
- -304, -304, 266, 267, 268, -304, 25, 269, 270, 271,
- 272, -60, -304, 274, -304, -304, -304, -304, 275, -304,
- -304, -304, -304, -304, -59, -304, -304, -304, -304, 276,
- 277, -304, -304, -304, -304, 25, 278, -304, -304, -304
+ -209, 77, -209, -69, -67, -61, -49, -209, -209, -209,
+ -209, -28, -209, -7, -209, -209, 63, 116, 71, 183,
+ -25, -17, -209, 10, 30, -209, -209, -209, 15, 23,
+ 27, 41, 42, 44, 49, 59, 60, 61, 62, 64,
+ 66, 67, 68, 70, 72, 96, 97, 98, 101, 0,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, 75, -209, 102, 110, 112, 9, -209,
+ -209, -209, -209, -209, 92, -209, 114, 117, 121, 124,
+ 125, 127, 135, 136, 137, 38, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, 31, 159, 36, 78,
+ -209, 120, 145, 146, 147, 154, 155, 156, 157, 158,
+ 160, 162, 122, 163, 165, 166, 165, 167, 169, 170,
+ 172, 173, 161, -209, 174, 175, 177, 178, 168, -209,
+ 179, 165, 180, 165, 181, 165, 165, 165, 182, 184,
+ 185, -209, -209, 164, 186, 28, -209, -209, -209, -209,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 32,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ 197, -209, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 153, 211, 212, 213, 214,
+ 215, 216, 217, 218, -209, -19, 219, 220, 221, -209,
+ 109, 222, 223, 224, 225, 226, 227, 228, 229, 230,
+ -209, 235, 236, 233, -209, 238, 240, 241, 242, 243,
+ 245, 244, 246, 165, 237, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ 165, 165, 165, 165, 165, 165, 165, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, 247, 248, 249,
+ -13, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ 250, 251, 252, 256, 254, 80, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, 257, 258, -209, 259, 260, 115, 261, 262,
+ 263, 264, 266, 267, 268, -209, -209, -209, -209, -209,
+ -209, -209, -209, 273, 274, 275, 272, -209, 255, 278,
+ 279, 280, 282, 283, 281, -209, -209, -209, -209, -209,
+ 241, 241, 241, -209, -209, -209, -209, 285, -209, -209,
+ -209, -209, 284, 286, 287, -209, 50, 288, 289, 290,
+ 277, -51, -209, 291, -209, -209, -209, -209, 292, -209,
+ -209, -209, -209, -209, 22, -209, -209, -209, -209, 297,
+ 294, -209, -209, -209, -209, 50, 295, -209, -209, -209
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -718,74 +806,75 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 2, 101, 1, 0, 0, 0, 0, 3, 5, 4,
+ 2, 105, 1, 0, 0, 0, 0, 3, 5, 4,
7, 0, 8, 0, 6, 9, 0, 0, 0, 0,
- 0, 0, 173, 0, 0, 171, 172, 71, 0, 0,
+ 0, 0, 177, 0, 0, 175, 176, 73, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 50, 51, 53, 56, 54, 55, 57, 58, 70, 71,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 52, 72, 0, 144, 0, 0, 0, 0, 139,
+ 140, 141, 142, 143, 0, 38, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 0, 0, 0, 0,
+ 174, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 49, 0, 0, 0, 0, 0, 138,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 27, 111, 0, 0, 0, 108, 109, 110, 127,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
- 53, 56, 54, 55, 57, 58, 68, 69, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 52, 70, 0,
- 140, 0, 0, 0, 0, 135, 136, 137, 138, 139,
- 0, 38, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 0, 0, 0, 0, 170, 0, 0, 0,
+ 117, 118, 119, 121, 123, 120, 122, 125, 126, 124,
+ 0, 173, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+ 0, 0, 0, 0, 48, 0, 0, 0, 0, 137,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 49, 0, 0,
- 0, 0, 0, 134, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 27, 107, 0, 0, 0,
- 104, 105, 106, 123, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 113, 114, 115, 117, 119, 116,
- 118, 121, 122, 120, 0, 169, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
- 0, 133, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 26, 0, 0, 0, 103, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 112, 174, 72,
- 90, 73, 74, 75, 76, 80, 77, 78, 79, 81,
- 10, 10, 10, 10, 10, 10, 10, 12, 11, 84,
- 86, 85, 87, 82, 83, 88, 89, 0, 0, 0,
- 0, 94, 95, 96, 97, 141, 142, 143, 154, 156,
- 0, 0, 0, 0, 0, 0, 147, 148, 149, 151,
- 150, 152, 153, 46, 45, 47, 42, 43, 39, 40,
- 41, 44, 0, 0, 102, 0, 20, 0, 0, 0,
- 0, 0, 0, 0, 0, 111, 13, 14, 15, 16,
- 17, 18, 19, 0, 0, 0, 0, 93, 0, 0,
- 0, 0, 0, 0, 0, 146, 108, 109, 128, 20,
- 20, 20, 22, 21, 131, 124, 0, 126, 129, 127,
- 130, 125, 0, 0, 0, 92, 0, 0, 0, 0,
- 0, 0, 167, 0, 145, 23, 24, 25, 0, 100,
- 99, 98, 160, 161, 0, 159, 164, 162, 155, 0,
- 0, 166, 163, 132, 157, 0, 0, 165, 158, 168
+ 26, 0, 0, 0, 107, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 116, 178, 74, 93, 94,
+ 75, 76, 77, 78, 82, 79, 80, 81, 83, 85,
+ 10, 10, 10, 10, 10, 10, 10, 12, 11, 88,
+ 90, 89, 91, 84, 86, 87, 92, 0, 0, 0,
+ 0, 98, 99, 100, 101, 145, 146, 147, 158, 160,
+ 0, 0, 0, 0, 0, 0, 151, 152, 153, 155,
+ 154, 156, 157, 46, 45, 47, 42, 43, 39, 40,
+ 41, 44, 0, 0, 106, 0, 0, 20, 0, 0,
+ 0, 0, 0, 0, 0, 115, 13, 14, 15, 16,
+ 17, 18, 19, 0, 0, 0, 0, 97, 0, 0,
+ 0, 0, 0, 0, 0, 150, 112, 113, 129, 132,
+ 20, 20, 20, 22, 21, 135, 128, 0, 130, 133,
+ 131, 134, 0, 0, 0, 96, 0, 0, 0, 0,
+ 0, 0, 171, 0, 149, 23, 24, 25, 0, 104,
+ 103, 102, 164, 165, 0, 163, 168, 166, 159, 0,
+ 0, 170, 167, 136, 161, 0, 0, 169, 162, 172
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -304, -304, -304, -1, -118, -303, 87, -304, -304, 166,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, -304,
- -304, 290, -304, -304, -304, -304, -304, -304, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, -304,
- -304, -304, -304, -304, 46, -304, -304, -304, -304, -304,
- -304, 170, -304, -304, -304, -304, -304, 144, -304, -304,
- -304, -304, -304, -304, -304, -304, -304, -304, -304, 279,
- -304, -304, -304, -304, -304, -304, 80, -304, -304, -304,
- -304, -36, -304, -304, -304, -304, -304, 3, -304, -304,
- 314, -304
+ -209, -209, -209, -84, -124, -208, 4, -209, -209, 151,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, 270, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, -209, -209, -209, -209, -209, -15, -209, -209, -209,
+ -209, -209, -209, 103, -209, -209, -209, -209, -209, 88,
+ -209, -209, -209, -209, -209, -209, -209, -209, -209, -209,
+ -209, 296, -209, -209, -209, -209, -209, -209, -26, -209,
+ -209, -209, -209, -125, -209, -209, -209, -209, -209, -99,
+ -209, -209, 298, -209
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 1, 7, 247, 248, 332, 333, 8, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 9,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 260, 261, 262, 263, 264, 10, 11,
- 149, 150, 151, 152, 12, 13, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 14, 74, 75,
- 76, 77, 78, 79, 80, 275, 276, 277, 278, 318,
- 364, 365, 279, 280, 281, 282, 351, 352, 15, 24,
- 25, 26
+ -1, 1, 7, 257, 258, 343, 344, 8, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 9,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
+ 69, 70, 71, 72, 73, 270, 271, 272, 273, 274,
+ 10, 11, 155, 156, 157, 158, 12, 13, 169, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 14,
+ 78, 79, 80, 81, 82, 83, 84, 285, 286, 287,
+ 288, 328, 374, 375, 289, 290, 291, 292, 361, 362,
+ 15, 24, 25, 26
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -793,153 +882,158 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 188, 27, 190, 257, 28, 22, 146, 16, 258, 350,
- -91, 22, 259, 370, 29, 374, 17, 203, 375, 205,
- 18, 207, 208, 209, 19, 30, 355, 356, 357, 31,
- 20, 23, 147, 32, 33, 34, 35, 23, 153, 36,
- 37, 81, 38, 21, 39, 40, 41, 362, 363, 102,
- 103, 82, 83, 84, 148, 85, 86, 154, 42, 329,
- 330, 331, 104, 43, 44, 155, 45, 156, 46, 128,
- 107, 87, 88, 126, 70, 134, 108, 105, 215, -144,
- 157, 89, 109, 268, 70, 269, 110, 270, 90, -144,
- 71, 72, 111, 112, 146, 113, 158, 159, 160, 161,
- 71, 72, 114, 115, 116, 162, 303, 271, 117, 118,
- 226, 119, 272, 144, 120, 268, 121, 269, 122, 270,
- 147, 296, 123, 257, 27, 124, 125, 28, 258, 273,
- 73, 129, 259, -91, 174, 130, 131, 29, 135, 271,
- 73, 136, 148, 137, 272, 138, 132, 274, 30, 139,
- 140, 153, 31, 141, 142, 324, 32, 33, 34, 35,
- 143, 273, 36, 37, 2, 38, 175, 39, 40, 41,
- 154, 176, 196, 177, 178, 316, 179, 180, 155, 274,
- 156, 42, 181, 3, 81, 182, 43, 44, 4, 45,
- 183, 46, 184, 157, 82, 83, 84, 185, 85, 86,
- 186, 5, 6, 187, 197, 189, 191, 192, 193, 158,
- 159, 160, 161, -110, 87, 88, 194, 195, 162, 198,
- 202, 199, 200, 204, 89, 206, 295, 201, 210, 211,
- 213, 90, 240, 241, 242, 243, 244, 245, 246, 306,
- 307, 308, 309, 310, 311, 312, 212, 299, 214, 217,
- 218, 187, 219, 220, 221, 222, 223, 145, 322, 224,
- 225, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 249, 250, 251, 252, 253, 254, 255,
- 256, 265, 266, 267, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 296, 313, 298, 300,
- 301, 314, 302, 304, 305, 297, 317, 227, 347, 315,
- 319, 320, 321, 323, 326, 327, 328, 334, 335, 216,
- 337, 336, 338, 339, 340, 341, 342, 343, 344, 345,
- 348, 349, 350, 358, 346, 353, 354, 127, 106, 378,
- 359, 360, 361, 366, 367, 368, 376, 369, 372, 373,
- 0, 377, 379, 133, 371, 325
+ 196, 27, 198, 267, 28, 16, 29, 17, 268, 267,
+ 74, -95, 269, 18, 268, 30, -148, 211, 269, 213,
+ 360, 215, 216, 217, 380, 19, 31, 75, 76, 152,
+ 32, 22, 152, 159, 33, 34, 35, 36, 160, 85,
+ 37, 38, 20, 39, 21, 40, 41, 42, 43, 106,
+ 86, 87, 88, 161, 89, 90, 153, 107, 23, 153,
+ 44, 162, 326, 163, 22, 45, 46, 47, 77, 48,
+ 91, 92, 74, 372, 373, 132, 164, 2, -148, 154,
+ 93, 278, 154, 279, 138, 280, 134, 108, 94, 75,
+ 76, 23, 111, 165, 166, 167, 168, 3, 384, 140,
+ 112, 385, 4, 223, 113, 109, 281, 234, 180, 314,
+ 278, 282, 279, 150, 280, 5, 6, 27, 114, 115,
+ 28, 116, 29, 340, 341, 342, 117, -95, -114, 283,
+ 77, 30, 365, 366, 367, 281, 118, 119, 120, 121,
+ 282, 122, 31, 123, 124, 125, 32, 126, 284, 127,
+ 33, 34, 35, 36, 181, 334, 37, 38, 283, 39,
+ 159, 40, 41, 42, 43, 160, 316, 317, 318, 319,
+ 320, 321, 322, 128, 129, 130, 44, 284, 131, 135,
+ 161, 45, 46, 47, 85, 48, 307, 136, 162, 137,
+ 163, 141, 182, 193, 142, 86, 87, 88, 143, 89,
+ 90, 144, 145, 164, 146, 250, 251, 252, 253, 254,
+ 255, 256, 147, 148, 149, 91, 92, 183, 184, 185,
+ 165, 166, 167, 168, 195, 93, 186, 187, 188, 189,
+ 190, 308, 191, 94, 192, 194, 195, 204, 197, 199,
+ 200, 221, 201, 202, 209, 203, 151, 206, 205, 207,
+ 208, 212, 214, 210, 218, 327, 219, 235, 224, 335,
+ 388, 220, 381, 222, 225, 226, 227, 228, 229, 230,
+ 231, 232, 233, 236, 237, 238, 239, 240, 241, 242,
+ 243, 244, 245, 246, 247, 248, 249, 259, 260, 261,
+ 262, 263, 264, 265, 266, 275, 276, 277, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 315, 309, 312, 310, 311, 313, 133,
+ 0, 0, 110, 0, 323, 324, 325, 329, 330, 331,
+ 332, 333, 356, 336, 337, 338, 339, 345, 346, 0,
+ 348, 347, 349, 350, 351, 352, 353, 354, 355, 357,
+ 0, 358, 359, 360, 379, 363, 368, 364, 0, 0,
+ 369, 0, 370, 371, 376, 377, 378, 382, 383, 386,
+ 387, 389, 0, 0, 139
};
static const yytype_int16 yycheck[] =
{
- 118, 1, 120, 21, 4, 1, 1, 72, 26, 69,
- 10, 1, 30, 73, 14, 74, 72, 135, 77, 137,
- 72, 139, 140, 141, 72, 25, 329, 330, 331, 29,
- 67, 27, 27, 33, 34, 35, 36, 27, 1, 39,
- 40, 1, 42, 49, 44, 45, 46, 22, 23, 72,
- 72, 11, 12, 13, 49, 15, 16, 20, 58, 7,
- 8, 9, 75, 63, 64, 28, 66, 30, 68, 10,
- 75, 31, 32, 73, 1, 6, 75, 73, 73, 6,
- 43, 41, 75, 1, 1, 3, 75, 5, 48, 6,
- 17, 18, 75, 75, 1, 75, 59, 60, 61, 62,
- 17, 18, 75, 75, 75, 68, 224, 25, 75, 75,
- 73, 75, 30, 73, 75, 1, 75, 3, 75, 5,
- 27, 69, 75, 21, 1, 75, 75, 4, 26, 47,
- 57, 75, 30, 10, 70, 75, 75, 14, 75, 25,
- 57, 75, 49, 75, 30, 75, 73, 65, 25, 75,
- 75, 1, 29, 75, 75, 73, 33, 34, 35, 36,
- 75, 47, 39, 40, 0, 42, 74, 44, 45, 46,
- 20, 70, 74, 70, 70, 73, 70, 70, 28, 65,
- 30, 58, 70, 19, 1, 70, 63, 64, 24, 66,
- 70, 68, 70, 43, 11, 12, 13, 70, 15, 16,
- 69, 37, 38, 69, 72, 70, 70, 69, 69, 59,
- 60, 61, 62, 49, 31, 32, 70, 70, 68, 70,
- 72, 70, 70, 69, 41, 69, 69, 74, 70, 70,
- 75, 48, 50, 51, 52, 53, 54, 55, 56, 240,
- 241, 242, 243, 244, 245, 246, 74, 71, 75, 75,
- 75, 69, 75, 75, 75, 75, 75, 91, 72, 75,
- 75, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 70, 70, 74, 69, 75, 70, 70,
- 69, 75, 70, 70, 74, 218, 260, 163, 69, 75,
- 75, 75, 75, 75, 74, 74, 74, 74, 74, 149,
- 74, 76, 74, 74, 74, 74, 70, 70, 70, 74,
- 70, 70, 69, 69, 75, 70, 74, 47, 24, 375,
- 74, 74, 74, 74, 74, 74, 70, 75, 74, 74,
- -1, 74, 74, 74, 351, 275
+ 124, 1, 126, 22, 4, 74, 6, 74, 27, 22,
+ 1, 11, 31, 74, 27, 15, 7, 141, 31, 143,
+ 71, 145, 146, 147, 75, 74, 26, 18, 19, 1,
+ 30, 1, 1, 1, 34, 35, 36, 37, 6, 1,
+ 40, 41, 70, 43, 51, 45, 46, 47, 48, 74,
+ 12, 13, 14, 21, 16, 17, 28, 74, 28, 28,
+ 60, 29, 75, 31, 1, 65, 66, 67, 59, 69,
+ 32, 33, 1, 23, 24, 75, 44, 0, 7, 51,
+ 42, 1, 51, 3, 75, 5, 11, 77, 50, 18,
+ 19, 28, 77, 61, 62, 63, 64, 20, 76, 7,
+ 77, 79, 25, 75, 77, 75, 26, 75, 72, 233,
+ 1, 31, 3, 75, 5, 38, 39, 1, 77, 77,
+ 4, 77, 6, 8, 9, 10, 77, 11, 51, 49,
+ 59, 15, 340, 341, 342, 26, 77, 77, 77, 77,
+ 31, 77, 26, 77, 77, 77, 30, 77, 68, 77,
+ 34, 35, 36, 37, 76, 75, 40, 41, 49, 43,
+ 1, 45, 46, 47, 48, 6, 250, 251, 252, 253,
+ 254, 255, 256, 77, 77, 77, 60, 68, 77, 77,
+ 21, 65, 66, 67, 1, 69, 71, 77, 29, 77,
+ 31, 77, 72, 71, 77, 12, 13, 14, 77, 16,
+ 17, 77, 77, 44, 77, 52, 53, 54, 55, 56,
+ 57, 58, 77, 77, 77, 32, 33, 72, 72, 72,
+ 61, 62, 63, 64, 71, 42, 72, 72, 72, 72,
+ 72, 227, 72, 50, 72, 72, 71, 76, 72, 72,
+ 71, 77, 72, 71, 76, 72, 95, 72, 74, 72,
+ 72, 71, 71, 74, 72, 270, 72, 169, 155, 285,
+ 385, 76, 361, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 72, 72, 76,
+ 72, 71, 71, 76, 72, 71, 73, 72, 72, 49,
+ -1, -1, 24, -1, 77, 77, 77, 77, 77, 77,
+ 74, 77, 77, 76, 76, 76, 76, 76, 76, -1,
+ 76, 78, 76, 76, 76, 72, 72, 72, 76, 71,
+ -1, 72, 72, 71, 77, 72, 71, 76, -1, -1,
+ 76, -1, 76, 76, 76, 76, 76, 76, 76, 72,
+ 76, 76, -1, -1, 78
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint8 yystos[] =
{
- 0, 79, 0, 19, 24, 37, 38, 80, 85, 97,
- 126, 127, 132, 133, 145, 166, 72, 72, 72, 72,
- 67, 49, 1, 27, 167, 168, 169, 1, 4, 14,
- 25, 29, 33, 34, 35, 36, 39, 40, 42, 44,
- 45, 46, 58, 63, 64, 66, 68, 98, 99, 100,
+ 0, 81, 0, 20, 25, 38, 39, 82, 87, 99,
+ 130, 131, 136, 137, 149, 170, 74, 74, 74, 74,
+ 70, 51, 1, 28, 171, 172, 173, 1, 4, 6,
+ 15, 26, 30, 34, 35, 36, 37, 40, 41, 43,
+ 45, 46, 47, 48, 60, 65, 66, 67, 69, 100,
101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 1, 17, 18, 57, 146, 147, 148, 149, 150, 151,
- 152, 1, 11, 12, 13, 15, 16, 31, 32, 41,
- 48, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 72, 72, 75, 73, 168, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 73, 99, 10, 75,
- 75, 75, 73, 147, 6, 75, 75, 75, 75, 75,
- 75, 75, 75, 75, 73, 87, 1, 27, 49, 128,
- 129, 130, 131, 1, 20, 28, 30, 43, 59, 60,
- 61, 62, 68, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 70, 74, 70, 70, 70, 70,
- 70, 70, 70, 70, 70, 70, 69, 69, 82, 70,
- 82, 70, 69, 69, 70, 70, 74, 72, 70, 70,
- 70, 74, 72, 82, 69, 82, 69, 82, 82, 82,
- 70, 70, 74, 75, 75, 73, 129, 75, 75, 75,
- 75, 75, 75, 75, 75, 75, 73, 135, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 50, 51, 52, 53, 54, 55, 56, 81, 82, 74,
- 74, 74, 74, 74, 74, 74, 74, 21, 26, 30,
- 121, 122, 123, 124, 125, 74, 74, 74, 1, 3,
- 5, 25, 30, 47, 65, 153, 154, 155, 156, 160,
- 161, 162, 163, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 70, 70, 74, 69, 69, 84, 70, 71,
- 70, 69, 70, 82, 70, 74, 81, 81, 81, 81,
- 81, 81, 81, 75, 75, 75, 73, 122, 157, 75,
- 75, 75, 72, 75, 73, 154, 74, 74, 74, 7,
- 8, 9, 83, 84, 74, 74, 76, 74, 74, 74,
- 74, 74, 70, 70, 70, 74, 75, 69, 70, 70,
- 69, 164, 165, 70, 74, 83, 83, 83, 69, 74,
- 74, 74, 22, 23, 158, 159, 74, 74, 74, 75,
- 73, 165, 74, 74, 74, 77, 70, 74, 159, 74
+ 121, 122, 123, 124, 1, 18, 19, 59, 150, 151,
+ 152, 153, 154, 155, 156, 1, 12, 13, 14, 16,
+ 17, 32, 33, 42, 50, 88, 89, 90, 91, 92,
+ 93, 94, 95, 96, 97, 98, 74, 74, 77, 75,
+ 172, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 77, 77, 75, 101, 11, 77, 77, 77, 75, 151,
+ 7, 77, 77, 77, 77, 77, 77, 77, 77, 77,
+ 75, 89, 1, 28, 51, 132, 133, 134, 135, 1,
+ 6, 21, 29, 31, 44, 61, 62, 63, 64, 138,
+ 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
+ 72, 76, 72, 72, 72, 72, 72, 72, 72, 72,
+ 72, 72, 72, 71, 72, 71, 84, 72, 84, 72,
+ 71, 72, 71, 72, 76, 74, 72, 72, 72, 76,
+ 74, 84, 71, 84, 71, 84, 84, 84, 72, 72,
+ 76, 77, 77, 75, 133, 77, 77, 77, 77, 77,
+ 77, 77, 77, 77, 75, 139, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 52, 53, 54, 55, 56, 57, 58, 83, 84, 76,
+ 76, 76, 76, 76, 76, 76, 76, 22, 27, 31,
+ 125, 126, 127, 128, 129, 76, 76, 76, 1, 3,
+ 5, 26, 31, 49, 68, 157, 158, 159, 160, 164,
+ 165, 166, 167, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 72, 72, 76, 72, 71, 71, 86, 72,
+ 73, 72, 71, 72, 84, 76, 83, 83, 83, 83,
+ 83, 83, 83, 77, 77, 77, 75, 126, 161, 77,
+ 77, 77, 74, 77, 75, 158, 76, 76, 76, 76,
+ 8, 9, 10, 85, 86, 76, 76, 78, 76, 76,
+ 76, 76, 72, 72, 72, 76, 77, 71, 72, 72,
+ 71, 168, 169, 72, 76, 85, 85, 85, 71, 76,
+ 76, 76, 23, 24, 162, 163, 76, 76, 76, 77,
+ 75, 169, 76, 76, 76, 79, 72, 76, 163, 76
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint8 yyr1[] =
{
- 0, 78, 79, 79, 80, 80, 80, 80, 80, 80,
- 81, 81, 82, 82, 82, 82, 82, 82, 82, 82,
- 83, 83, 84, 84, 84, 84, 85, 86, 86, 87,
- 87, 87, 87, 87, 87, 87, 87, 87, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 98, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
- 99, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 0, 80, 81, 81, 82, 82, 82, 82, 82, 82,
+ 83, 83, 84, 84, 84, 84, 84, 84, 84, 84,
+ 85, 85, 86, 86, 86, 86, 87, 88, 88, 89,
+ 89, 89, 89, 89, 89, 89, 89, 89, 89, 90,
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
+ 100, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
+ 101, 101, 101, 101, 102, 103, 104, 105, 106, 107,
108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 120, 119, 121, 121, 122, 122, 122, 123, 124,
- 125, 127, 126, 128, 128, 129, 129, 129, 130, 131,
- 133, 132, 134, 134, 135, 135, 135, 135, 135, 135,
- 135, 135, 135, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 146, 147, 147, 147, 147,
- 147, 148, 149, 150, 152, 151, 153, 153, 154, 154,
- 154, 154, 154, 154, 154, 155, 157, 156, 158, 158,
- 159, 159, 160, 161, 162, 163, 164, 164, 165, 166,
- 167, 167, 168, 168, 169
+ 118, 119, 120, 121, 122, 124, 123, 125, 125, 126,
+ 126, 126, 127, 128, 129, 131, 130, 132, 132, 133,
+ 133, 133, 134, 135, 137, 136, 138, 138, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 150,
+ 151, 151, 151, 151, 151, 152, 153, 154, 156, 155,
+ 157, 157, 158, 158, 158, 158, 158, 158, 158, 159,
+ 161, 160, 162, 162, 163, 163, 164, 165, 166, 167,
+ 168, 168, 169, 170, 171, 171, 172, 172, 173
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
{
0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
0, 1, 2, 3, 3, 3, 3, 3, 3, 3,
@@ -948,17 +1042,17 @@ static const yytype_uint8 yyr2[] =
4, 4, 4, 4, 4, 4, 4, 4, 5, 2,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 0, 6, 2, 1, 1, 1, 1, 4, 4,
- 4, 0, 6, 2, 1, 1, 1, 1, 4, 4,
- 0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
- 4, 4, 6, 5, 2, 1, 1, 1, 1, 1,
- 1, 4, 4, 4, 0, 6, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 4, 0, 5, 3, 1,
- 1, 1, 4, 4, 4, 5, 2, 1, 4, 5,
- 2, 1, 1, 1, 4
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 0, 6, 2, 1, 1,
+ 1, 1, 4, 4, 4, 0, 6, 2, 1, 1,
+ 1, 1, 4, 4, 0, 6, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
+ 4, 4, 4, 4, 4, 4, 6, 5, 2, 1,
+ 1, 1, 1, 1, 1, 4, 4, 4, 0, 6,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 4,
+ 0, 5, 3, 1, 1, 1, 4, 4, 4, 5,
+ 2, 1, 4, 5, 2, 1, 1, 1, 4
};
@@ -1044,7 +1138,9 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
if (yytype < YYNTOKENS)
YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
# endif
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1068,7 +1164,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
`------------------------------------------------------------------*/
static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -1091,19 +1187,19 @@ do { \
`------------------------------------------------*/
static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
{
- unsigned long yylno = yyrline[yyrule];
+ int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
+ yystos[+yyssp[yyi + 1 - yynrhs]],
&yyvsp[(yyi + 1) - (yynrhs)]
);
YYFPRINTF (stderr, "\n");
@@ -1148,13 +1244,13 @@ int yydebug;
# ifndef yystrlen
# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
+# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
# else
/* Return the length of YYSTR. */
-static YYSIZE_T
+static YYPTRDIFF_T
yystrlen (const char *yystr)
{
- YYSIZE_T yylen;
+ YYPTRDIFF_T yylen;
for (yylen = 0; yystr[yylen]; yylen++)
continue;
return yylen;
@@ -1190,12 +1286,12 @@ yystpcpy (char *yydest, const char *yysrc)
backslash-backslash). YYSTR is taken from yytname. If YYRES is
null, do not copy; instead, return the length of what the result
would have been. */
-static YYSIZE_T
+static YYPTRDIFF_T
yytnamerr (char *yyres, const char *yystr)
{
if (*yystr == '"')
{
- YYSIZE_T yyn = 0;
+ YYPTRDIFF_T yyn = 0;
char const *yyp = yystr;
for (;;)
@@ -1226,10 +1322,10 @@ yytnamerr (char *yyres, const char *yystr)
do_not_strip_quotes: ;
}
- if (! yyres)
+ if (yyres)
+ return yystpcpy (yyres, yystr) - yyres;
+ else
return yystrlen (yystr);
-
- return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
}
# endif
@@ -1242,19 +1338,19 @@ yytnamerr (char *yyres, const char *yystr)
*YYMSG_ALLOC to the required number of bytes. Return 2 if the
required number of bytes is too large to store. */
static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
- yytype_int16 *yyssp, int yytoken)
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+ yy_state_t *yyssp, int yytoken)
{
- YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
- YYSIZE_T yysize = yysize0;
enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
/* Internationalized format string. */
const char *yyformat = YY_NULLPTR;
- /* Arguments of yyformat. */
+ /* Arguments of yyformat: reported tokens (one for the "unexpected",
+ one per "expected"). */
char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
- /* Number of reported tokens (one for the "unexpected", one per
- "expected"). */
+ /* Actual size of YYARG. */
int yycount = 0;
+ /* Cumulated lengths of YYARG. */
+ YYPTRDIFF_T yysize = 0;
/* There are many possibilities here to consider:
- If this state is a consistent state with a default action, then
@@ -1281,7 +1377,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
*/
if (yytoken != YYEMPTY)
{
- int yyn = yypact[*yyssp];
+ int yyn = yypact[+*yyssp];
+ YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+ yysize = yysize0;
yyarg[yycount++] = yytname[yytoken];
if (!yypact_value_is_default (yyn))
{
@@ -1306,7 +1404,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
}
yyarg[yycount++] = yytname[yyx];
{
- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+ YYPTRDIFF_T yysize1
+ = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
yysize = yysize1;
else
@@ -1333,7 +1432,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
}
{
- YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+ /* Don't count the "%s"s in the final size, but reserve room for
+ the terminator. */
+ YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
yysize = yysize1;
else
@@ -1363,8 +1464,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
}
else
{
- yyp++;
- yyformat++;
+ ++yyp;
+ ++yyformat;
}
}
return 0;
@@ -1407,7 +1508,7 @@ int yynerrs;
int
yyparse (void)
{
- int yystate;
+ yy_state_fast_t yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
@@ -1419,16 +1520,16 @@ yyparse (void)
to reallocate them elsewhere. */
/* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
+ yy_state_t yyssa[YYINITDEPTH];
+ yy_state_t *yyss;
+ yy_state_t *yyssp;
/* The semantic value stack. */
YYSTYPE yyvsa[YYINITDEPTH];
YYSTYPE *yyvs;
YYSTYPE *yyvsp;
- YYSIZE_T yystacksize;
+ YYPTRDIFF_T yystacksize;
int yyn;
int yyresult;
@@ -1442,7 +1543,7 @@ yyparse (void)
/* Buffer for error messages, and its allocated size. */
char yymsgbuf[128];
char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+ YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
#endif
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
@@ -1474,10 +1575,14 @@ yynewstate:
/*--------------------------------------------------------------------.
-| yynewstate -- set current state (the top of the stack) to yystate. |
+| yysetstate -- set current state (the top of the stack) to yystate. |
`--------------------------------------------------------------------*/
yysetstate:
- *yyssp = (yytype_int16) yystate;
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+ YY_IGNORE_USELESS_CAST_BEGIN
+ *yyssp = YY_CAST (yy_state_t, yystate);
+ YY_IGNORE_USELESS_CAST_END
if (yyss + yystacksize - 1 <= yyssp)
#if !defined yyoverflow && !defined YYSTACK_RELOCATE
@@ -1485,23 +1590,23 @@ yysetstate:
#else
{
/* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
+ YYPTRDIFF_T yysize = yyssp - yyss + 1;
# if defined yyoverflow
{
/* Give user a chance to reallocate the stack. Use copies of
these so that the &'s don't force the real ones into
memory. */
+ yy_state_t *yyss1 = yyss;
YYSTYPE *yyvs1 = yyvs;
- yytype_int16 *yyss1 = yyss;
/* Each stack pointer address is followed by the size of the
data in use in that stack, in bytes. This used to be a
conditional around just the two extra args, but that might
be undefined if yyoverflow is a macro. */
yyoverflow (YY_("memory exhausted"),
- &yyss1, yysize * sizeof (*yyssp),
- &yyvs1, yysize * sizeof (*yyvsp),
+ &yyss1, yysize * YYSIZEOF (*yyssp),
+ &yyvs1, yysize * YYSIZEOF (*yyvsp),
&yystacksize);
yyss = yyss1;
yyvs = yyvs1;
@@ -1515,9 +1620,10 @@ yysetstate:
yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
+ yy_state_t *yyss1 = yyss;
union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ YY_CAST (union yyalloc *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
if (! yyptr)
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
@@ -1531,16 +1637,16 @@ yysetstate:
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long) yystacksize));
+ YY_IGNORE_USELESS_CAST_BEGIN
+ YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+ YY_CAST (long, yystacksize)));
+ YY_IGNORE_USELESS_CAST_END
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
-
if (yystate == YYFINAL)
YYACCEPT;
@@ -1600,15 +1706,13 @@ yybackup:
/* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
yystate = yyn;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
goto yynewstate;
@@ -1643,331 +1747,349 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 10:
-#line 119 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = 0; }
-#line 1650 "config-parser.c" /* yacc.c:1652 */
+ case 10:
+#line 121 "config-parser.y"
+ { (yyval.number) = 0; }
+#line 1754 "config-parser.c"
break;
case 12:
-#line 120 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1656 "config-parser.c" /* yacc.c:1652 */
+#line 122 "config-parser.y"
+ { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
+#line 1760 "config-parser.c"
break;
case 13:
-#line 121 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1662 "config-parser.c" /* yacc.c:1652 */
+#line 123 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
+#line 1766 "config-parser.c"
break;
case 14:
-#line 122 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
-#line 1668 "config-parser.c" /* yacc.c:1652 */
+#line 124 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
+#line 1772 "config-parser.c"
break;
case 15:
-#line 123 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
-#line 1674 "config-parser.c" /* yacc.c:1652 */
+#line 125 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
+#line 1778 "config-parser.c"
break;
case 16:
-#line 124 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
-#line 1680 "config-parser.c" /* yacc.c:1652 */
+#line 126 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
+#line 1784 "config-parser.c"
break;
case 17:
-#line 125 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
-#line 1686 "config-parser.c" /* yacc.c:1652 */
+#line 127 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
+#line 1790 "config-parser.c"
break;
case 18:
-#line 126 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
-#line 1692 "config-parser.c" /* yacc.c:1652 */
+#line 128 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
+#line 1796 "config-parser.c"
break;
case 19:
-#line 127 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
-#line 1698 "config-parser.c" /* yacc.c:1652 */
+#line 129 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
+#line 1802 "config-parser.c"
break;
case 20:
-#line 130 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = 0; }
-#line 1704 "config-parser.c" /* yacc.c:1652 */
+#line 132 "config-parser.y"
+ { (yyval.number) = 0; }
+#line 1808 "config-parser.c"
break;
case 22:
-#line 131 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1710 "config-parser.c" /* yacc.c:1652 */
+#line 133 "config-parser.y"
+ { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
+#line 1814 "config-parser.c"
break;
case 23:
-#line 132 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1716 "config-parser.c" /* yacc.c:1652 */
+#line 134 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
+#line 1820 "config-parser.c"
break;
case 24:
-#line 133 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
-#line 1722 "config-parser.c" /* yacc.c:1652 */
+#line 135 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
+#line 1826 "config-parser.c"
break;
case 25:
-#line 134 "config-parser.y" /* yacc.c:1652 */
- { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
-#line 1728 "config-parser.c" /* yacc.c:1652 */
+#line 136 "config-parser.y"
+ { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
+#line 1832 "config-parser.c"
break;
case 39:
-#line 156 "config-parser.y" /* yacc.c:1652 */
- {
+#line 158 "config-parser.y"
+{
OptionsItem.negcache = (yyvsp[-1].number);
}
-#line 1736 "config-parser.c" /* yacc.c:1652 */
+#line 1840 "config-parser.c"
break;
case 40:
-#line 161 "config-parser.y" /* yacc.c:1652 */
- {
+#line 163 "config-parser.y"
+{
OptionsItem.negcache_rebuild = (yyvsp[-1].number);
}
-#line 1744 "config-parser.c" /* yacc.c:1652 */
+#line 1848 "config-parser.c"
break;
case 41:
-#line 166 "config-parser.y" /* yacc.c:1652 */
- {
+#line 168 "config-parser.y"
+{
xfree(OptionsItem.pidfile);
OptionsItem.pidfile = xstrdup((yyvsp[-1].string));
}
-#line 1753 "config-parser.c" /* yacc.c:1652 */
+#line 1857 "config-parser.c"
break;
case 42:
-#line 172 "config-parser.y" /* yacc.c:1652 */
- {
+#line 174 "config-parser.y"
+{
OptionsItem.dns_fdlimit = (yyvsp[-1].number);
}
-#line 1761 "config-parser.c" /* yacc.c:1652 */
+#line 1865 "config-parser.c"
break;
case 43:
-#line 177 "config-parser.y" /* yacc.c:1652 */
- {
+#line 179 "config-parser.y"
+{
OptionsItem.dns_timeout = (yyvsp[-1].number);
}
-#line 1769 "config-parser.c" /* yacc.c:1652 */
+#line 1873 "config-parser.c"
break;
case 44:
-#line 182 "config-parser.y" /* yacc.c:1652 */
- {
+#line 184 "config-parser.y"
+{
xfree(OptionsItem.scanlog);
OptionsItem.scanlog = xstrdup((yyvsp[-1].string));
}
-#line 1778 "config-parser.c" /* yacc.c:1652 */
+#line 1882 "config-parser.c"
break;
case 45:
-#line 188 "config-parser.y" /* yacc.c:1652 */
- {
+#line 190 "config-parser.y"
+{
OptionsItem.command_queue_size = (yyvsp[-1].number);
}
-#line 1786 "config-parser.c" /* yacc.c:1652 */
+#line 1890 "config-parser.c"
break;
case 46:
-#line 193 "config-parser.y" /* yacc.c:1652 */
- {
+#line 195 "config-parser.y"
+{
OptionsItem.command_interval = (yyvsp[-1].number);
}
-#line 1794 "config-parser.c" /* yacc.c:1652 */
+#line 1898 "config-parser.c"
break;
case 47:
-#line 198 "config-parser.y" /* yacc.c:1652 */
- {
+#line 200 "config-parser.y"
+{
OptionsItem.command_timeout = (yyvsp[-1].number);
}
-#line 1802 "config-parser.c" /* yacc.c:1652 */
+#line 1906 "config-parser.c"
break;
- case 72:
-#line 232 "config-parser.y" /* yacc.c:1652 */
- {
+ case 74:
+#line 236 "config-parser.y"
+{
xfree(IRCItem.away);
IRCItem.away = xstrdup((yyvsp[-1].string));
}
-#line 1811 "config-parser.c" /* yacc.c:1652 */
+#line 1915 "config-parser.c"
break;
- case 73:
-#line 238 "config-parser.y" /* yacc.c:1652 */
- {
+ case 75:
+#line 242 "config-parser.y"
+{
xfree(IRCItem.kline);
IRCItem.kline = xstrdup((yyvsp[-1].string));
}
-#line 1820 "config-parser.c" /* yacc.c:1652 */
+#line 1924 "config-parser.c"
break;
- case 74:
-#line 244 "config-parser.y" /* yacc.c:1652 */
- {
+ case 76:
+#line 248 "config-parser.y"
+{
xfree(IRCItem.mode);
IRCItem.mode = xstrdup((yyvsp[-1].string));
}
-#line 1829 "config-parser.c" /* yacc.c:1652 */
+#line 1933 "config-parser.c"
break;
- case 75:
-#line 250 "config-parser.y" /* yacc.c:1652 */
- {
+ case 77:
+#line 254 "config-parser.y"
+{
xfree(IRCItem.nick);
IRCItem.nick = xstrdup((yyvsp[-1].string));
}
-#line 1838 "config-parser.c" /* yacc.c:1652 */
+#line 1942 "config-parser.c"
break;
- case 76:
-#line 256 "config-parser.y" /* yacc.c:1652 */
- {
+ case 78:
+#line 260 "config-parser.y"
+{
xfree(IRCItem.nickserv);
IRCItem.nickserv = xstrdup((yyvsp[-1].string));
}
-#line 1847 "config-parser.c" /* yacc.c:1652 */
+#line 1951 "config-parser.c"
break;
- case 77:
-#line 262 "config-parser.y" /* yacc.c:1652 */
- {
+ case 79:
+#line 266 "config-parser.y"
+{
xfree(IRCItem.oper);
IRCItem.oper = xstrdup((yyvsp[-1].string));
}
-#line 1856 "config-parser.c" /* yacc.c:1652 */
+#line 1960 "config-parser.c"
break;
- case 78:
-#line 268 "config-parser.y" /* yacc.c:1652 */
- {
+ case 80:
+#line 272 "config-parser.y"
+{
xfree(IRCItem.password);
IRCItem.password = xstrdup((yyvsp[-1].string));
}
-#line 1865 "config-parser.c" /* yacc.c:1652 */
+#line 1969 "config-parser.c"
break;
- case 79:
-#line 274 "config-parser.y" /* yacc.c:1652 */
- {
+ case 81:
+#line 278 "config-parser.y"
+{
list_add(xstrdup((yyvsp[-1].string)), node_create(), &IRCItem.performs);
}
-#line 1873 "config-parser.c" /* yacc.c:1652 */
+#line 1977 "config-parser.c"
break;
- case 80:
-#line 279 "config-parser.y" /* yacc.c:1652 */
- {
+ case 82:
+#line 283 "config-parser.y"
+{
list_add(xstrdup((yyvsp[-1].string)), node_create(), &IRCItem.notices);
}
-#line 1881 "config-parser.c" /* yacc.c:1652 */
+#line 1985 "config-parser.c"
break;
- case 81:
-#line 284 "config-parser.y" /* yacc.c:1652 */
- {
+ case 83:
+#line 288 "config-parser.y"
+{
IRCItem.port = (yyvsp[-1].number);
}
-#line 1889 "config-parser.c" /* yacc.c:1652 */
+#line 1993 "config-parser.c"
break;
- case 82:
-#line 289 "config-parser.y" /* yacc.c:1652 */
- {
+ case 84:
+#line 293 "config-parser.y"
+{
IRCItem.tls = (yyvsp[-1].number);
}
-#line 1897 "config-parser.c" /* yacc.c:1652 */
+#line 2001 "config-parser.c"
break;
- case 83:
-#line 294 "config-parser.y" /* yacc.c:1652 */
- {
+ case 85:
+#line 298 "config-parser.y"
+{
+ xfree(IRCItem.rsa_private_key_file);
+ IRCItem.rsa_private_key_file = xstrdup((yyvsp[-1].string));
+}
+#line 2010 "config-parser.c"
+ break;
+
+ case 86:
+#line 305 "config-parser.y"
+{
+ xfree(IRCItem.tls_certificate_file);
+ IRCItem.tls_certificate_file = xstrdup((yyvsp[-1].string));
+}
+#line 2019 "config-parser.c"
+ break;
+
+ case 87:
+#line 311 "config-parser.y"
+{
IRCItem.tls_hostname_verification = (yyvsp[-1].number);
}
-#line 1905 "config-parser.c" /* yacc.c:1652 */
+#line 2027 "config-parser.c"
break;
- case 84:
-#line 299 "config-parser.y" /* yacc.c:1652 */
- {
+ case 88:
+#line 316 "config-parser.y"
+{
IRCItem.readtimeout = (yyvsp[-1].number);
}
-#line 1913 "config-parser.c" /* yacc.c:1652 */
+#line 2035 "config-parser.c"
break;
- case 85:
-#line 304 "config-parser.y" /* yacc.c:1652 */
- {
+ case 89:
+#line 321 "config-parser.y"
+{
IRCItem.reconnectinterval = (yyvsp[-1].number);
}
-#line 1921 "config-parser.c" /* yacc.c:1652 */
+#line 2043 "config-parser.c"
break;
- case 86:
-#line 309 "config-parser.y" /* yacc.c:1652 */
- {
+ case 90:
+#line 326 "config-parser.y"
+{
xfree(IRCItem.realname);
IRCItem.realname = xstrdup((yyvsp[-1].string));
}
-#line 1930 "config-parser.c" /* yacc.c:1652 */
+#line 2052 "config-parser.c"
break;
- case 87:
-#line 315 "config-parser.y" /* yacc.c:1652 */
- {
+ case 91:
+#line 332 "config-parser.y"
+{
xfree(IRCItem.server);
IRCItem.server = xstrdup((yyvsp[-1].string));
}
-#line 1939 "config-parser.c" /* yacc.c:1652 */
+#line 2061 "config-parser.c"
break;
- case 88:
-#line 321 "config-parser.y" /* yacc.c:1652 */
- {
+ case 92:
+#line 338 "config-parser.y"
+{
xfree(IRCItem.username);
IRCItem.username = xstrdup((yyvsp[-1].string));
}
-#line 1948 "config-parser.c" /* yacc.c:1652 */
+#line 2070 "config-parser.c"
break;
- case 89:
-#line 327 "config-parser.y" /* yacc.c:1652 */
- {
- xfree(IRCItem.vhost);
- IRCItem.vhost = xstrdup((yyvsp[-1].string));
+ case 93:
+#line 344 "config-parser.y"
+{
+ xfree(IRCItem.bind);
+ IRCItem.bind = xstrdup((yyvsp[-1].string));
}
-#line 1957 "config-parser.c" /* yacc.c:1652 */
+#line 2079 "config-parser.c"
break;
- case 90:
-#line 333 "config-parser.y" /* yacc.c:1652 */
- {
+ case 94:
+#line 350 "config-parser.y"
+{
xfree(IRCItem.connregex);
IRCItem.connregex = xstrdup((yyvsp[-1].string));
}
-#line 1966 "config-parser.c" /* yacc.c:1652 */
+#line 2088 "config-parser.c"
break;
- case 91:
-#line 341 "config-parser.y" /* yacc.c:1652 */
- {
+ case 95:
+#line 358 "config-parser.y"
+{
struct ChannelConf *item;
item = xcalloc(sizeof(*item));
@@ -1978,45 +2100,45 @@ yyreduce:
list_add(item, &item->node, &IRCItem.channels);
tmp = item;
}
-#line 1982 "config-parser.c" /* yacc.c:1652 */
+#line 2104 "config-parser.c"
break;
- case 98:
-#line 362 "config-parser.y" /* yacc.c:1652 */
- {
+ case 102:
+#line 379 "config-parser.y"
+{
struct ChannelConf *item = tmp;
xfree(item->name);
item->name = xstrdup((yyvsp[-1].string));
}
-#line 1993 "config-parser.c" /* yacc.c:1652 */
+#line 2115 "config-parser.c"
break;
- case 99:
-#line 370 "config-parser.y" /* yacc.c:1652 */
- {
+ case 103:
+#line 387 "config-parser.y"
+{
struct ChannelConf *item = tmp;
xfree(item->key);
item->key = xstrdup((yyvsp[-1].string));
}
-#line 2004 "config-parser.c" /* yacc.c:1652 */
+#line 2126 "config-parser.c"
break;
- case 100:
-#line 378 "config-parser.y" /* yacc.c:1652 */
- {
+ case 104:
+#line 395 "config-parser.y"
+{
struct ChannelConf *item = tmp;
xfree(item->invite);
item->invite = xstrdup((yyvsp[-1].string));
}
-#line 2015 "config-parser.c" /* yacc.c:1652 */
+#line 2137 "config-parser.c"
break;
- case 101:
-#line 388 "config-parser.y" /* yacc.c:1652 */
- {
+ case 105:
+#line 405 "config-parser.y"
+{
struct UserConf *item;
item = xcalloc(sizeof(*item));
@@ -2024,32 +2146,32 @@ yyreduce:
list_add(item, &item->node, &UserItemList);
tmp = item;
}
-#line 2028 "config-parser.c" /* yacc.c:1652 */
+#line 2150 "config-parser.c"
break;
- case 108:
-#line 406 "config-parser.y" /* yacc.c:1652 */
- {
+ case 112:
+#line 423 "config-parser.y"
+{
struct UserConf *item = tmp;
list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->masks);
}
-#line 2038 "config-parser.c" /* yacc.c:1652 */
+#line 2160 "config-parser.c"
break;
- case 109:
-#line 413 "config-parser.y" /* yacc.c:1652 */
- {
+ case 113:
+#line 430 "config-parser.y"
+{
struct UserConf *item = tmp;
list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->scanners);
}
-#line 2048 "config-parser.c" /* yacc.c:1652 */
+#line 2170 "config-parser.c"
break;
- case 110:
-#line 422 "config-parser.y" /* yacc.c:1652 */
- {
+ case 114:
+#line 439 "config-parser.y"
+{
struct ScannerConf *item, *olditem;
item = xcalloc(sizeof(*item));
@@ -2061,7 +2183,7 @@ yyreduce:
{
olditem = ScannerItemList.tail->data;
- item->vhost = xstrdup(olditem->vhost);
+ item->bind = xstrdup(olditem->bind);
item->fd = olditem->fd;
item->target_ip = xstrdup(olditem->target_ip);
item->target_port = olditem->target_port;
@@ -2071,7 +2193,7 @@ yyreduce:
}
else
{
- item->vhost = xstrdup("0.0.0.0");
+ item->bind = xstrdup("0.0.0.0");
item->fd = 512;
item->target_ip = xstrdup("127.0.0.1");
item->target_port = 6667;
@@ -2082,45 +2204,45 @@ yyreduce:
list_add(item, &item->node, &ScannerItemList);
tmp = item;
}
-#line 2086 "config-parser.c" /* yacc.c:1652 */
+#line 2208 "config-parser.c"
break;
- case 124:
-#line 472 "config-parser.y" /* yacc.c:1652 */
- {
+ case 128:
+#line 489 "config-parser.y"
+{
struct ScannerConf *item = tmp;
xfree(item->name);
item->name = xstrdup((yyvsp[-1].string));
}
-#line 2097 "config-parser.c" /* yacc.c:1652 */
+#line 2219 "config-parser.c"
break;
- case 125:
-#line 480 "config-parser.y" /* yacc.c:1652 */
- {
+ case 129:
+#line 497 "config-parser.y"
+{
struct ScannerConf *item = tmp;
- xfree(item->vhost);
- item->vhost = xstrdup((yyvsp[-1].string));
+ xfree(item->bind);
+ item->bind = xstrdup((yyvsp[-1].string));
}
-#line 2108 "config-parser.c" /* yacc.c:1652 */
+#line 2230 "config-parser.c"
break;
- case 126:
-#line 488 "config-parser.y" /* yacc.c:1652 */
- {
+ case 130:
+#line 505 "config-parser.y"
+{
struct ScannerConf *item = tmp;
xfree(item->target_ip);
item->target_ip = xstrdup((yyvsp[-1].string));
}
-#line 2119 "config-parser.c" /* yacc.c:1652 */
+#line 2241 "config-parser.c"
break;
- case 127:
-#line 496 "config-parser.y" /* yacc.c:1652 */
- {
+ case 131:
+#line 513 "config-parser.y"
+{
struct ScannerConf *item = tmp;
if (item->target_string_created == 0)
@@ -2131,52 +2253,52 @@ yyreduce:
list_add(xstrdup((yyvsp[-1].string)), node_create(), &item->target_string);
}
-#line 2135 "config-parser.c" /* yacc.c:1652 */
+#line 2257 "config-parser.c"
break;
- case 128:
-#line 509 "config-parser.y" /* yacc.c:1652 */
- {
+ case 132:
+#line 526 "config-parser.y"
+{
struct ScannerConf *item = tmp;
item->fd = (yyvsp[-1].number);
}
-#line 2145 "config-parser.c" /* yacc.c:1652 */
+#line 2267 "config-parser.c"
break;
- case 129:
-#line 516 "config-parser.y" /* yacc.c:1652 */
- {
+ case 133:
+#line 533 "config-parser.y"
+{
struct ScannerConf *item = tmp;
item->target_port = (yyvsp[-1].number);
}
-#line 2155 "config-parser.c" /* yacc.c:1652 */
+#line 2277 "config-parser.c"
break;
- case 130:
-#line 523 "config-parser.y" /* yacc.c:1652 */
- {
+ case 134:
+#line 540 "config-parser.y"
+{
struct ScannerConf *item = tmp;
item->timeout = (yyvsp[-1].number);
}
-#line 2165 "config-parser.c" /* yacc.c:1652 */
+#line 2287 "config-parser.c"
break;
- case 131:
-#line 530 "config-parser.y" /* yacc.c:1652 */
- {
+ case 135:
+#line 547 "config-parser.y"
+{
struct ScannerConf *item = tmp;
item->max_read = (yyvsp[-1].number);
}
-#line 2175 "config-parser.c" /* yacc.c:1652 */
+#line 2297 "config-parser.c"
break;
- case 132:
-#line 537 "config-parser.y" /* yacc.c:1652 */
- {
+ case 136:
+#line 554 "config-parser.y"
+{
struct ProtocolConf *item;
struct ScannerConf *item2;
@@ -2188,39 +2310,39 @@ yyreduce:
list_add(item, node_create(), &item2->protocols);
}
-#line 2192 "config-parser.c" /* yacc.c:1652 */
+#line 2314 "config-parser.c"
break;
- case 141:
-#line 564 "config-parser.y" /* yacc.c:1652 */
- {
+ case 145:
+#line 581 "config-parser.y"
+{
xfree(OpmItem.dnsbl_from);
OpmItem.dnsbl_from = xstrdup((yyvsp[-1].string));
}
-#line 2201 "config-parser.c" /* yacc.c:1652 */
+#line 2323 "config-parser.c"
break;
- case 142:
-#line 570 "config-parser.y" /* yacc.c:1652 */
- {
+ case 146:
+#line 587 "config-parser.y"
+{
xfree(OpmItem.dnsbl_to);
OpmItem.dnsbl_to = xstrdup((yyvsp[-1].string));
}
-#line 2210 "config-parser.c" /* yacc.c:1652 */
+#line 2332 "config-parser.c"
break;
- case 143:
-#line 576 "config-parser.y" /* yacc.c:1652 */
- {
+ case 147:
+#line 593 "config-parser.y"
+{
xfree(OpmItem.sendmail);
OpmItem.sendmail = xstrdup((yyvsp[-1].string));
}
-#line 2219 "config-parser.c" /* yacc.c:1652 */
+#line 2341 "config-parser.c"
break;
- case 144:
-#line 584 "config-parser.y" /* yacc.c:1652 */
- {
+ case 148:
+#line 601 "config-parser.y"
+{
struct BlacklistConf *item;
item = xcalloc(sizeof(*item));
@@ -2234,65 +2356,65 @@ yyreduce:
tmp = item;
}
-#line 2238 "config-parser.c" /* yacc.c:1652 */
+#line 2360 "config-parser.c"
break;
- case 155:
-#line 612 "config-parser.y" /* yacc.c:1652 */
- {
+ case 159:
+#line 629 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
xfree(item->name);
item->name = xstrdup((yyvsp[-1].string));
}
-#line 2249 "config-parser.c" /* yacc.c:1652 */
+#line 2371 "config-parser.c"
break;
- case 156:
-#line 620 "config-parser.y" /* yacc.c:1652 */
- {
+ case 160:
+#line 637 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
item->ipv4 = 0;
item->ipv6 = 0;
}
-#line 2260 "config-parser.c" /* yacc.c:1652 */
+#line 2382 "config-parser.c"
break;
- case 160:
-#line 629 "config-parser.y" /* yacc.c:1652 */
- {
+ case 164:
+#line 646 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
item->ipv4 = 1;
}
-#line 2270 "config-parser.c" /* yacc.c:1652 */
+#line 2392 "config-parser.c"
break;
- case 161:
-#line 634 "config-parser.y" /* yacc.c:1652 */
- {
+ case 165:
+#line 651 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
item->ipv6 = 1;
}
-#line 2280 "config-parser.c" /* yacc.c:1652 */
+#line 2402 "config-parser.c"
break;
- case 162:
-#line 641 "config-parser.y" /* yacc.c:1652 */
- {
+ case 166:
+#line 658 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
xfree(item->kline);
item->kline = xstrdup((yyvsp[-1].string));
}
-#line 2291 "config-parser.c" /* yacc.c:1652 */
+#line 2413 "config-parser.c"
break;
- case 163:
-#line 649 "config-parser.y" /* yacc.c:1652 */
- {
+ case 167:
+#line 666 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
if (strcmp("A record bitmask", (yyvsp[-1].string)) == 0)
@@ -2302,22 +2424,22 @@ yyreduce:
else
yyerror("Unknown blacklist type defined");
}
-#line 2306 "config-parser.c" /* yacc.c:1652 */
+#line 2428 "config-parser.c"
break;
- case 164:
-#line 661 "config-parser.y" /* yacc.c:1652 */
- {
+ case 168:
+#line 678 "config-parser.y"
+{
struct BlacklistConf *item = tmp;
item->ban_unknown = (yyvsp[-1].number);
}
-#line 2316 "config-parser.c" /* yacc.c:1652 */
+#line 2438 "config-parser.c"
break;
- case 168:
-#line 673 "config-parser.y" /* yacc.c:1652 */
- {
+ case 172:
+#line 690 "config-parser.y"
+{
struct BlacklistReplyConf *item;
struct BlacklistConf *blacklist = tmp;
@@ -2327,19 +2449,20 @@ yyreduce:
list_add(item, node_create(), &blacklist->reply);
}
-#line 2331 "config-parser.c" /* yacc.c:1652 */
+#line 2453 "config-parser.c"
break;
- case 174:
-#line 695 "config-parser.y" /* yacc.c:1652 */
- {
+ case 178:
+#line 712 "config-parser.y"
+{
list_add(xstrdup((yyvsp[-1].string)), node_create(), &ExemptItem.masks);
}
-#line 2339 "config-parser.c" /* yacc.c:1652 */
+#line 2461 "config-parser.c"
break;
-#line 2343 "config-parser.c" /* yacc.c:1652 */
+#line 2465 "config-parser.c"
+
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -2402,7 +2525,7 @@ yyerrlab:
{
if (yymsg != yymsgbuf)
YYSTACK_FREE (yymsg);
- yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+ yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
if (!yymsg)
{
yymsg = yymsgbuf;
@@ -2557,7 +2680,7 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
+ yystos[+*yyssp], yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
@@ -2570,5 +2693,5 @@ yyreturn:
#endif
return yyresult;
}
-#line 699 "config-parser.y" /* yacc.c:1918 */
+#line 716 "config-parser.y"
diff --git a/src/config-parser.h b/src/config-parser.h
index 3ccde31..66ca320 100644
--- a/src/config-parser.h
+++ b/src/config-parser.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.3.2. */
+/* A Bison parser, made by GNU Bison 3.5.1. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -52,158 +52,161 @@ extern int yydebug;
ADDRESS_FAMILY = 258,
AWAY = 259,
BAN_UNKNOWN = 260,
- BLACKLIST = 261,
- BYTES = 262,
- KBYTES = 263,
- MBYTES = 264,
- CHANNEL = 265,
- COMMAND_INTERVAL = 266,
- COMMAND_QUEUE_SIZE = 267,
- COMMAND_TIMEOUT = 268,
- CONNREGEX = 269,
- DNS_FDLIMIT = 270,
- DNS_TIMEOUT = 271,
- DNSBL_FROM = 272,
- DNSBL_TO = 273,
- EXEMPT = 274,
- FD = 275,
- INVITE = 276,
- IPV4 = 277,
- IPV6 = 278,
- IRC = 279,
- KLINE = 280,
- KEY = 281,
- MASK = 282,
- MAX_READ = 283,
- MODE = 284,
- NAME = 285,
- NEGCACHE = 286,
- NEGCACHE_REBUILD = 287,
- NICK = 288,
- NICKSERV = 289,
- NOTICE = 290,
- OPER = 291,
- OPM = 292,
- OPTIONS = 293,
- PASSWORD = 294,
- PERFORM = 295,
- PIDFILE = 296,
- PORT = 297,
- PROTOCOL = 298,
- READTIMEOUT = 299,
- REALNAME = 300,
- RECONNECTINTERVAL = 301,
- REPLY = 302,
- SCANLOG = 303,
- SCANNER = 304,
- SECONDS = 305,
- MINUTES = 306,
- HOURS = 307,
- DAYS = 308,
- WEEKS = 309,
- MONTHS = 310,
- YEARS = 311,
- SENDMAIL = 312,
- SERVER = 313,
- TARGET_IP = 314,
- TARGET_PORT = 315,
- TARGET_STRING = 316,
- TIMEOUT = 317,
- TLS = 318,
- TLS_HOSTNAME_VERIFICATION = 319,
- TYPE = 320,
- USERNAME = 321,
- USER = 322,
- VHOST = 323,
- NUMBER = 324,
- STRING = 325,
- PROTOCOLTYPE = 326
+ BIND = 261,
+ BLACKLIST = 262,
+ BYTES = 263,
+ KBYTES = 264,
+ MBYTES = 265,
+ CHANNEL = 266,
+ COMMAND_INTERVAL = 267,
+ COMMAND_QUEUE_SIZE = 268,
+ COMMAND_TIMEOUT = 269,
+ CONNREGEX = 270,
+ DNS_FDLIMIT = 271,
+ DNS_TIMEOUT = 272,
+ DNSBL_FROM = 273,
+ DNSBL_TO = 274,
+ EXEMPT = 275,
+ FD = 276,
+ INVITE = 277,
+ IPV4 = 278,
+ IPV6 = 279,
+ IRC = 280,
+ KLINE = 281,
+ KEY = 282,
+ MASK = 283,
+ MAX_READ = 284,
+ MODE = 285,
+ NAME = 286,
+ NEGCACHE = 287,
+ NEGCACHE_REBUILD = 288,
+ NICK = 289,
+ NICKSERV = 290,
+ NOTICE = 291,
+ OPER = 292,
+ OPM = 293,
+ OPTIONS = 294,
+ PASSWORD = 295,
+ PERFORM = 296,
+ PIDFILE = 297,
+ PORT = 298,
+ PROTOCOL = 299,
+ RSA_PRIVATE_KEY_FILE = 300,
+ READTIMEOUT = 301,
+ REALNAME = 302,
+ RECONNECTINTERVAL = 303,
+ REPLY = 304,
+ SCANLOG = 305,
+ SCANNER = 306,
+ SECONDS = 307,
+ MINUTES = 308,
+ HOURS = 309,
+ DAYS = 310,
+ WEEKS = 311,
+ MONTHS = 312,
+ YEARS = 313,
+ SENDMAIL = 314,
+ SERVER = 315,
+ TARGET_IP = 316,
+ TARGET_PORT = 317,
+ TARGET_STRING = 318,
+ TIMEOUT = 319,
+ TLS = 320,
+ TLS_CERTIFICATE_FILE = 321,
+ TLS_HOSTNAME_VERIFICATION = 322,
+ TYPE = 323,
+ USERNAME = 324,
+ USER = 325,
+ NUMBER = 326,
+ STRING = 327,
+ PROTOCOLTYPE = 328
};
#endif
/* Tokens. */
#define ADDRESS_FAMILY 258
#define AWAY 259
#define BAN_UNKNOWN 260
-#define BLACKLIST 261
-#define BYTES 262
-#define KBYTES 263
-#define MBYTES 264
-#define CHANNEL 265
-#define COMMAND_INTERVAL 266
-#define COMMAND_QUEUE_SIZE 267
-#define COMMAND_TIMEOUT 268
-#define CONNREGEX 269
-#define DNS_FDLIMIT 270
-#define DNS_TIMEOUT 271
-#define DNSBL_FROM 272
-#define DNSBL_TO 273
-#define EXEMPT 274
-#define FD 275
-#define INVITE 276
-#define IPV4 277
-#define IPV6 278
-#define IRC 279
-#define KLINE 280
-#define KEY 281
-#define MASK 282
-#define MAX_READ 283
-#define MODE 284
-#define NAME 285
-#define NEGCACHE 286
-#define NEGCACHE_REBUILD 287
-#define NICK 288
-#define NICKSERV 289
-#define NOTICE 290
-#define OPER 291
-#define OPM 292
-#define OPTIONS 293
-#define PASSWORD 294
-#define PERFORM 295
-#define PIDFILE 296
-#define PORT 297
-#define PROTOCOL 298
-#define READTIMEOUT 299
-#define REALNAME 300
-#define RECONNECTINTERVAL 301
-#define REPLY 302
-#define SCANLOG 303
-#define SCANNER 304
-#define SECONDS 305
-#define MINUTES 306
-#define HOURS 307
-#define DAYS 308
-#define WEEKS 309
-#define MONTHS 310
-#define YEARS 311
-#define SENDMAIL 312
-#define SERVER 313
-#define TARGET_IP 314
-#define TARGET_PORT 315
-#define TARGET_STRING 316
-#define TIMEOUT 317
-#define TLS 318
-#define TLS_HOSTNAME_VERIFICATION 319
-#define TYPE 320
-#define USERNAME 321
-#define USER 322
-#define VHOST 323
-#define NUMBER 324
-#define STRING 325
-#define PROTOCOLTYPE 326
+#define BIND 261
+#define BLACKLIST 262
+#define BYTES 263
+#define KBYTES 264
+#define MBYTES 265
+#define CHANNEL 266
+#define COMMAND_INTERVAL 267
+#define COMMAND_QUEUE_SIZE 268
+#define COMMAND_TIMEOUT 269
+#define CONNREGEX 270
+#define DNS_FDLIMIT 271
+#define DNS_TIMEOUT 272
+#define DNSBL_FROM 273
+#define DNSBL_TO 274
+#define EXEMPT 275
+#define FD 276
+#define INVITE 277
+#define IPV4 278
+#define IPV6 279
+#define IRC 280
+#define KLINE 281
+#define KEY 282
+#define MASK 283
+#define MAX_READ 284
+#define MODE 285
+#define NAME 286
+#define NEGCACHE 287
+#define NEGCACHE_REBUILD 288
+#define NICK 289
+#define NICKSERV 290
+#define NOTICE 291
+#define OPER 292
+#define OPM 293
+#define OPTIONS 294
+#define PASSWORD 295
+#define PERFORM 296
+#define PIDFILE 297
+#define PORT 298
+#define PROTOCOL 299
+#define RSA_PRIVATE_KEY_FILE 300
+#define READTIMEOUT 301
+#define REALNAME 302
+#define RECONNECTINTERVAL 303
+#define REPLY 304
+#define SCANLOG 305
+#define SCANNER 306
+#define SECONDS 307
+#define MINUTES 308
+#define HOURS 309
+#define DAYS 310
+#define WEEKS 311
+#define MONTHS 312
+#define YEARS 313
+#define SENDMAIL 314
+#define SERVER 315
+#define TARGET_IP 316
+#define TARGET_PORT 317
+#define TARGET_STRING 318
+#define TIMEOUT 319
+#define TLS 320
+#define TLS_CERTIFICATE_FILE 321
+#define TLS_HOSTNAME_VERIFICATION 322
+#define TYPE 323
+#define USERNAME 324
+#define USER 325
+#define NUMBER 326
+#define STRING 327
+#define PROTOCOLTYPE 328
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 93 "config-parser.y" /* yacc.c:1921 */
+#line 95 "config-parser.y"
int number;
char *string;
-#line 205 "config-parser.h" /* yacc.c:1921 */
-};
+#line 208 "config-parser.h"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
diff --git a/src/config-parser.y b/src/config-parser.y
index f66513b..6db1406 100644
--- a/src/config-parser.y
+++ b/src/config-parser.y
@@ -33,6 +33,7 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis
%token ADDRESS_FAMILY
%token AWAY
%token BAN_UNKNOWN
+%token BIND
%token BLACKLIST
%token BYTES KBYTES MBYTES
%token CHANNEL
@@ -69,6 +70,7 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis
%token PIDFILE
%token PORT
%token PROTOCOL
+%token RSA_PRIVATE_KEY_FILE
%token READTIMEOUT
%token REALNAME
%token RECONNECTINTERVAL
@@ -83,11 +85,11 @@ static void *tmp; /* Variable to temporarily hold nodes before insertion to lis
%token TARGET_STRING
%token TIMEOUT
%token TLS
+%token TLS_CERTIFICATE_FILE
%token TLS_HOSTNAME_VERIFICATION
%token TYPE
%token USERNAME
%token USER
-%token VHOST
%union
{
@@ -216,13 +218,15 @@ irc_item: irc_away |
irc_password |
irc_port |
irc_tls |
+ irc_rsa_private_key_file |
+ irc_tls_certificate_file |
irc_tls_hostname_verification |
irc_readtimeout |
irc_reconnectinterval |
irc_realname |
irc_server |
irc_username |
- irc_vhost |
+ irc_bind |
irc_perform |
irc_notice |
channel_entry |
@@ -290,6 +294,19 @@ irc_tls: TLS '=' NUMBER ';'
IRCItem.tls = $3;
};
+irc_rsa_private_key_file: RSA_PRIVATE_KEY_FILE '=' STRING ';'
+{
+ xfree(IRCItem.rsa_private_key_file);
+ IRCItem.rsa_private_key_file = xstrdup($3);
+};
+
+
+irc_tls_certificate_file: TLS_CERTIFICATE_FILE '=' STRING ';'
+{
+ xfree(IRCItem.tls_certificate_file);
+ IRCItem.tls_certificate_file = xstrdup($3);
+};
+
irc_tls_hostname_verification: TLS_HOSTNAME_VERIFICATION '=' NUMBER ';'
{
IRCItem.tls_hostname_verification = $3;
@@ -323,10 +340,10 @@ irc_username: USERNAME '=' STRING ';'
IRCItem.username = xstrdup($3);
};
-irc_vhost: VHOST '=' STRING ';'
+irc_bind: BIND '=' STRING ';'
{
- xfree(IRCItem.vhost);
- IRCItem.vhost = xstrdup($3);
+ xfree(IRCItem.bind);
+ IRCItem.bind = xstrdup($3);
};
irc_connregex: CONNREGEX '=' STRING ';'
@@ -431,7 +448,7 @@ scanner_entry:
{
olditem = ScannerItemList.tail->data;
- item->vhost = xstrdup(olditem->vhost);
+ item->bind = xstrdup(olditem->bind);
item->fd = olditem->fd;
item->target_ip = xstrdup(olditem->target_ip);
item->target_port = olditem->target_port;
@@ -441,7 +458,7 @@ scanner_entry:
}
else
{
- item->vhost = xstrdup("0.0.0.0");
+ item->bind = xstrdup("0.0.0.0");
item->fd = 512;
item->target_ip = xstrdup("127.0.0.1");
item->target_port = 6667;
@@ -458,7 +475,7 @@ scanner_items: scanner_items scanner_item |
scanner_item;
scanner_item: scanner_name |
- scanner_vhost |
+ scanner_bind |
scanner_fd |
scanner_target_ip |
scanner_target_port |
@@ -476,12 +493,12 @@ scanner_name: NAME '=' STRING ';'
item->name = xstrdup($3);
};
-scanner_vhost: VHOST '=' STRING ';'
+scanner_bind: BIND '=' STRING ';'
{
struct ScannerConf *item = tmp;
- xfree(item->vhost);
- item->vhost = xstrdup($3);
+ xfree(item->bind);
+ item->bind = xstrdup($3);
};
scanner_target_ip: TARGET_IP '=' STRING ';'
diff --git a/src/config.c b/src/config.c
index 70129b0..30a02ed 100644
--- a/src/config.c
+++ b/src/config.c
@@ -52,14 +52,11 @@ static void
config_setup(void)
{
/* Setup irc {} block defaults */
- IRCItem.mode = xstrdup("+c");
IRCItem.nick = xstrdup("hopm");
IRCItem.port = 6667;
- IRCItem.tls = 0;
IRCItem.tls_hostname_verification = 1;
IRCItem.readtimeout = 900;
IRCItem.reconnectinterval = 30;
- IRCItem.oper = xstrdup("undefined");
IRCItem.username = xstrdup("hopm");
IRCItem.realname = xstrdup("Hybrid Open Proxy Monitor");
IRCItem.server = xstrdup("irc.example.org");
@@ -70,7 +67,6 @@ config_setup(void)
OptionsItem.command_queue_size = 64;
OptionsItem.command_interval = 10;
OptionsItem.command_timeout = 180;
- OptionsItem.negcache = 0; /* 0 disabled negcache */
OptionsItem.negcache_rebuild = 43200;
OptionsItem.pidfile = xstrdup("hopm.pid");
OptionsItem.dns_fdlimit = 50;
@@ -97,8 +93,8 @@ config_load(const char *filename)
yyparse();
fclose(conf_file);
- scan_init(); /* Initialize the scanners once we have the configuration */
- stats_init(); /* Initialize stats (UPTIME) */
+ scan_init(); /* Initialize the scanners once we have the configuration */
+ stats_init(); /* Initialize stats (UPTIME) */
firedns_init(); /* Initialize adns */
}
diff --git a/src/config.h b/src/config.h
index 5302262..da468a5 100644
--- a/src/config.h
+++ b/src/config.h
@@ -40,10 +40,12 @@ struct IRCConf
int port;
int tls;
int tls_hostname_verification;
+ char *rsa_private_key_file;
+ char *tls_certificate_file;
time_t readtimeout;
time_t reconnectinterval;
char *password;
- char *vhost;
+ char *bind;
char *nickserv;
char *oper;
char *mode;
@@ -88,7 +90,7 @@ struct ScannerConf
node_t node; /**< List node; linked into ScannerItemList */
char *name;
list_t protocols;
- char *vhost;
+ char *bind;
int fd;
char *target_ip;
int target_port;
diff --git a/src/irc.c b/src/irc.c
index cb34440..efe9daa 100644
--- a/src/irc.c
+++ b/src/irc.c
@@ -54,7 +54,6 @@
#include "negcache.h"
#include "memory.h"
#include "main.h"
-#include "serno.h"
/*
@@ -66,7 +65,8 @@ static unsigned int IRC_RAW_LEN; /* Position of IRC_RAW
static int IRC_FD = -1; /* File descriptor for IRC client */
static struct sockaddr_storage IRC_SVR; /* Sock Address Struct for IRC server */
-static socklen_t svr_addrlen;
+static socklen_t IRC_SVR_LEN;
+static char IRC_SVR_STR[INET6_ADDRSTRLEN];
static time_t IRC_LAST; /* Last full line of data from irc server */
static time_t IRC_LASTRECONNECT; /* Time of last reconnection */
@@ -119,17 +119,19 @@ m_perform(char *parv[], unsigned int parc, const char *msg, const char *source_p
{
node_t *node;
- log_printf("IRC -> Connected to %s/%d", IRCItem.server, IRCItem.port);
+ log_printf("IRC -> Connected to %s[%s]:%i", IRC_SVR_STR, IRCItem.server, IRCItem.port);
/* Identify to nickserv if needed */
if (!EmptyString(IRCItem.nickserv))
irc_send("%s", IRCItem.nickserv);
/* Oper */
- irc_send("OPER %s", IRCItem.oper);
+ if (!EmptyString(IRCItem.oper))
+ irc_send("OPER %s", IRCItem.oper);
/* Set modes */
- irc_send("MODE %s %s", IRCItem.nick, IRCItem.mode);
+ if (!EmptyString(IRCItem.mode))
+ irc_send("MODE %s %s", IRCItem.nick, IRCItem.mode);
/* Set Away */
if (!EmptyString(IRCItem.away))
@@ -213,8 +215,8 @@ static void
m_ctcp(char *parv[], unsigned int parc, const char *msg, const char *source_p)
{
if (strncasecmp(parv[3], "\001VERSION\001", 9) == 0)
- irc_send("NOTICE %s :\001VERSION Hybrid Open Proxy Monitor %s(%s)\001",
- source_p, VERSION, SERIALNUM);
+ irc_send("NOTICE %s :\001VERSION Hybrid Open Proxy Monitor %s\001",
+ source_p, VERSION);
}
/* m_privmsg
@@ -468,38 +470,64 @@ userinfo_create(const char *source)
static void
irc_init(void)
{
+ int n;
const void *address;
+ struct addrinfo hints, *res = NULL;
assert(IRC_FD == -1);
memset(&IRC_SVR, 0, sizeof(IRC_SVR));
+ if (!EmptyString(IRCItem.bind))
+ {
+ memset(&hints, 0, sizeof(hints));
+
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_NUMERICHOST;
+
+ n = getaddrinfo(IRCItem.bind, NULL, &hints, &res);
+ if (n)
+ {
+ log_printf("IRC -> getaddrinfo() error: %s", gai_strerror(n));
+ exit(EXIT_FAILURE);
+ }
+ }
+
/* Resolve IRC host. */
- if ((address = firedns_resolveip6(IRCItem.server)))
+ if ((res == NULL || res->ai_family == AF_INET6) && (address = firedns_resolveip6(IRCItem.server)))
{
struct sockaddr_in6 *in = (struct sockaddr_in6 *)&IRC_SVR;
- svr_addrlen = sizeof(*in);
+ IRC_SVR_LEN = sizeof(*in);
IRC_SVR.ss_family = AF_INET6;
in->sin6_port = htons(IRCItem.port);
memcpy(&in->sin6_addr, address, sizeof(in->sin6_addr));
}
- else if ((address = firedns_resolveip4(IRCItem.server)))
+ else if ((res == NULL || res->ai_family == AF_INET) && (address = firedns_resolveip4(IRCItem.server)))
{
struct sockaddr_in *in = (struct sockaddr_in *)&IRC_SVR;
- svr_addrlen = sizeof(*in);
+ IRC_SVR_LEN = sizeof(*in);
IRC_SVR.ss_family = AF_INET;
in->sin_port = htons(IRCItem.port);
memcpy(&in->sin_addr, address, sizeof(in->sin_addr));
}
else
{
- log_printf("IRC -> firedns_resolveip(\"%s\"): %s", IRCItem.server,
+ log_printf("IRC -> Error resolving host '%s': %s", IRCItem.server,
firedns_strerror(firedns_errno));
exit(EXIT_FAILURE);
}
+ n = getnameinfo((const struct sockaddr *)&IRC_SVR, IRC_SVR_LEN, IRC_SVR_STR,
+ sizeof(IRC_SVR_STR), NULL, 0, NI_NUMERICHOST);
+ if (n)
+ {
+ log_printf("IRC -> getnameinfo() error: %s", gai_strerror(n));
+ exit(EXIT_FAILURE);
+ }
+
/* Request file desc for IRC client socket */
IRC_FD = socket(IRC_SVR.ss_family, SOCK_STREAM, 0);
@@ -510,25 +538,11 @@ irc_init(void)
}
/* Bind */
- if (!EmptyString(IRCItem.vhost))
+ if (res)
{
- struct addrinfo hints, *res;
-
- memset(&hints, 0, sizeof(hints));
-
- hints.ai_family = AF_UNSPEC;
- hints.ai_socktype = SOCK_STREAM;
- hints.ai_flags = AI_NUMERICHOST;
-
- int n = getaddrinfo(IRCItem.vhost, NULL, &hints, &res);
- if (n)
+ if (bind(IRC_FD, res->ai_addr, res->ai_addrlen))
{
- log_printf("IRC -> error binding to %s: %s", IRCItem.vhost, gai_strerror(n));
- exit(EXIT_FAILURE);
- }
- else if (bind(IRC_FD, res->ai_addr, res->ai_addrlen))
- {
- log_printf("IRC -> error binding to %s: %s", IRCItem.vhost, strerror(errno));
+ log_printf("IRC -> error binding to %s: %s", IRCItem.bind, strerror(errno));
exit(EXIT_FAILURE);
}
@@ -551,6 +565,31 @@ irc_init(void)
exit(EXIT_FAILURE);
}
+ if (!EmptyString(IRCItem.rsa_private_key_file) &&
+ !EmptyString(IRCItem.tls_certificate_file))
+ {
+ if (SSL_CTX_use_certificate_chain_file(ssl_ctx, IRCItem.tls_certificate_file) != 1)
+ {
+ log_printf("IRC -> couldn't load client certificate from %s: %s",
+ IRCItem.tls_certificate_file, ERR_error_string(ERR_get_error(), NULL));
+ exit(EXIT_FAILURE);
+ }
+
+ if (SSL_CTX_use_PrivateKey_file(ssl_ctx, IRCItem.rsa_private_key_file, SSL_FILETYPE_PEM) != 1)
+ {
+ log_printf("IRC -> couldn't load private key from %s: %s",
+ IRCItem.rsa_private_key_file, ERR_error_string(ERR_get_error(), NULL));
+ exit(EXIT_FAILURE);
+ }
+
+ if (SSL_CTX_check_private_key(ssl_ctx) != 1)
+ {
+ log_printf("IRC -> Private key does not match the client certificate: %s",
+ ERR_error_string(ERR_get_error(), NULL));
+ exit(EXIT_FAILURE);
+ }
+ }
+
SSL_CTX_set_min_proto_version(ssl_ctx, TLS1_2_VERSION);
SSL_CTX_set_default_verify_paths(ssl_ctx);
}
@@ -635,8 +674,10 @@ irc_connect(void)
irc_init();
+ log_printf("IRC -> Attempting to connect to %s[%s]:%i", IRC_SVR_STR, IRCItem.server, IRCItem.port);
+
/* Connect to IRC server as client. */
- if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, svr_addrlen) == -1)
+ if (connect(IRC_FD, (struct sockaddr *)&IRC_SVR, IRC_SVR_LEN) == -1)
{
log_printf("IRC -> connect(): error connecting to %s: %s",
IRCItem.server, strerror(errno));
@@ -828,7 +869,7 @@ irc_read(void)
/* Reset counter. */
IRC_RAW_LEN = 0;
- break;
+ return;
}
if (c != '\0')
@@ -842,7 +883,6 @@ irc_read(void)
irc_close();
IRC_RAW_LEN = 0;
- return;
}
}
diff --git a/src/libopm/src/config.c b/src/libopm/src/config.c
index dfc4c48..f2d8279 100644
--- a/src/libopm/src/config.c
+++ b/src/libopm/src/config.c
@@ -24,8 +24,10 @@
#include "setup.h"
#include <stdlib.h>
+#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
+#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@ -62,7 +64,7 @@ static const OPM_CONFIG_HASH_T HASH[] =
OPM_CONFIG_T *
libopm_config_create(void)
{
- const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T);
+ const unsigned int num = sizeof(HASH) / sizeof(HASH[0]);
OPM_CONFIG_T *ret;
ret = libopm_calloc(sizeof(OPM_CONFIG_T));
@@ -91,7 +93,7 @@ libopm_config_create(void)
break;
case OPM_TYPE_ADDRESS:
- ret->vars[i] = libopm_calloc(sizeof(struct sockaddr_in));
+ ret->vars[i] = libopm_calloc(sizeof(struct sockaddr_storage));
break;
case OPM_TYPE_STRINGLIST:
@@ -119,7 +121,7 @@ libopm_config_create(void)
void
libopm_config_free(OPM_CONFIG_T *config)
{
- const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T);
+ const unsigned int num = sizeof(HASH) / sizeof(HASH[0]);
OPM_NODE_T *p, *next;
OPM_LIST_T *list;
@@ -168,7 +170,7 @@ libopm_config_free(OPM_CONFIG_T *config)
OPM_ERR_T
libopm_config_set(OPM_CONFIG_T *config, unsigned int key, const void *value)
{
- const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T);
+ const unsigned int num = sizeof(HASH) / sizeof(HASH[0]);
OPM_NODE_T *node;
if (key >= num)
@@ -188,10 +190,29 @@ libopm_config_set(OPM_CONFIG_T *config, unsigned int key, const void *value)
break;
case OPM_TYPE_ADDRESS:
- if (inet_pton(AF_INET, value, &(((struct sockaddr_in *)config->vars[key])->sin_addr)) <= 0)
+ {
+ struct addrinfo hints, *res;
+
+ memset(&hints, 0, sizeof(hints));
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_NUMERICHOST;
+
+ if (getaddrinfo(value, NULL, &hints, &res) || res->ai_family != AF_INET) /* XXX: v4 only for now */
+ {
+ if (res)
+ freeaddrinfo(res);
+
return OPM_ERR_BADVALUE; /* Return appropriate err code */
+ }
+
+ struct sockaddr_storage *const addr = config->vars[key];
+ memcpy(addr, res->ai_addr, res->ai_addrlen);
+ addr->ss_family = res->ai_family;
+ freeaddrinfo(res);
break;
+ }
case OPM_TYPE_STRINGLIST:
node = libopm_node_create(libopm_strdup(value));
@@ -218,7 +239,7 @@ libopm_config_set(OPM_CONFIG_T *config, unsigned int key, const void *value)
int
libopm_config_gettype(int key)
{
- const unsigned int num = sizeof(HASH) / sizeof(OPM_CONFIG_HASH_T);
+ const unsigned int num = sizeof(HASH) / sizeof(HASH[0]);
for (unsigned int i = 0; i < num; ++i)
if (HASH[i].key == key)
diff --git a/src/libopm/src/libopm.c b/src/libopm/src/libopm.c
index 89b376f..d6118ff 100644
--- a/src/libopm/src/libopm.c
+++ b/src/libopm/src/libopm.c
@@ -29,10 +29,14 @@
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
+#include <assert.h>
#include <poll.h>
#ifdef HAVE_LIBCRYPTO
#include <openssl/ssl.h>
#endif
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
#include "config.h"
#include "libopm.h"
@@ -392,24 +396,39 @@ libopm_protocol_config_free(OPM_PROTOCOL_CONFIG_T *protocol)
OPM_ERR_T
opm_scan(OPM_T *scanner, OPM_REMOTE_T *remote)
{
- OPM_SCAN_T *scan; /* New scan for OPM_T */
OPM_NODE_T *node; /* Node we'll add scan to when we link it to scans */
- struct in_addr in;
+ struct addrinfo hints, *res;
if (LIST_SIZE(&scanner->protocols) == 0 &&
LIST_SIZE(&remote->protocols) == 0)
return OPM_ERR_NOPROTOCOLS;
+ memset(&hints, 0, sizeof(hints));
+
+ hints.ai_family = AF_UNSPEC;
+ hints.ai_socktype = SOCK_STREAM;
+ hints.ai_flags = AI_NUMERICHOST;
+
/*
* XXX: libopm ideally shouldn't see an IP address in string representation.
* Could have been stuffed into the _OPM_REMOTE struct by the caller that
* already does getaddrinfo() anyway.
*/
- if (inet_pton(AF_INET, remote->ip, &in) <= 0)
+ if (getaddrinfo(remote->ip, NULL, &hints, &res) || res->ai_family != AF_INET) /* XXX: only do v4 for now */
+ {
+ if (res)
+ freeaddrinfo(res);
+
return OPM_ERR_BADADDR;
+ }
+
+ OPM_SCAN_T *scan = libopm_scan_create(scanner, remote);
- scan = libopm_scan_create(scanner, remote);
- memcpy(&scan->addr.sin_addr, &in, sizeof(scan->addr.sin_addr));
+ memcpy(&scan->addr, res->ai_addr, res->ai_addrlen);
+ scan->addr.ss_family = res->ai_family;
+ scan->addr_len = res->ai_addrlen;
+
+ freeaddrinfo(res);
node = libopm_node_create(scan);
libopm_list_add(&scanner->queue, node);
@@ -891,19 +910,16 @@ libopm_check_closed(OPM_T *scanner)
static void
libopm_do_connect(OPM_T * scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn)
{
- struct sockaddr_in *bind_ip;
- struct sockaddr_in *addr; /* Outgoing host */
- struct sockaddr_in local_addr; /* For binding */
-
- addr = &scan->addr; /* Already have the IP in byte format from opm_scan */
- addr->sin_family = AF_INET;
- addr->sin_port = htons(conn->port);
+ assert(scan->addr.ss_family == AF_INET);
- bind_ip = (struct sockaddr_in *)libopm_config(scanner->config, OPM_CONFIG_BIND_IP);
+ if (scan->addr.ss_family == AF_INET6)
+ ((struct sockaddr_in6 *)&scan->addr)->sin6_port = htons(conn->port);
+ else
+ ((struct sockaddr_in *)&scan->addr)->sin_port = htons(conn->port);
- conn->fd = socket(AF_INET, SOCK_STREAM, 0);
scanner->fd_use++; /* Increase file descriptor use */
+ conn->fd = socket(scan->addr.ss_family, SOCK_STREAM, 0);
if (conn->fd == -1)
{
libopm_do_callback(scanner, libopm_setup_remote(scan->remote, conn), OPM_CALLBACK_ERROR, OPM_ERR_NOFD);
@@ -911,15 +927,25 @@ libopm_do_connect(OPM_T * scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn)
return;
}
+ struct sockaddr_storage *bind_ip = libopm_config(scanner->config, OPM_CONFIG_BIND_IP);
if (bind_ip)
{
- memset(&local_addr, 0, sizeof(local_addr));
+ size_t addr_len;
- local_addr.sin_addr.s_addr = bind_ip->sin_addr.s_addr;
- local_addr.sin_family = AF_INET;
- local_addr.sin_port = htons(0);
+ if (bind_ip->ss_family == AF_INET6)
+ {
+ struct sockaddr_in6 *in = (struct sockaddr_in6 *)bind_ip;
+ in->sin6_port = htons(0);
+ addr_len = sizeof(*in);
+ }
+ else
+ {
+ struct sockaddr_in *in = (struct sockaddr_in *)bind_ip;
+ in->sin_port = htons(0);
+ addr_len = sizeof(*in);
+ }
- if (bind(conn->fd, (struct sockaddr *)&local_addr, sizeof(local_addr)) == -1)
+ if (bind(conn->fd, (const struct sockaddr *)bind_ip, addr_len) == -1)
{
libopm_do_callback(scanner, libopm_setup_remote(scan->remote, conn), OPM_CALLBACK_ERROR, OPM_ERR_BIND);
conn->state = OPM_STATE_CLOSED;
@@ -930,7 +956,7 @@ libopm_do_connect(OPM_T * scanner, OPM_SCAN_T *scan, OPM_CONNECTION_T *conn)
/* Set socket non blocking */
fcntl(conn->fd, F_SETFL, O_NONBLOCK);
- connect(conn->fd, (struct sockaddr *)addr, sizeof(*addr));
+ connect(conn->fd, (const struct sockaddr *)&scan->addr, scan->addr_len);
#ifdef HAVE_LIBCRYPTO
if (conn->protocol->use_tls)
diff --git a/src/libopm/src/libopm.h b/src/libopm/src/libopm.h
index ca03512..1e0a9cb 100644
--- a/src/libopm/src/libopm.h
+++ b/src/libopm/src/libopm.h
@@ -29,7 +29,8 @@ typedef int OPM_PROXYREAD_T (OPM_T *, OPM_SCAN_T *, OPM_CONNECTION_T *);
struct _OPM_SCAN
{
- struct sockaddr_in addr; /* Address in byte order of remote client */
+ struct sockaddr_storage addr; /* Address in byte order of remote client */
+ size_t addr_len;
OPM_REMOTE_T *remote; /* Pointed to the OPM_REMOTE_T for this scan, passed by client */
OPM_LIST_T connections; /* List of individual connections of this scan (1 for each protocol) */
};
diff --git a/src/patchlevel.h b/src/patchlevel.h
index e432bae..415cdac 100644
--- a/src/patchlevel.h
+++ b/src/patchlevel.h
@@ -4,5 +4,5 @@
*/
#ifndef PATCHLEVEL
-#define PATCHLEVEL "hopm-1.1.8"
+#define PATCHLEVEL "hopm-1.1.9"
#endif
diff --git a/src/scan.c b/src/scan.c
index b287f4f..79d380f 100644
--- a/src/scan.c
+++ b/src/scan.c
@@ -217,7 +217,7 @@ scan_init(void)
opm_config(scs->scanner, OPM_CONFIG_SCAN_PORT, &sc->target_port);
opm_config(scs->scanner, OPM_CONFIG_TIMEOUT, &sc->timeout);
opm_config(scs->scanner, OPM_CONFIG_MAX_READ, &sc->max_read);
- opm_config(scs->scanner, OPM_CONFIG_BIND_IP, sc->vhost);
+ opm_config(scs->scanner, OPM_CONFIG_BIND_IP, sc->bind);
/* add target strings */
LIST_FOREACH(p2, sc->target_string.head)
diff --git a/src/serno.h b/src/serno.h
deleted file mode 100644
index bdad155..0000000
--- a/src/serno.h
+++ /dev/null
@@ -1 +0,0 @@
-#define SERIALNUM "SVN"