diff --git a/AUTHORS b/AUTHORS index 0a0d78221..dc4275d08 100644 --- a/AUTHORS +++ b/AUTHORS @@ -104,4 +104,4 @@ See also: THANKS, doc/Versions, doc/Changes ------------------------------------------------------------------------------ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/CONTENTS b/CONTENTS index ac9540049..6b5dbc606 100644 --- a/CONTENTS +++ b/CONTENTS @@ -82,4 +82,4 @@ Last revised: September 21, 2018 Contains information on upgrading from a 1.6 bot to a 1.8 bot. _____________________________________________________________________ - Copyright (C) 2003 - 2021 Eggheads Development Team + Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/FEATURES b/FEATURES index 5f8fafe56..4de630f7e 100644 --- a/FEATURES +++ b/FEATURES @@ -44,4 +44,4 @@ Eggdrop Features Copyright (C) 1997 Robey Pointer -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/INSTALL b/INSTALL index 064b9ea37..81e2a5184 100644 --- a/INSTALL +++ b/INSTALL @@ -115,8 +115,12 @@ Eggdrop into from the previous step] automatically restart if the machine goes down or (heaven forbid) the bot should crash. Eggdrop includes a helper script - to generate a proper crontab script and entry. You can run this - script by typing: + to auto-generate either a systemd or crontab entry. To add a + systemd job, run: + + ./scripts/autobotchk [yourconfig.conf] -systemd + + or to add a crontab job, run: ./scripts/autobotchk [yourconfig.conf] @@ -154,5 +158,5 @@ the README file. If not, then READ IT!&@#%@! Have fun with Eggdrop! - Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2022 Eggheads + Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/NEWS b/NEWS index 44a6d3594..e6e210449 100644 --- a/NEWS +++ b/NEWS @@ -15,11 +15,42 @@ Last revised: December 4, 2021 _________________________________________________________________ +Eggdrop v1.9.5: + + General changes: + - Implemented a workaround for a Tcl issue parsing emojis that can cause a + crash + - Fixed an improper change to the display of bind flags that caused issues + with Tcl scripts that parse bind flags + - Added SSL header information to .status to help diagnose ./configure + mismatches + - Lots of under-the-hood bug fixes + + Botnet changes: + - None + + Tcl API changes: + - Tcl minimum required version is now 8.5! This actually happened in version + 1.9.0; we just forgot to tell people. Oops! :) + + Module changes: + - Updated woobie.mod with additional example code + + Eggdrop config changes: + - None + + Documentation changes: + - Added additional documentation to help write modules + - Updated botnet docs to include reference to TLS docs for secure links + - Updated Tcl repo from unmaintained FTP to HTTP repository + Eggdrop v1.9.4: General changes: - Fixed a DNS bug causing Eggdrop to often hang on DCC or telnet connections + - BETA: Added -systemd option to autobotchk script to restart Eggdrop via + systemd instead of cron - Reverted matchattr match syntax to previous functionality. Matching against "-" as a flag will once again successfully match against "no" flags, instead of returning an error. @@ -33,9 +64,11 @@ Eggdrop v1.9.4: - None Tcl API changes: - - Moved the 'gotmsg' function back as a raw bind. It was inadvertantly + - Moved the 'gotmsg' function back as a raw bind. It was inadvertently moved to a rawt bind in 1.9.3, causing issuse with scripts attempting to unbind this internal reference + Module changes: + - None Eggdrop config changes: - None @@ -177,7 +210,7 @@ Eggdrop v1.9.0: - Added CAP support, allowing Eggdrop to extend IRC server capabilities - Added support for SASL authentication - Added a BETA threaded DNS capability, enabled with the --enable-tdns - configure flag. This allows asynchronus DNS requests similar to the what + configure flag. This allows asynchronous DNS requests similar to the what the current DNS module offers, but using host system capability instead of rewriting it from scratch. Using this means you no longer have to use the DNS module. @@ -284,4 +317,4 @@ Eggdrop v1.9.0: ________________________________________________________________________ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/README b/README index 456773650..9696eee5d 100644 --- a/README +++ b/README @@ -156,28 +156,36 @@ COMMAND LINE Most people never use any of the options except -m and you usually only need to use that once. -SETTING UP A CRONTAB +AUTO-STARTING EGGDROP Systems go down from time to time, taking your Eggdrop along with it. You may not be not around to restart it manually, so you can instead use -your host's crontab system to automatically restart Eggdrop should it -quit for any reason. Eggdrop comes with an autobotchk shell script -creates that both checks if your Eggdrop is still running, and a crontab -entry to run the botchk script every 10 minutes. +features of the operating system to automatically restart Eggdrop should +it quit for any reason. Eggdrop comes with an autobotchk shell script +that can create either a systemd or crontab entry. The systemd option +will monitor your Eggdrop and a) start it when the machine boots and b) +restart the Eggdrop if it crashes for any reason. The (older) crontab +option will check (by default) every 10 minutes to see if your Eggdrop +is still running, and attempt to restart it if it is not. - Using autobotchk is probably the fastest way of creating your botchk - and adding a crontab entry. From the install directory, simply run: + To auto-generate a systemd job, from the Eggdrop install directory, + simply run: + + ./scripts/autobotchk -systemd + + To auto-geneerate a script to check Eggdrop's status and run it via a + crontab entry, simply run: ./scripts/autobotchk This will crontab your bot using the default setup. If you want a list - of autobotchk options, type './autobotchk'. An example with options - would be: + of autobotchk options, type './autobotchk'. A crontab example with + options would be: ./scripts/autobotchk -noemail -5 - This would setup crontab to run the botchk every 5 minutes and also to - not send you email saying that it restarted your bot. + This would setup crontab to run the botchk every 5 minutes and not + send you an email saying that it restarted your bot. DOCUMENTATION @@ -208,5 +216,5 @@ OBTAINING HELP - Don't ask to ask- just state your question, along with any relevant details and error messages -Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2022 Eggheads +Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/THANKS b/THANKS index 1f3f5ba6f..fb26bdb6e 100644 --- a/THANKS +++ b/THANKS @@ -34,7 +34,7 @@ Fabian Fabian Knittel fabian.knittel@avona.com Fred1 Chris Fuller G`Quann Florian Sander gquann@gmx.de Geo Geo Van O geo@eggheads.org -guppy Jeff Fisher guppy@techmonkeys.org +guppy Jeff Fisher jeff@zaf.ca ITE Federico Mennite ite@freex.ch Jason Jason Ede j.d.ede@sheffield.ac.uk John` John Johnny@technik.sth.ac.at @@ -236,6 +236,7 @@ eelcohuininga Eelco Huininga Ehrenberg ejm Emmanuel Marty +Empus Erick- Erick Velez erick@erick.org eryg-kai Evo|ver @@ -312,7 +313,7 @@ jay Jay Maynard Jay S. Monk jedis - Jeff Fisher guppy@techmonkeys.org + Jeff Fisher jeff@zaf.ca jeffx Jerome jerrold @@ -509,6 +510,7 @@ Robby robby@chatbelgie.be Roger Yerramsetti Rok Papez romulus +rsc Robert Scheck Rufus S Wilcox S7reaM diff --git a/aclocal.m4 b/aclocal.m4 index fc810bc45..2d798e249 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ dnl aclocal.m4: macros autoconf uses when building configure from configure.ac dnl -dnl Copyright (C) 1999 - 2022 Eggheads Development Team +dnl Copyright (C) 1999 - 2023 Eggheads Development Team dnl dnl This program is free software; you can redistribute it and/or dnl modify it under the terms of the GNU General Public License @@ -1087,14 +1087,14 @@ dnl AC_DEFUN([EGG_TCL_CHECK_VERSION], [ - if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 3; then + if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 5; then cat << EOF >&2 configure: error: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is $tclrecommendver and can be downloaded from - ${tclrecommendsite}. We require at least Tcl 8.3. + ${tclrecommendsite}. We require at least Tcl 8.5. See doc/COMPILE-GUIDE's 'Tcl Detection and Installation' section for more information. @@ -1114,16 +1114,6 @@ dnl AC_DEFUN([EGG_CACHE_UNSET], [unset $1]) -dnl EGG_TCL_CHECK_NOTIFIER_INIT -dnl -AC_DEFUN([EGG_TCL_CHECK_NOTIFIER_INIT], -[ - if test $TCL_MAJOR_VERSION -gt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -ge 4; then - AC_DEFINE(HAVE_TCL_NOTIFIER_INIT, 1, [Define for Tcl that has the Tcl_NotifierProcs struct member initNotifierProc (8.4 and later).]) - fi -]) - - dnl EGG_SUBST_EGGVERSION() dnl AC_DEFUN([EGG_SUBST_EGGVERSION], @@ -1432,7 +1422,6 @@ dnl AC_DEFUN([EGG_IPV6_COMPAT], [ if test "$enable_ipv6" = "yes"; then - AC_CHECK_FUNCS([gethostbyname2]) AC_CHECK_TYPES([struct in6_addr], egg_cv_var_have_in6_addr="yes", egg_cv_var_have_in6_addr="no", [ #include #include @@ -1621,11 +1610,12 @@ AC_DEFUN([EGG_TLS_DETECT], if test -z "$SSL_LIBS"; then AC_CHECK_LIB(crypto, X509_digest, , [havessllib="no"], [-lssl]) AC_CHECK_LIB(ssl, SSL_accept, , [havessllib="no"], [-lcrypto]) - AC_CHECK_FUNCS([EVP_md5 EVP_sha1 a2i_IPADDRESS], , [[ + AC_CHECK_FUNCS([EVP_sha1 a2i_IPADDRESS], , [[ havessllib="no" break ]]) fi + AC_CHECK_FUNCS([EVP_md5]) AC_CHECK_FUNC(OPENSSL_buf2hexstr, , AC_CHECK_FUNC(hex_to_string, AC_DEFINE([OPENSSL_buf2hexstr], [hex_to_string], [Define this to hex_to_string when using OpenSSL < 1.1.0]) diff --git a/config.h.in b/config.h.in index a0f0bbfe1..2e94ede45 100644 --- a/config.h.in +++ b/config.h.in @@ -2,7 +2,7 @@ /* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2022 Eggheads Development Team + * Copyright (C) 1999 - 2023 Eggheads Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -111,9 +111,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H -/* Define to 1 if you have the `gethostbyname2' function. */ -#undef HAVE_GETHOSTBYNAME2 - /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE @@ -177,12 +174,12 @@ /* Define to 1 if you have the `MD5_Update' function. */ #undef HAVE_MD5_UPDATE -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - /* Define to 1 if you have the `memset_s' function. */ #undef HAVE_MEMSET_S +/* Define to 1 if you have the header file. */ +#undef HAVE_MINIX_CONFIG_H + /* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP @@ -296,10 +293,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H -/* Define for Tcl that has the Tcl_NotifierProcs struct member - initNotifierProc (8.4 and later). */ -#undef HAVE_TCL_NOTIFIER_INIT - /* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE @@ -394,13 +387,16 @@ /* The size of `void*', as computed by sizeof. */ #undef SIZEOF_VOIDP -/* Define to 1 if you have the ANSI C header files. */ +/* Define to 1 if all of the C90 standard headers exist (not just the ones + required in a freestanding environment). This macro is provided for + backward compatibility; new code need not use it. */ #undef STDC_HEADERS /* Define if running on OSF/1 platform. */ #undef STOP_UAC -/* Define to 1 if you can safely include both and . */ +/* Define to 1 if you can safely include both and . This + macro is obsolete. */ #undef TIME_WITH_SYS_TIME /* Define this to enable SSL support. */ @@ -413,21 +409,87 @@ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif +/* Enable general extensions on macOS. */ +#ifndef _DARWIN_C_SOURCE +# undef _DARWIN_C_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif -/* Enable threading extensions on Solaris. */ +/* Enable X/Open compliant socket functions that do not require linking + with -lxnet on HP-UX 11.11. */ +#ifndef _HPUX_ALT_XOPEN_SOCKET_API +# undef _HPUX_ALT_XOPEN_SOCKET_API +#endif +/* Identify the host operating system as Minix. + This macro does not affect the system headers' behavior. + A future release of Autoconf may stop defining this macro. */ +#ifndef _MINIX +# undef _MINIX +#endif +/* Enable general extensions on NetBSD. + Enable NetBSD compatibility extensions on Minix. */ +#ifndef _NETBSD_SOURCE +# undef _NETBSD_SOURCE +#endif +/* Enable OpenBSD compatibility extensions on NetBSD. + Oddly enough, this does nothing on OpenBSD. */ +#ifndef _OPENBSD_SOURCE +# undef _OPENBSD_SOURCE +#endif +/* Define to 1 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_SOURCE +# undef _POSIX_SOURCE +#endif +/* Define to 2 if needed for POSIX-compatible behavior. */ +#ifndef _POSIX_1_SOURCE +# undef _POSIX_1_SOURCE +#endif +/* Enable POSIX-compatible threading on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # undef _POSIX_PTHREAD_SEMANTICS #endif +/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */ +#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */ +#ifndef __STDC_WANT_IEC_60559_BFP_EXT__ +# undef __STDC_WANT_IEC_60559_BFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */ +#ifndef __STDC_WANT_IEC_60559_DFP_EXT__ +# undef __STDC_WANT_IEC_60559_DFP_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */ +#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__ +# undef __STDC_WANT_IEC_60559_FUNCS_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */ +#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ +# undef __STDC_WANT_IEC_60559_TYPES_EXT__ +#endif +/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */ +#ifndef __STDC_WANT_LIB_EXT2__ +# undef __STDC_WANT_LIB_EXT2__ +#endif +/* Enable extensions specified by ISO/IEC 24747:2009. */ +#ifndef __STDC_WANT_MATH_SPEC_FUNCS__ +# undef __STDC_WANT_MATH_SPEC_FUNCS__ +#endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # undef _TANDEM_SOURCE #endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# undef __EXTENSIONS__ +/* Enable X/Open extensions. Define to 500 only if necessary + to make mbstate_t available. */ +#ifndef _XOPEN_SOURCE +# undef _XOPEN_SOURCE #endif @@ -443,16 +505,6 @@ # endif #endif -/* Define to 1 if on MINIX. */ -#undef _MINIX - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -#undef _POSIX_1_SOURCE - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -#undef _POSIX_SOURCE - /* Define this to a 64-bit type on Cygwin to satisfy OpenSSL dependencies. */ #undef __int64 @@ -473,7 +525,7 @@ if such a type exists, and if the system does not define it. */ #undef intptr_t -/* Define to `int' if does not define. */ +/* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t /* Define to `unsigned int' if does not define. */ diff --git a/configure b/configure index b7e1fb352..4fa3be30d 100755 --- a/configure +++ b/configure @@ -1,32 +1,35 @@ #! /bin/sh -# From configure.ac 13ab0170. +# From configure.ac a3274e67. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop 1.9.4. +# Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (C) 1999 - 2022 Eggheads Development Team +# Copyright (C) 1999 - 2023 Eggheads Development Team ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -36,46 +39,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -84,13 +87,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -99,8 +95,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -112,30 +112,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -157,20 +137,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -190,42 +172,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -233,14 +226,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -258,18 +258,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@eggheads.org + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bugs@eggheads.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -297,6 +298,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -314,6 +316,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -328,7 +338,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -337,7 +347,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -376,12 +386,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -393,18 +404,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -416,9 +436,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -445,7 +465,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -489,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -503,6 +523,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -516,6 +540,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -583,8 +614,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Eggdrop' PACKAGE_TARNAME='eggdrop' -PACKAGE_VERSION='1.9.4' -PACKAGE_STRING='Eggdrop 1.9.4' +PACKAGE_VERSION='1.9.5' +PACKAGE_STRING='Eggdrop 1.9.5' PACKAGE_BUGREPORT='bugs@eggheads.org' PACKAGE_URL='' @@ -592,41 +623,37 @@ ac_unique_file="src/eggdrop.h" ac_default_prefix=\${HOME}/eggdrop # Factoring default headers for most tests. ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include +#include +#ifdef HAVE_STDIO_H +# include #endif -#ifdef STDC_HEADERS +#ifdef HAVE_STDLIB_H # include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif #endif #ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif # include #endif -#ifdef HAVE_STRINGS_H -# include -#endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif #ifdef HAVE_UNISTD_H # include #endif" -ac_header_list= +ac_header_c_list= +ac_func_c_list= ac_subst_vars='LTLIBOBJS EGG_CROSS_COMPILING MOD_UPDIR @@ -684,6 +711,9 @@ PTHREAD_LIBS PTHREAD_CXX PTHREAD_CC ax_pthread_config +EGREP +GREP +CPP SED host_os host_vendor @@ -706,9 +736,6 @@ INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM EGGEXEC -EGREP -GREP -CPP OBJEXT EXEEXT ac_ct_CC @@ -852,8 +879,6 @@ do *) ac_optarg=yes ;; esac - # Accept the important Cygnus configure options, so we can diagnose typos. - case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; @@ -894,9 +919,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -920,9 +945,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" + as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" @@ -1133,9 +1158,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1149,9 +1174,9 @@ do ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" + as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" @@ -1195,9 +1220,9 @@ Try \`$0 --help' for more information" *) # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; @@ -1213,7 +1238,7 @@ if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi @@ -1277,7 +1302,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | +printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -1334,7 +1359,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 Eggdrop 1.9.4 to adapt to many kinds of systems. +\`configure' configures Eggdrop 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1401,7 +1426,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Eggdrop 1.9.4:";; + short | recursive ) echo "Configuration of Eggdrop 1.9.5:";; esac cat <<\_ACEOF @@ -1464,9 +1489,9 @@ if test "$ac_init_help" = "recursive"; then case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -1494,7 +1519,8 @@ esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. + # Check for configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive @@ -1502,7 +1528,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix echo && $SHELL "$ac_srcdir/configure" --help=recursive else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done @@ -1511,14 +1537,14 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Eggdrop configure 1.9.4 -generated by GNU Autoconf 2.69 +Eggdrop configure 1.9.5 +generated by GNU Autoconf 2.71 -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team _ACEOF exit fi @@ -1533,14 +1559,14 @@ fi ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext + rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1548,14 +1574,15 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest.$ac_objext; then : + } && test -s conftest.$ac_objext +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1565,176 +1592,6 @@ fi } # ac_fn_c_try_compile -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## -------------------------------- ## -## Report this to bugs@eggheads.org ## -## -------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in @@ -1742,26 +1599,28 @@ fi ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile @@ -1772,14 +1631,14 @@ $as_echo "$ac_res" >&6; } ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext + rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -1787,17 +1646,18 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext - }; then : + } +then : ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 @@ -1812,17 +1672,56 @@ fi } # ac_fn_c_try_link +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. @@ -1830,16 +1729,9 @@ else #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif + which can conflict with char $2 (); below. */ +#include #undef $2 /* Override any GCC internal prototype to avoid an error. @@ -1857,28 +1749,72 @@ choke me #endif int -main () +main (void) { return $2 (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that +# executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +printf "%s\n" "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + ac_retval=0 +else $as_nop + printf "%s\n" "$as_me: program exited with status $ac_status" >&5 + printf "%s\n" "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -1886,17 +1822,18 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +printf %s "checking for $2... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof ($2)) return 0; @@ -1904,12 +1841,13 @@ if (sizeof ($2)) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { if (sizeof (($2))) return 0; @@ -1917,18 +1855,19 @@ if (sizeof (($2))) return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop eval "$3=yes" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type @@ -1940,16 +1879,17 @@ $as_echo "$ac_res" >&6; } ac_fn_c_check_member () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 +printf %s "checking for $2.$3... " >&6; } +if eval test \${$4+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (ac_aggr.$3) @@ -1958,14 +1898,15 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int -main () +main (void) { static $2 ac_aggr; if (sizeof ac_aggr.$3) @@ -1974,41 +1915,45 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$4=yes" -else +else $as_nop eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_member -# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES -# --------------------------------------------- +# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR +# ------------------------------------------------------------------ # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR -# accordingly. -ac_fn_c_check_decl () +# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR. +ac_fn_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +printf %s "checking whether $as_decl_name is declared... " >&6; } +if eval test \${$3+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 -$as_echo_n "checking whether $as_decl_name is declared... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else + eval ac_save_FLAGS=\$$6 + as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { #ifndef $as_decl_name #ifdef __cplusplus @@ -2022,19 +1967,22 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$3=yes" -else +else $as_nop eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + eval $6=\$ac_save_FLAGS + fi eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -} # ac_fn_c_check_decl +} # ac_fn_check_decl # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- @@ -2050,7 +1998,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; @@ -2060,14 +2008,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2077,9 +2026,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid; break -else +else $as_nop as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= @@ -2087,14 +2037,14 @@ else fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; @@ -2104,14 +2054,15 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; @@ -2121,9 +2072,10 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_lo=$ac_mid; break -else +else $as_nop as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= @@ -2131,14 +2083,14 @@ else fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else +else $as_nop ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val @@ -2146,7 +2098,7 @@ while test "x$ac_lo" != "x$ac_hi"; do /* end confdefs.h. */ $4 int -main () +main (void) { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; @@ -2156,12 +2108,13 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_hi=$ac_mid -else +else $as_nop as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; @@ -2171,12 +2124,12 @@ esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } +static long int longval (void) { return $2; } +static unsigned long int ulongval (void) { return $2; } #include #include int -main () +main (void) { FILE *f = fopen ("conftest.val", "w"); @@ -2204,9 +2157,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : echo >>conftest.val; read $3 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 Eggdrop $as_me 1.9.4, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by Eggdrop $as_me 1.9.5, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2258,8 +2232,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS @@ -2294,7 +2272,7 @@ do | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; @@ -2329,11 +2307,13 @@ done # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? + # Sanitize IFS. + IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo - $as_echo "## ---------------- ## + printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo @@ -2344,8 +2324,8 @@ trap 'exit_status=$? case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -2369,7 +2349,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -2377,14 +2357,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## + printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo @@ -2392,15 +2372,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; do eval ac_val=\$$ac_var case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac - $as_echo "$ac_var='\''$ac_val'\''" + printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then - $as_echo "## ----------- ## + printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo @@ -2408,8 +2388,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; echo fi test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && @@ -2423,63 +2403,48 @@ ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h -$as_echo "/* confdefs.h */" > confdefs.h +printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac + ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" + +for ac_site_file in $ac_site_files do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi @@ -2489,199 +2454,599 @@ if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi -as_fn_append ac_header_list " stdlib.h" -as_fn_append ac_header_list " unistd.h" -as_fn_append ac_header_list " sys/param.h" -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## +# Test code for whether the C compiler supports C89 (global declarations) +ac_c_conftest_c89_globals=' +/* Does the compiler advertise C89 conformance? + Do not test the value of __STDC__, because some compilers set it to 0 + while being otherwise adequately conformant. */ +#if !defined __STDC__ +# error "Compiler does not advertise C89 conformance" +#endif -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ +struct buf { int x; }; +struct buf * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not \xHH hex character constants. + These do not provoke an error unfortunately, instead are silently treated + as an "x". The following induces an error, until -std is added to get + proper ANSI mode. Curiously \x00 != x always comes out true, for an + array size at least. It is necessary to write \x00 == 0 to get something + that is true only with -std. */ +int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) '\''x'\'' +int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), + int, int);' +# Test code for whether the C compiler supports C89 (body of main). +ac_c_conftest_c89_main=' +ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); +' +# Test code for whether the C compiler supports C99 (global declarations) +ac_c_conftest_c99_globals=' +// Does the compiler advertise C99 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L +# error "Compiler does not advertise C99 conformance" +#endif -ac_aux_dir= -for ac_dir in misc "$srcdir"/misc; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in misc \"$srcdir\"/misc" "$LINENO" 5 -fi +#include +extern int puts (const char *); +extern int printf (const char *, ...); +extern int dprintf (int, const char *, ...); +extern void *malloc (size_t); -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +// Check varargs macros. These examples are taken from C99 6.10.3.5. +// dprintf is used instead of fprintf to avoid needing to declare +// FILE and stderr. +#define debug(...) dprintf (2, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + #error "your preprocessor is broken" +#endif +#if BIG_OK +#else + #error "your preprocessor is broken" +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; -ac_config_headers="$ac_config_headers config.h" +struct incomplete_array +{ + int datasize; + double data[]; +}; +struct named_init { + int number; + const wchar_t *name; + double average; +}; +typedef const char *ccp; +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) + continue; + return 0; +} +// Check varargs and va_copy. +static bool +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + const char *str = ""; + int number = 0; + float fnumber = 0; + while (*format) + { + switch (*format++) + { + case '\''s'\'': // string + str = va_arg (args_copy, const char *); + break; + case '\''d'\'': // int + number = va_arg (args_copy, int); + break; + case '\''f'\'': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); + return *str && number && fnumber; +} +' +# Test code for whether the C compiler supports C99 (body of main). +ac_c_conftest_c99_main=' + // Check bool. + _Bool success = false; + success |= (argc != 0); -# Print start message + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: This is Eggdrop's GNU configure script." >&5 -$as_echo "This is Eggdrop's GNU configure script." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: It's going to run a bunch of tests to hopefully make your compile" >&5 -$as_echo "It's going to run a bunch of tests to hopefully make your compile" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: work without much twiddling." >&5 -$as_echo "work without much twiddling." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } + // Check varargs. + success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); + test_varargs_macros (); + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; - egg_ac_parameters= - ac_prev= - for ac_arg in $ac_configure_args; do - if test -n "$ac_prev"; then - ac_prev= - continue - fi - case $ac_arg in - -cache-file | --cache-file | --cache-fil | --cache-fi | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - ;; - --config-cache | -C) - ;; - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - ;; - *) egg_ac_parameters="$egg_ac_parameters $ac_arg" ;; - esac - done + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + ni.number = 58; + int dynamic_array[ni.number]; + dynamic_array[0] = argv[0][0]; + dynamic_array[ni.number - 1] = 543; -cat >>confdefs.h <<_ACEOF -#define EGG_AC_ARGS_RAW $egg_ac_parameters -_ACEOF + // work around unused variable warnings + ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' + || dynamic_array[ni.number - 1] != 543); +' +# Test code for whether the C compiler supports C11 (global declarations) +ac_c_conftest_c11_globals=' +// Does the compiler advertise C11 conformance? +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L +# error "Compiler does not advertise C11 conformance" +#endif +// Check _Alignas. +char _Alignas (double) aligned_as_double; +char _Alignas (0) no_special_alignment; +extern char aligned_as_int; +char _Alignas (0) _Alignas (int) aligned_as_int; +// Check _Alignof. +enum +{ + int_alignment = _Alignof (int), + int_array_alignment = _Alignof (int[100]), + char_alignment = _Alignof (char) +}; +_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); -# Check for a working C compiler -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - for ac_prog in gcc cc clang - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +// Check _Noreturn. +int _Noreturn does_not_return (void) { for (;;) continue; } + +// Check _Static_assert. +struct test_static_assert +{ + int x; + _Static_assert (sizeof (int) <= sizeof (long int), + "_Static_assert does not work in struct"); + long int y; +}; + +// Check UTF-8 literals. +#define u8 syntax error! +char const utf8_literal[] = u8"happens to be ASCII" "another string"; + +// Check duplicate typedefs. +typedef long *long_ptr; +typedef long int *long_ptr; +typedef long_ptr long_ptr; + +// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. +struct anonymous +{ + union { + struct { int i; int j; }; + struct { int k; long int l; } w; + }; + int m; +} v1; +' + +# Test code for whether the C compiler supports C11 (body of main). +ac_c_conftest_c11_main=' + _Static_assert ((offsetof (struct anonymous, i) + == offsetof (struct anonymous, w.k)), + "Anonymous union alignment botch"); + v1.i = 2; + v1.w.k = 5; + ok |= v1.i != 5; +' + +# Test code for whether the C compiler supports C11 (complete). +ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} +${ac_c_conftest_c11_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + ${ac_c_conftest_c11_main} + return ok; +} +" + +# Test code for whether the C compiler supports C99 (complete). +ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} +${ac_c_conftest_c99_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + ${ac_c_conftest_c99_main} + return ok; +} +" + +# Test code for whether the C compiler supports C89 (complete). +ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} + +int +main (int argc, char **argv) +{ + int ok = 0; + ${ac_c_conftest_c89_main} + return ok; +} +" + +as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" +as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" +as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" +as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" +as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" +as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" +as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" +as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" +as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" +as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" +as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" +as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" +as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H" +as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H" +as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" +as_fn_append ac_func_c_list " getpagesize HAVE_GETPAGESIZE" + +# Auxiliary files required by this configure script. +ac_aux_files="config.guess config.sub install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/misc" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 +fi + + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' + and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +ac_config_headers="$ac_config_headers config.h" + + + + + + + + + +# Print start message + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: This is Eggdrop's GNU configure script." >&5 +printf "%s\n" "This is Eggdrop's GNU configure script." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: It's going to run a bunch of tests to hopefully make your compile" >&5 +printf "%s\n" "It's going to run a bunch of tests to hopefully make your compile" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: work without much twiddling." >&5 +printf "%s\n" "work without much twiddling." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + + + egg_ac_parameters= + ac_prev= + for ac_arg in $ac_configure_args; do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case $ac_arg in + -cache-file | --cache-file | --cache-fil | --cache-fi | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + ;; + --config-cache | -C) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + *) egg_ac_parameters="$egg_ac_parameters $ac_arg" ;; + esac + done + + + +printf "%s\n" "#define EGG_AC_ARGS_RAW $egg_ac_parameters" >>confdefs.h + + + + +# Check for a working C compiler + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in gcc cc clang + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else @@ -2689,11 +3054,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2704,11 +3073,11 @@ fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +printf "%s\n" "$CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2721,11 +3090,12 @@ if test -z "$CC"; then do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else @@ -2733,11 +3103,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -2748,11 +3122,11 @@ fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +printf "%s\n" "$ac_ct_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -2764,8 +3138,8 @@ done else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC @@ -2773,23 +3147,23 @@ esac fi -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 -for ac_option in --version -v -V -qversion; do +for ac_option in --version -v -V -qversion -version; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then @@ -2799,7 +3173,7 @@ $as_echo "$ac_try_echo"; } >&5 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done @@ -2807,7 +3181,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -2819,9 +3193,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +printf %s "checking whether the C compiler works... " >&6; } +ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" @@ -2842,11 +3216,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, @@ -2863,7 +3238,7 @@ do # certainly right. break;; *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi @@ -2879,44 +3254,46 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else +else $as_nop ac_file='' fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 +if test -z "$ac_file" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +printf %s "checking for C compiler default output file name... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with @@ -2930,15 +3307,15 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext @@ -2947,7 +3324,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; @@ -2959,8 +3336,8 @@ _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in @@ -2968,10 +3345,10 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in @@ -2979,39 +3356,40 @@ $as_echo "$ac_try_echo"; } >&5 *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +printf %s "checking for suffix of object files... " >&6; } +if test ${ac_cv_objext+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -3025,11 +3403,12 @@ case "(($ac_try" in *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 +printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in @@ -3038,31 +3417,32 @@ $as_echo "$ac_try_echo"; } >&5 break;; esac done -else - $as_echo "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 +printf %s "checking whether the compiler supports GNU C... " >&6; } +if test ${ac_cv_c_compiler_gnu+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __GNUC__ choke me @@ -3072,29 +3452,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_compiler_gnu=yes -else +else $as_nop ac_compiler_gnu=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } +ac_compiler_gnu=$ac_cv_c_compiler_gnu + if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi -ac_test_CFLAGS=${CFLAGS+set} +ac_test_CFLAGS=${CFLAGS+y} ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +printf %s "checking whether $CC accepts -g... " >&6; } +if test ${ac_cv_prog_cc_g+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no @@ -3103,57 +3487,60 @@ else /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes -else +else $as_nop CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -else +else $as_nop ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +printf "%s\n" "$ac_cv_prog_cc_g" >&6; } +if test $ac_test_CFLAGS; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then @@ -3168,289 +3555,163 @@ else CFLAGS= fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no +ac_prog_cc_stdc=no +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 +printf %s "checking for $CC option to enable C11 features... " >&6; } +if test ${ac_cv_prog_cc_c11+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} +$ac_c_conftest_c11_program _ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +for ac_arg in '' -std=gnu11 do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c11=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c11" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - if test "x$cross_compiling" = x; then - cat << 'EOF' >&2 -configure: error: - - This system does not appear to have a working C compiler. - A working C compiler is required to compile Eggdrop. - -EOF - exit 1 - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 -$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } -if ${ac_cv_prog_cc_c99+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test "x$ac_cv_prog_cc_c11" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c11" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } + CC="$CC $ac_cv_prog_cc_c11" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 + ac_prog_cc_stdc=c11 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 +printf %s "checking for $CC option to enable C99 features... " >&6; } +if test ${ac_cv_prog_cc_c99+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#include -#include -#include - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -#define debug(...) fprintf (stderr, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - your preprocessor is broken; -#endif -#if BIG_OK -#else - your preprocessor is broken; -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // See if C++-style comments work. - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\0'; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static void -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str; - int number; - float fnumber; - - while (*format) - { - switch (*format++) - { - case 's': // string - str = va_arg (args_copy, const char *); - break; - case 'd': // int - number = va_arg (args_copy, int); - break; - case 'f': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); -} - -int -main () -{ - - // Check bool. - _Bool success = false; - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - test_varargs ("s, d' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' - || dynamic_array[ni.number - 1] != 543); - - ; - return 0; -} +$ac_c_conftest_c99_program _ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= do CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : + if ac_fn_c_try_compile "$LINENO" +then : ac_cv_prog_cc_c99=$ac_arg fi -rm -f core conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cc_c99" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC +fi +if test "x$ac_cv_prog_cc_c99" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c99" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } + CC="$CC $ac_cv_prog_cc_c99" +fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 + ac_prog_cc_stdc=c99 +fi +fi +if test x$ac_prog_cc_stdc = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 +printf %s "checking for $CC option to enable C89 features... " >&6; } +if test ${ac_cv_prog_cc_c89+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_c_conftest_c89_program +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c99" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c99" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c99" != xno; then : +if test "x$ac_cv_prog_cc_c89" = xno +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +printf "%s\n" "unsupported" >&6; } +else $as_nop + if test "x$ac_cv_prog_cc_c89" = x +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +printf "%s\n" "none needed" >&6; } +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } + CC="$CC $ac_cv_prog_cc_c89" fi + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 + ac_prog_cc_stdc=c89 +fi +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + if test "x$cross_compiling" = x; then + cat << 'EOF' >&2 +configure: error: + + This system does not appear to have a working C compiler. + A working C compiler is required to compile Eggdrop. + +EOF + exit 1 + fi @@ -3468,470 +3729,183 @@ EOF # These 3 need to be done before any AC_COMPILE_IFELSE()'s. -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes +ac_header= ac_cache= +for ac_item in $ac_header_c_list do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - + if test $ac_cache; then + ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" + if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then + printf "%s\n" "#define $ac_item 1" >> confdefs.h + fi + ac_header= ac_cache= + elif test $ac_header; then + ac_cache=$ac_item + else + ac_header=$ac_item + fi done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - done - ac_cv_prog_CPP=$CPP -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi +printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if test ${ac_cv_safe_to_define___extensions__+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#include -#include +# define __EXTENSIONS__ 1 + $ac_includes_default int -main () +main (void) { ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_safe_to_define___extensions__=yes +else $as_nop + ac_cv_safe_to_define___extensions__=no fi -rm -f conftest* - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; } -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5 +printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; } +if test ${ac_cv_should_define__xopen_source+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_should_define__xopen_source=no + if test $ac_cv_header_wchar_h = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : -else - ac_cv_header_stdc=no -fi -rm -f conftest* + #include + mbstate_t x; +int +main (void) +{ -fi + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) + #define _XOPEN_SOURCE 500 + #include + mbstate_t x; int -main () +main (void) { - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; + + ; return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no +if ac_fn_c_try_compile "$LINENO" +then : + ac_cv_should_define__xopen_source=yes fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 +printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } -done + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h - ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" -if test "x$ac_cv_header_minix_config_h" = xyes; then : - MINIX=yes -else - MINIX= -fi + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h - if test "$MINIX" = yes; then + printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h -$as_echo "#define _MINIX 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h - fi + printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 -$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } -if ${ac_cv_safe_to_define___extensions__+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ + printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_safe_to_define___extensions__=yes -else - ac_cv_safe_to_define___extensions__=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 -$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } - test $ac_cv_safe_to_define___extensions__ = yes && - $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + if test $ac_cv_header_minix_config_h = yes +then : + MINIX=yes + printf "%s\n" "#define _MINIX 1" >>confdefs.h - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h +else $as_nop + MINIX= +fi + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h +fi + if test $ac_cv_should_define__xopen_source = yes +then : + printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h +fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 -$as_echo_n "checking for library containing strerror... " >&6; } -if ${ac_cv_search_strerror+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5 +printf %s "checking for library containing strerror... " >&6; } +if test ${ac_cv_search_strerror+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3939,46 +3913,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char strerror (); int -main () +main (void) { return strerror (); ; return 0; } _ACEOF -for ac_lib in '' cposix; do +for ac_lib in '' cposix +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_strerror=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_strerror+:} false; then : + if test ${ac_cv_search_strerror+y} +then : break fi done -if ${ac_cv_search_strerror+:} false; then : +if test ${ac_cv_search_strerror+y} +then : -else +else $as_nop ac_cv_search_strerror=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 -$as_echo "$ac_cv_search_strerror" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 +printf "%s\n" "$ac_cv_search_strerror" >&6; } ac_res=$ac_cv_search_strerror -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi @@ -3987,11 +3963,12 @@ fi # Check C compiler characteristics. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc" >&5 -$as_echo_n "checking for icc... " >&6; } -if ${egg_cv_var_cc_icc+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for icc" >&5 +printf %s "checking for icc... " >&6; } +if test ${egg_cv_var_cc_icc+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4001,20 +3978,21 @@ else #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : egg_cv_var_cc_icc="yes" -else +else $as_nop egg_cv_var_cc_icc="no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_cc_icc" >&5 -$as_echo "$egg_cv_var_cc_icc" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_cc_icc" >&5 +printf "%s\n" "$egg_cv_var_cc_icc" >&6; } if test "$egg_cv_var_cc_icc" = yes; then ICC="yes" @@ -4024,11 +4002,12 @@ $as_echo "$egg_cv_var_cc_icc" >&6; } if test "$GCC" = yes && test "$ICC" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler understands -pipe" >&5 -$as_echo_n "checking whether the compiler understands -pipe... " >&6; } -if ${egg_cv_var_ccpipe+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler understands -pipe" >&5 +printf %s "checking whether the compiler understands -pipe... " >&6; } +if test ${egg_cv_var_ccpipe+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_old_CC="$CC" CC="$CC -pipe" @@ -4036,28 +4015,29 @@ else /* end confdefs.h. */ int -main () +main (void) { return(0); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : egg_cv_var_ccpipe="yes" -else +else $as_nop egg_cv_var_ccpipe="no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC="$ac_old_CC" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccpipe" >&5 -$as_echo "$egg_cv_var_ccpipe" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccpipe" >&5 +printf "%s\n" "$egg_cv_var_ccpipe" >&6; } if test "$egg_cv_var_ccpipe" = yes; then @@ -4074,11 +4054,12 @@ $as_echo "$egg_cv_var_ccpipe" >&6; } if test "$GCC" = yes && test "$ICC" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler understands -Wall" >&5 -$as_echo_n "checking whether the compiler understands -Wall... " >&6; } -if ${egg_cv_var_ccwall+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler understands -Wall" >&5 +printf %s "checking whether the compiler understands -Wall... " >&6; } +if test ${egg_cv_var_ccwall+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wall" @@ -4086,28 +4067,29 @@ else /* end confdefs.h. */ int -main () +main (void) { return(0); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : egg_cv_var_ccwall="yes" -else +else $as_nop egg_cv_var_ccwall="no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$ac_old_CFLAGS" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccwall" >&5 -$as_echo "$egg_cv_var_ccwall" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccwall" >&5 +printf "%s\n" "$egg_cv_var_ccwall" >&6; } if test "$egg_cv_var_ccwall" = yes; then @@ -4136,7 +4118,9 @@ $as_echo "$egg_cv_var_ccwall" >&6; } # Checks for programs. -# Find a good install program. We prefer a C program (faster), + + + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install @@ -4150,20 +4134,25 @@ $as_echo "$egg_cv_var_ccwall" >&6; } # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +case $as_dir in #(( + ./ | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; @@ -4173,13 +4162,13 @@ case $as_dir/ in #(( # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else @@ -4187,12 +4176,12 @@ case $as_dir/ in #(( echo one > conftest.one echo two > conftest.two mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" break 3 fi fi @@ -4208,7 +4197,7 @@ IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi - if test "${ac_cv_path_install+set}" = set; then + if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a @@ -4218,8 +4207,8 @@ fi INSTALL=$ac_install_sh fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. @@ -4233,11 +4222,12 @@ for ac_prog in make gmake do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MAKE+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_MAKE+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$MAKE"; then ac_cv_prog_MAKE="$MAKE" # Let the user override the test. else @@ -4245,11 +4235,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MAKE="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4260,24 +4254,25 @@ fi fi MAKE=$ac_cv_prog_MAKE if test -n "$MAKE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 -$as_echo "$MAKE" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 +printf "%s\n" "$MAKE" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi test -n "$MAKE" && break done -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @@ -4293,23 +4288,24 @@ esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } SET_MAKE= else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else @@ -4317,11 +4313,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4332,11 +4332,11 @@ fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +printf "%s\n" "$RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4345,11 +4345,12 @@ if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_RANLIB+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else @@ -4357,11 +4358,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4372,11 +4377,11 @@ fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +printf "%s\n" "$ac_ct_RANLIB" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then @@ -4384,8 +4389,8 @@ fi else case $cross_compiling:$ac_tool_warned in yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB @@ -4394,15 +4399,15 @@ else RANLIB="$ac_cv_prog_RANLIB" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +printf %s "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +printf "%s\n" "no, using $LN_S" >&6; } fi @@ -4413,11 +4418,12 @@ c EOF for ac_prog in 'head -n 1' 'head -1' 'sed 1q'; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $ac_prog works" >&5 -$as_echo_n "checking whether $ac_prog works... " >&6; } - if ${ac_cv_prog_HEAD_1+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $ac_prog works" >&5 +printf %s "checking whether $ac_prog works... " >&6; } + if test ${ac_cv_prog_HEAD_1+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$HEAD_1"; then # Let the user override the test. @@ -4431,12 +4437,12 @@ else fi if test -n "$ac_cv_prog_HEAD_1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } break else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi done @@ -4458,11 +4464,12 @@ EOF # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else @@ -4470,11 +4477,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4485,11 +4496,11 @@ fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4502,11 +4513,12 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else @@ -4514,11 +4526,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4529,11 +4545,11 @@ fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4554,11 +4570,12 @@ EOF # Extract the first word of "basename", so it can be a program name with args. set dummy basename; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_BASENAME+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_BASENAME+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$BASENAME"; then ac_cv_prog_BASENAME="$BASENAME" # Let the user override the test. else @@ -4566,11 +4583,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_BASENAME="basename" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4581,11 +4602,11 @@ fi fi BASENAME=$ac_cv_prog_BASENAME if test -n "$BASENAME"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5 -$as_echo "$BASENAME" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BASENAME" >&5 +printf "%s\n" "$BASENAME" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4602,11 +4623,12 @@ EOF # Extract the first word of "uname", so it can be a program name with args. set dummy uname; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_UNAME+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_UNAME+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$UNAME"; then ac_cv_prog_UNAME="$UNAME" # Let the user override the test. else @@ -4614,11 +4636,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_UNAME="uname" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -4629,11 +4655,11 @@ fi fi UNAME=$ac_cv_prog_UNAME if test -n "$UNAME"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5 -$as_echo "$UNAME" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $UNAME" >&5 +printf "%s\n" "$UNAME" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -4643,9 +4669,10 @@ fi # Do this *before* EGG_CHECK_OS # Check whether --enable-strip was given. -if test "${enable_strip+set}" = set; then : +if test ${enable_strip+y} +then : enableval=$enable_strip; enable_strip="$enableval" -else +else $as_nop enable_strip="no" fi @@ -4667,26 +4694,29 @@ EOF # Checks for system libraries. -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else + + + # Make sure we can run config.sub. +$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +printf %s "checking build system type... " >&6; } +if test ${ac_cv_build+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` + ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; @@ -4705,21 +4735,22 @@ IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +printf %s "checking host system type... " >&6; } +if test ${ac_cv_host+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 + ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; @@ -4738,11 +4769,12 @@ IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +printf %s "checking for a sed that does not truncate output... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" @@ -4756,10 +4788,15 @@ else for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in sed gsed + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED @@ -4768,20 +4805,294 @@ case `"$ac_path_SED" --version 2>&1` in ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 - $as_echo_n 0123456789 >"conftest.in" + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +printf "%s\n" "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +printf %s "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test ${ac_cv_prog_CPP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + # Double quotes because $CC needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +printf "%s\n" "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + +else $as_nop + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO" +then : + # Broken: success on invalid input. +continue +else $as_nop + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok +then : + +else $as_nop + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +printf %s "checking for grep that handles long lines and -e... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in grep ggrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + printf "%s\n" 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +printf "%s\n" "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +printf %s "checking for egrep... " >&6; } +if test ${ac_cv_path_EGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in egrep + do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then + if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break @@ -4789,36 +5100,38 @@ case `"$ac_path_SED" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - $ac_path_SED_found && break 3 + $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else - ac_cv_path_SED=$SED + ac_cv_path_EGREP=$EGREP fi + fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +printf "%s\n" "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + # FIXME: this needs to be fixed so that it works on IRIX if test "$IRIX" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Skipping library tests because they CONFUSE IRIX." >&5 -$as_echo "$as_me: WARNING: Skipping library tests because they CONFUSE IRIX." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Skipping library tests because they CONFUSE IRIX." >&5 +printf "%s\n" "$as_me: WARNING: Skipping library tests because they CONFUSE IRIX." >&2;} else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 -$as_echo_n "checking for library containing gethostbyname... " >&6; } -if ${ac_cv_search_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing gethostbyname" >&5 +printf %s "checking for library containing gethostbyname... " >&6; } +if test ${ac_cv_search_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4826,55 +5139,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char gethostbyname (); int -main () +main (void) { return gethostbyname (); ; return 0; } _ACEOF -for ac_lib in '' nsl; do +for ac_lib in '' nsl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_gethostbyname=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_gethostbyname+:} false; then : + if test ${ac_cv_search_gethostbyname+y} +then : break fi done -if ${ac_cv_search_gethostbyname+:} false; then : +if test ${ac_cv_search_gethostbyname+y} +then : -else +else $as_nop ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 -$as_echo "$ac_cv_search_gethostbyname" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 +printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } ac_res=$ac_cv_search_gethostbyname -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 -$as_echo_n "checking for library containing socket... " >&6; } -if ${ac_cv_search_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing socket" >&5 +printf %s "checking for library containing socket... " >&6; } +if test ${ac_cv_search_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4882,55 +5198,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char socket (); int -main () +main (void) { return socket (); ; return 0; } _ACEOF -for ac_lib in '' socket; do +for ac_lib in '' socket +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_socket=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_socket+:} false; then : + if test ${ac_cv_search_socket+y} +then : break fi done -if ${ac_cv_search_socket+:} false; then : +if test ${ac_cv_search_socket+y} +then : -else +else $as_nop ac_cv_search_socket=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 -$as_echo "$ac_cv_search_socket" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 +printf "%s\n" "$ac_cv_search_socket" >&6; } ac_res=$ac_cv_search_socket -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 -$as_echo_n "checking for socket in -lsocket... " >&6; } -if ${ac_cv_lib_socket_socket+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 +printf %s "checking for socket in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_socket+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4939,30 +5258,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char socket (); int -main () +main (void) { return socket (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_socket=yes -else +else $as_nop ac_cv_lib_socket_socket=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 -$as_echo "$ac_cv_lib_socket_socket" >&6; } -if test "x$ac_cv_lib_socket_socket" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 +printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } +if test "x$ac_cv_lib_socket_socket" = xyes +then : LIBS="-lsocket -lnsl $LIBS" fi @@ -4992,41 +5310,41 @@ if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then ax_pthread_save_CC="$CC" ax_pthread_save_CFLAGS="$CFLAGS" ax_pthread_save_LIBS="$LIBS" - if test "x$PTHREAD_CC" != "x"; then : + if test "x$PTHREAD_CC" != "x" +then : CC="$PTHREAD_CC" fi - if test "x$PTHREAD_CXX" != "x"; then : + if test "x$PTHREAD_CXX" != "x" +then : CXX="$PTHREAD_CXX" fi CFLAGS="$CFLAGS $PTHREAD_CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 -$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5 +printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char pthread_join (); int -main () +main (void) { return pthread_join (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_pthread_ok=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 -$as_echo "$ax_pthread_ok" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } if test "x$ax_pthread_ok" = "xno"; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" @@ -5104,11 +5422,12 @@ case $host_os in _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 -$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} + $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5 +printf "%s\n" "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;} fi -rm -f conftest* +rm -rf conftest* ;; @@ -5128,11 +5447,12 @@ esac # Are we compiling with Clang? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 -$as_echo_n "checking whether $CC is Clang... " >&6; } -if ${ax_cv_PTHREAD_CLANG+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5 +printf %s "checking whether $CC is Clang... " >&6; } +if test ${ax_cv_PTHREAD_CLANG+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_PTHREAD_CLANG=no # Note that Autoconf sets GCC=yes for Clang as well as GCC if test "x$GCC" = "xyes"; then @@ -5145,16 +5465,17 @@ else _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then : + $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 +then : ax_cv_PTHREAD_CLANG=yes fi -rm -f conftest* +rm -rf conftest* fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 -$as_echo "$ax_cv_PTHREAD_CLANG" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } ax_pthread_clang="$ax_cv_PTHREAD_CLANG" @@ -5168,13 +5489,15 @@ ax_pthread_clang="$ax_cv_PTHREAD_CLANG" # [3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=468555 # To solve this, first try -pthread together with -lpthread for GCC -if test "x$GCC" = "xyes"; then : +if test "x$GCC" = "xyes" +then : ax_pthread_flags="-pthread,-lpthread -pthread -pthreads $ax_pthread_flags" fi # Clang takes -pthread (never supported any other flag), but we'll try with -lpthread first -if test "x$ax_pthread_clang" = "xyes"; then : +if test "x$ax_pthread_clang" = "xyes" +then : ax_pthread_flags="-pthread,-lpthread -pthread" fi @@ -5196,9 +5519,10 @@ case $host_os in ax_pthread_check_macro="--" ;; esac -if test "x$ax_pthread_check_macro" = "x--"; then : +if test "x$ax_pthread_check_macro" = "x--" +then : ax_pthread_check_cond=0 -else +else $as_nop ax_pthread_check_cond="!defined($ax_pthread_check_macro)" fi @@ -5208,31 +5532,32 @@ for ax_pthread_try_flag in $ax_pthread_flags; do case $ax_pthread_try_flag in none) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 -$as_echo_n "checking whether pthreads work without any flags... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +printf %s "checking whether pthreads work without any flags... " >&6; } ;; *,*) PTHREAD_CFLAGS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\1/"` PTHREAD_LIBS=`echo $ax_pthread_try_flag | sed "s/^\(.*\),\(.*\)$/\2/"` - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 -$as_echo_n "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"" >&5 +printf %s "checking whether pthreads work with \"$PTHREAD_CFLAGS\" and \"$PTHREAD_LIBS\"... " >&6; } ;; -*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 -$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5 +printf %s "checking whether pthreads work with $ax_pthread_try_flag... " >&6; } PTHREAD_CFLAGS="$ax_pthread_try_flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ax_pthread_config+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ax_pthread_config+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else @@ -5240,11 +5565,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5256,15 +5585,16 @@ fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 -$as_echo "$ax_pthread_config" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_config" >&5 +printf "%s\n" "$ax_pthread_config" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi - if test "x$ax_pthread_config" = "xno"; then : + if test "x$ax_pthread_config" = "xno" +then : continue fi PTHREAD_CFLAGS="`pthread-config --cflags`" @@ -5272,8 +5602,8 @@ fi ;; *) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 -$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5 +printf %s "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } PTHREAD_LIBS="-l$ax_pthread_try_flag" ;; esac @@ -5308,7 +5638,7 @@ $as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; } } static void *start_routine(void *a) { return a; } int -main () +main (void) { pthread_t th; pthread_attr_t attr; pthread_create(&th, 0, start_routine, 0); @@ -5320,18 +5650,20 @@ pthread_t th; pthread_attr_t attr; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_pthread_ok=yes fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext CFLAGS="$ax_pthread_save_CFLAGS" LIBS="$ax_pthread_save_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 -$as_echo "$ax_pthread_ok" >&6; } - if test "x$ax_pthread_ok" = "xyes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5 +printf "%s\n" "$ax_pthread_ok" >&6; } + if test "x$ax_pthread_ok" = "xyes" +then : break fi @@ -5377,11 +5709,12 @@ if test "x$ax_pthread_clang" = "xyes"; then # that build with -Werror. So if the active version of Clang has # this misfeature, we search for an option to squash it. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 -$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } -if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5 +printf %s "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; } +if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown # Create an alternate version of $ac_link that compiles and # links in two steps (.c -> .o, .o -> exe) instead of one @@ -5389,11 +5722,12 @@ else # step ax_pthread_save_ac_link="$ac_link" ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g' - ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"` + ax_pthread_link_step=`printf "%s\n" "$ac_link" | sed "$ax_pthread_sed"` ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)" ax_pthread_save_CFLAGS="$CFLAGS" for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do - if test "x$ax_pthread_try" = "xunknown"; then : + if test "x$ax_pthread_try" = "xunknown" +then : break fi CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS" @@ -5402,32 +5736,35 @@ fi /* end confdefs.h. */ int main(void){return 0;} _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_link="$ax_pthread_2step_ac_link" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main(void){return 0;} _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : break fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done ac_link="$ax_pthread_save_ac_link" CFLAGS="$ax_pthread_save_CFLAGS" - if test "x$ax_pthread_try" = "x"; then : + if test "x$ax_pthread_try" = "x" +then : ax_pthread_try=no fi ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 -$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5 +printf "%s\n" "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; } case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in no | unknown) ;; @@ -5446,51 +5783,53 @@ if test "x$ax_pthread_ok" = "xyes"; then LIBS="$PTHREAD_LIBS $LIBS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 -$as_echo_n "checking for joinable pthread attribute... " >&6; } -if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +printf %s "checking for joinable pthread attribute... " >&6; } +if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_PTHREAD_JOINABLE_ATTR=unknown for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { int attr = $ax_pthread_attr; return attr /* ; */ ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 -$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 +printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \ - test "x$ax_pthread_joinable_attr_defined" != "xyes"; then : + test "x$ax_pthread_joinable_attr_defined" != "xyes" +then : -cat >>confdefs.h <<_ACEOF -#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR -_ACEOF +printf "%s\n" "#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR" >>confdefs.h ax_pthread_joinable_attr_defined=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 -$as_echo_n "checking whether more special flags are required for pthreads... " >&6; } -if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5 +printf %s "checking whether more special flags are required for pthreads... " >&6; } +if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} +then : + printf %s "(cached) " >&6 +else $as_nop ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) @@ -5499,24 +5838,26 @@ else esac fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 -$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 +printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \ - test "x$ax_pthread_special_flags_added" != "xyes"; then : + test "x$ax_pthread_special_flags_added" != "xyes" +then : PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS" ax_pthread_special_flags_added=yes fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 -$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; } -if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5 +printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } +if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { int i = PTHREAD_PRIO_INHERIT; return i; @@ -5524,21 +5865,23 @@ int i = PTHREAD_PRIO_INHERIT; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ax_cv_PTHREAD_PRIO_INHERIT=yes -else +else $as_nop ax_cv_PTHREAD_PRIO_INHERIT=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 -$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 +printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \ - test "x$ax_pthread_prio_inherit_defined" != "xyes"; then : + test "x$ax_pthread_prio_inherit_defined" != "xyes" +then : -$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h +printf "%s\n" "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h ax_pthread_prio_inherit_defined=yes @@ -5557,11 +5900,14 @@ fi case "x$CC" in #( x/*) : - if as_fn_executable_p ${CC}_r; then : + if as_fn_executable_p ${CC}_r +then : PTHREAD_CC="${CC}_r" fi - if test "x${CXX}" != "x"; then : - if as_fn_executable_p ${CXX}_r; then : + if test "x${CXX}" != "x" +then : + if as_fn_executable_p ${CXX}_r +then : PTHREAD_CXX="${CXX}_r" fi fi @@ -5572,11 +5918,12 @@ fi do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PTHREAD_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CC+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else @@ -5584,11 +5931,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5599,11 +5950,11 @@ fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 -$as_echo "$PTHREAD_CC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +printf "%s\n" "$PTHREAD_CC" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5611,16 +5962,18 @@ fi done test -n "$PTHREAD_CC" || PTHREAD_CC="$CC" - if test "x${CXX}" != "x"; then : + if test "x${CXX}" != "x" +then : for ac_prog in ${CXX}_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PTHREAD_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_PTHREAD_CXX+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$PTHREAD_CXX"; then ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. else @@ -5628,11 +5981,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -5643,11 +6000,11 @@ fi fi PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX if test -n "$PTHREAD_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 -$as_echo "$PTHREAD_CXX" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CXX" >&5 +printf "%s\n" "$PTHREAD_CXX" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -5691,11 +6048,12 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 -$as_echo_n "checking for library containing dlopen... " >&6; } -if ${ac_cv_search_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing dlopen" >&5 +printf %s "checking for library containing dlopen... " >&6; } +if test ${ac_cv_search_dlopen+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -5703,55 +6061,58 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char dlopen (); int -main () +main (void) { return dlopen (); ; return 0; } _ACEOF -for ac_lib in '' dl; do +for ac_lib in '' dl +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_dlopen=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_dlopen+:} false; then : + if test ${ac_cv_search_dlopen+y} +then : break fi done -if ${ac_cv_search_dlopen+:} false; then : +if test ${ac_cv_search_dlopen+y} +then : -else +else $as_nop ac_cv_search_dlopen=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 -$as_echo "$ac_cv_search_dlopen" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 +printf "%s\n" "$ac_cv_search_dlopen" >&6; } ac_res=$ac_cv_search_dlopen -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tan in -lm" >&5 -$as_echo_n "checking for tan in -lm... " >&6; } -if ${ac_cv_lib_m_tan+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tan in -lm" >&5 +printf %s "checking for tan in -lm... " >&6; } +if test ${ac_cv_lib_m_tan+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5760,39 +6121,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char tan (); int -main () +main (void) { return tan (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_m_tan=yes -else +else $as_nop ac_cv_lib_m_tan=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_tan" >&5 -$as_echo "$ac_cv_lib_m_tan" >&6; } -if test "x$ac_cv_lib_m_tan" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_tan" >&5 +printf "%s\n" "$ac_cv_lib_m_tan" >&6; } +if test "x$ac_cv_lib_m_tan" = xyes +then : EGG_MATH_LIB="-lm" fi if test "$HPUX" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +printf %s "checking for shl_load in -ldld... " >&6; } +if test ${ac_cv_lib_dld_shl_load+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5801,33 +6162,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char shl_load (); int -main () +main (void) { return shl_load (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_dld_shl_load=yes -else +else $as_nop ac_cv_lib_dld_shl_load=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDLD 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes +then : + printf "%s\n" "#define HAVE_LIBDLD 1" >>confdefs.h LIBS="-ldld $LIBS" @@ -5839,21 +6197,22 @@ fi # Test the OS and set the module linking settings. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 -$as_echo_n "checking target system type... " >&6; } -if ${ac_cv_target+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +printf %s "checking target system type... " >&6; } +if test ${ac_cv_target+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else - ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 + ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || + as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 -$as_echo "$ac_cv_target" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +printf "%s\n" "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; @@ -5879,24 +6238,26 @@ test -n "$target_alias" && NONENONEs,x,x, && program_prefix=${target_alias}- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking system type" >&5 -$as_echo_n "checking system type... " >&6; } -if ${egg_cv_var_system_type+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system type" >&5 +printf %s "checking system type... " >&6; } +if test ${egg_cv_var_system_type+y} +then : + printf %s "(cached) " >&6 +else $as_nop egg_cv_var_system_type=`$UNAME -s` fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_type" >&5 -$as_echo "$egg_cv_var_system_type" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking system release" >&5 -$as_echo_n "checking system release... " >&6; } -if ${egg_cv_var_system_release+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_type" >&5 +printf "%s\n" "$egg_cv_var_system_type" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system release" >&5 +printf %s "checking system release... " >&6; } +if test ${egg_cv_var_system_release+y} +then : + printf %s "(cached) " >&6 +else $as_nop egg_cv_var_system_release=`$UNAME -r` fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_release" >&5 -$as_echo "$egg_cv_var_system_release" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_release" >&5 +printf "%s\n" "$egg_cv_var_system_release" >&6; } @@ -5911,34 +6272,77 @@ $as_echo "$egg_cv_var_system_release" >&6; } UNKNOWN_OS="no" MODULE_XLIBS="" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking module loading capabilities" >&5 -$as_echo_n "checking module loading capabilities... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - for ac_header in dl.h dlfcn.h loader.h rld.h mach-o/dyld.h mach-o/rld.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking module loading capabilities" >&5 +printf %s "checking module loading capabilities... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + ac_fn_c_check_header_compile "$LINENO" "dl.h" "ac_cv_header_dl_h" "$ac_includes_default" +if test "x$ac_cv_header_dl_h" = xyes +then : + printf "%s\n" "#define HAVE_DL_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default" +if test "x$ac_cv_header_dlfcn_h" = xyes +then : + printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "loader.h" "ac_cv_header_loader_h" "$ac_includes_default" +if test "x$ac_cv_header_loader_h" = xyes +then : + printf "%s\n" "#define HAVE_LOADER_H 1" >>confdefs.h - for ac_func in dlopen load NSLinkModule shl_load rld_load -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "rld.h" "ac_cv_header_rld_h" "$ac_includes_default" +if test "x$ac_cv_header_rld_h" = xyes +then : + printf "%s\n" "#define HAVE_RLD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "mach-o/dyld.h" "ac_cv_header_mach_o_dyld_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_o_dyld_h" = xyes +then : + printf "%s\n" "#define HAVE_MACH_O_DYLD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "mach-o/rld.h" "ac_cv_header_mach_o_rld_h" "$ac_includes_default" +if test "x$ac_cv_header_mach_o_rld_h" = xyes +then : + printf "%s\n" "#define HAVE_MACH_O_RLD_H 1" >>confdefs.h + +fi + + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes +then : + printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "load" "ac_cv_func_load" +if test "x$ac_cv_func_load" = xyes +then : + printf "%s\n" "#define HAVE_LOAD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "NSLinkModule" "ac_cv_func_NSLinkModule" +if test "x$ac_cv_func_NSLinkModule" = xyes +then : + printf "%s\n" "#define HAVE_NSLINKMODULE 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes +then : + printf "%s\n" "#define HAVE_SHL_LOAD 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "rld_load" "ac_cv_func_rld_load" +if test "x$ac_cv_func_rld_load" = xyes +then : + printf "%s\n" "#define HAVE_RLD_LOAD 1" >>confdefs.h fi -done # Note to other maintainers: @@ -5996,16 +6400,16 @@ done BUNDLE="" for bundlepath in "/lib" "/usr/lib" "/usr/local/lib"; do - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bundle1.o in ${bundlepath}" >&5 -$as_echo_n "checking for bundle1.o in ${bundlepath}... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bundle1.o in ${bundlepath}" >&5 +printf %s "checking for bundle1.o in ${bundlepath}... " >&6; } if test -r "${bundlepath}/bundle1.o"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } BUNDLE="${bundlepath}/bundle1.o" break else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi done @@ -6053,32 +6457,32 @@ EOF if test "$MODULES_OK" = yes; then -$as_echo "#define MODULES_OK 1" >>confdefs.h +printf "%s\n" "#define MODULES_OK 1" >>confdefs.h case $LOAD_METHOD in dl) -$as_echo "#define MOD_USE_DL 1" >>confdefs.h +printf "%s\n" "#define MOD_USE_DL 1" >>confdefs.h ;; shl) -$as_echo "#define MOD_USE_SHL 1" >>confdefs.h +printf "%s\n" "#define MOD_USE_SHL 1" >>confdefs.h ;; dyld) -$as_echo "#define MOD_USE_DYLD 1" >>confdefs.h +printf "%s\n" "#define MOD_USE_DYLD 1" >>confdefs.h ;; loader) -$as_echo "#define MOD_USE_LOADER 1" >>confdefs.h +printf "%s\n" "#define MOD_USE_LOADER 1" >>confdefs.h ;; rld) -$as_echo "#define MOD_USE_RLD 1" >>confdefs.h +printf "%s\n" "#define MOD_USE_RLD 1" >>confdefs.h ;; esac @@ -6098,9 +6502,7 @@ $as_echo "#define MOD_USE_RLD 1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define EGG_MOD_EXT "$MOD_EXT" -_ACEOF +printf "%s\n" "#define EGG_MOD_EXT \"$MOD_EXT\"" >>confdefs.h @@ -6124,11 +6526,11 @@ _ACEOF EGG_CYGWIN="yes" if test "$EGG_CYGWIN" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /usr/lib/binmode.o" >&5 -$as_echo_n "checking for /usr/lib/binmode.o... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for /usr/lib/binmode.o" >&5 +printf %s "checking for /usr/lib/binmode.o... " >&6; } if test -r /usr/lib/binmode.o; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } if test "x/usr/lib/binmode.o" != x; then if test "x$LIBS" = x; then @@ -6139,15 +6541,15 @@ $as_echo "yes" >&6; } fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Make sure the directory Eggdrop is installed into is mounted in binary mode." >&5 -$as_echo "$as_me: WARNING: Make sure the directory Eggdrop is installed into is mounted in binary mode." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Make sure the directory Eggdrop is installed into is mounted in binary mode." >&5 +printf "%s\n" "$as_me: WARNING: Make sure the directory Eggdrop is installed into is mounted in binary mode." >&2;} fi fi -$as_echo "#define CYGWIN_HACKS 1" >>confdefs.h +printf "%s\n" "#define CYGWIN_HACKS 1" >>confdefs.h ;; HP-UX) @@ -6196,7 +6598,7 @@ $as_echo "#define CYGWIN_HACKS 1" >>confdefs.h QNX) SHLIB_LD="ld -shared" -$as_echo "#define QNX_HACKS 1" >>confdefs.h +printf "%s\n" "#define QNX_HACKS 1" >>confdefs.h ;; OSF1) @@ -6218,10 +6620,10 @@ $as_echo "#define QNX_HACKS 1" >>confdefs.h ;; esac -$as_echo "#define BROKEN_SNPRINTF 1" >>confdefs.h +printf "%s\n" "#define BROKEN_SNPRINTF 1" >>confdefs.h -$as_echo "#define STOP_UAC 1" >>confdefs.h +printf "%s\n" "#define STOP_UAC 1" >>confdefs.h ;; SunOS) @@ -6243,14 +6645,14 @@ $as_echo "#define STOP_UAC 1" >>confdefs.h SHLIB_CC="$CC -fPIC" SHLIB_LD="ld -bundle -undefined error" -$as_echo "#define BIND_8_COMPAT 1" >>confdefs.h +printf "%s\n" "#define BIND_8_COMPAT 1" >>confdefs.h ;; *) if test -r /mach; then # At this point, we're guessing this is NeXT Step. -$as_echo "#define BORGCUBES 1" >>confdefs.h +printf "%s\n" "#define BORGCUBES 1" >>confdefs.h else if test -r /cmds; then @@ -6286,19 +6688,20 @@ EOF ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 +printf %s "checking for $ac_hdr that defines DIR... " >&6; } +if eval test \${$as_ac_Header+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> int -main () +main (void) { if ((DIR *) 0) return 0; @@ -6306,19 +6709,21 @@ return 0; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : eval "$as_ac_Header=yes" -else +else $as_nop eval "$as_ac_Header=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +printf "%s\n" "$ac_res" >&6; } +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -6327,11 +6732,12 @@ fi done # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6339,56 +6745,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' dir; do +for ac_lib in '' dir +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 +printf %s "checking for library containing opendir... " >&6; } +if test ${ac_cv_search_opendir+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_func_search_save_LIBS=$LIBS cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6396,113 +6805,175 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char opendir (); int -main () +main (void) { return opendir (); ; return 0; } _ACEOF -for ac_lib in '' x; do +for ac_lib in '' x +do if test -z "$ac_lib"; then ac_res="none required" else ac_res=-l$ac_lib LIBS="-l$ac_lib $ac_func_search_save_LIBS" fi - if ac_fn_c_try_link "$LINENO"; then : + if ac_fn_c_try_link "$LINENO" +then : ac_cv_search_opendir=$ac_res fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : + if test ${ac_cv_search_opendir+y} +then : break fi done -if ${ac_cv_search_opendir+:} false; then : +if test ${ac_cv_search_opendir+y} +then : -else +else $as_nop ac_cv_search_opendir=no fi rm conftest.$ac_ext LIBS=$ac_func_search_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 +printf "%s\n" "$ac_cv_search_opendir" >&6; } ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : +if test "$ac_res" != no +then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no + +# Obsolete code to be removed. +if test $ac_cv_header_sys_time_h = yes; then + +printf "%s\n" "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi +# End of obsolete code. + +ac_fn_c_check_header_compile "$LINENO" "arpa/inet.h" "ac_cv_header_arpa_inet_h" "$ac_includes_default" +if test "x$ac_cv_header_arpa_inet_h" = xyes +then : + printf "%s\n" "#define HAVE_ARPA_INET_H 1" >>confdefs.h + fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_fn_c_check_header_compile "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes +then : + printf "%s\n" "#define HAVE_FCNTL_H 1" >>confdefs.h + fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then +ac_fn_c_check_header_compile "$LINENO" "limits.h" "ac_cv_header_limits_h" "$ac_includes_default" +if test "x$ac_cv_header_limits_h" = xyes +then : + printf "%s\n" "#define HAVE_LIMITS_H 1" >>confdefs.h -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h +fi +ac_fn_c_check_header_compile "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" +if test "x$ac_cv_header_locale_h" = xyes +then : + printf "%s\n" "#define HAVE_LOCALE_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "netdb.h" "ac_cv_header_netdb_h" "$ac_includes_default" +if test "x$ac_cv_header_netdb_h" = xyes +then : + printf "%s\n" "#define HAVE_NETDB_H 1" >>confdefs.h -for ac_header in arpa/inet.h fcntl.h limits.h locale.h netdb.h netinet/in.h stdio.h stdarg.h stddef.h sys/file.h sys/param.h sys/select.h sys/socket.h sys/time.h unistd.h wchar.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_header_compile "$LINENO" "netinet/in.h" "ac_cv_header_netinet_in_h" "$ac_includes_default" +if test "x$ac_cv_header_netinet_in_h" = xyes +then : + printf "%s\n" "#define HAVE_NETINET_IN_H 1" >>confdefs.h fi +ac_fn_c_check_header_compile "$LINENO" "stdio.h" "ac_cv_header_stdio_h" "$ac_includes_default" +if test "x$ac_cv_header_stdio_h" = xyes +then : + printf "%s\n" "#define HAVE_STDIO_H 1" >>confdefs.h -done +fi +ac_fn_c_check_header_compile "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" +if test "x$ac_cv_header_stdarg_h" = xyes +then : + printf "%s\n" "#define HAVE_STDARG_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" +if test "x$ac_cv_header_stddef_h" = xyes +then : + printf "%s\n" "#define HAVE_STDDEF_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/file.h" "ac_cv_header_sys_file_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_file_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_FILE_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/param.h" "ac_cv_header_sys_param_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_param_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_PARAM_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/select.h" "ac_cv_header_sys_select_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_select_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SELECT_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/socket.h" "ac_cv_header_sys_socket_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_socket_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_SOCKET_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes +then : + printf "%s\n" "#define HAVE_SYS_TIME_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes +then : + printf "%s\n" "#define HAVE_UNISTD_H 1" >>confdefs.h + +fi +ac_fn_c_check_header_compile "$LINENO" "wchar.h" "ac_cv_header_wchar_h" "$ac_includes_default" +if test "x$ac_cv_header_wchar_h" = xyes +then : + printf "%s\n" "#define HAVE_WCHAR_H 1" >>confdefs.h + +fi # Checks for typedefs, structures, and compiler characteristics. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +printf %s "checking for an ANSI C-conforming const... " >&6; } +if test ${ac_cv_c_const+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifndef __cplusplus @@ -6515,7 +6986,7 @@ main () /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. + /* IBM XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ @@ -6543,7 +7014,7 @@ main () iptr p = 0; ++p; } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; } bx; struct s *b = &bx; b->j = 5; @@ -6559,26 +7030,28 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_const=yes -else +else $as_nop ac_cv_c_const=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +printf "%s\n" "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then -$as_echo "#define const /**/" >>confdefs.h +printf "%s\n" "#define const /**/" >>confdefs.h fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -$as_echo_n "checking whether byte ordering is bigendian... " >&6; } -if ${ac_cv_c_bigendian+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 +printf %s "checking whether byte ordering is bigendian... " >&6; } +if test ${ac_cv_c_bigendian+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6589,7 +7062,8 @@ else typedef int dummy; _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # Check for potential -arch flags. It is not universal unless # there are at least two -arch flags with different values. @@ -6613,7 +7087,7 @@ if ac_fn_c_try_compile "$LINENO"; then : fi done fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test $ac_cv_c_bigendian = unknown; then # See if sys/param.h defines the BYTE_ORDER macro. cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -6622,7 +7096,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ @@ -6634,7 +7108,8 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -6642,7 +7117,7 @@ if ac_fn_c_try_compile "$LINENO"; then : #include int -main () +main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian @@ -6652,14 +7127,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). @@ -6668,7 +7144,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext #include int -main () +main (void) { #if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) bogus endian macros @@ -6678,14 +7154,15 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : # It does; now see whether it defined to _BIG_ENDIAN or not. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { #ifndef _BIG_ENDIAN not big endian @@ -6695,31 +7172,33 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_bigendian=yes -else +else $as_nop ac_cv_c_bigendian=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test $ac_cv_c_bigendian = unknown; then # Compile a test program. - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : # Try to guess by grepping values from an object file. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -short int ascii_mm[] = +unsigned short int ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - short int ascii_ii[] = + unsigned short int ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; int use_ascii (int i) { return ascii_mm[i] + ascii_ii[i]; } - short int ebcdic_ii[] = + unsigned short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - short int ebcdic_mm[] = + unsigned short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; @@ -6727,14 +7206,15 @@ short int ascii_mm[] = extern int foo; int -main () +main (void) { return use_ascii (foo) == use_ebcdic (foo); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi @@ -6747,13 +7227,13 @@ if ac_fn_c_try_compile "$LINENO"; then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -else +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { /* Are we little or big endian? From Harbison&Steele. */ @@ -6769,9 +7249,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_c_bigendian=no -else +else $as_nop ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -6780,17 +7261,17 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -$as_echo "$ac_cv_c_bigendian" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 +printf "%s\n" "$ac_cv_c_bigendian" >&6; } case $ac_cv_c_bigendian in #( yes) - $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h + printf "%s\n" "#define WORDS_BIGENDIAN 1" >>confdefs.h ;; #( no) ;; #( universal) -$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h +printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h ;; #( *) @@ -6798,32 +7279,34 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5 ;; esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -$as_echo_n "checking for inline... " >&6; } -if ${ac_cv_c_inline+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +printf %s "checking for inline... " >&6; } +if test ${ac_cv_c_inline+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; -static $ac_kw foo_t static_foo () {return 0; } -$ac_kw foo_t foo () {return 0; } +static $ac_kw foo_t static_foo (void) {return 0; } +$ac_kw foo_t foo (void) {return 0; } #endif _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_inline=$ac_kw fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -$as_echo "$ac_cv_c_inline" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +printf "%s\n" "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; @@ -6841,11 +7324,12 @@ _ACEOF esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5 -$as_echo_n "checking for flexible array members... " >&6; } -if ${ac_cv_c_flexmember+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5 +printf %s "checking for flexible array members... " >&6; } +if test ${ac_cv_c_flexmember+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -6853,48 +7337,50 @@ else #include struct s { int n; double d[]; }; int -main () +main (void) { int m = getchar (); - struct s *p = malloc (offsetof (struct s, d) - + m * sizeof (double)); + struct s *p = (struct s *) malloc (offsetof (struct s, d) + + m * sizeof (double)); p->d[0] = 0.0; return p->d != (double *) NULL; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_flexmember=yes -else +else $as_nop ac_cv_c_flexmember=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5 -$as_echo "$ac_cv_c_flexmember" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5 +printf "%s\n" "$ac_cv_c_flexmember" >&6; } if test $ac_cv_c_flexmember = yes; then -$as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h +printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h else - $as_echo "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h + printf "%s\n" "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "intptr_t" "ac_cv_type_intptr_t" "$ac_includes_default" -if test "x$ac_cv_type_intptr_t" = xyes; then : +if test "x$ac_cv_type_intptr_t" = xyes +then : -$as_echo "#define HAVE_INTPTR_T 1" >>confdefs.h +printf "%s\n" "#define HAVE_INTPTR_T 1" >>confdefs.h -else +else $as_nop for ac_type in 'int' 'long int' 'long long int'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int -main () +main (void) { static int test_array [1 - 2 * !(sizeof (void *) <= sizeof ($ac_type))]; test_array [0] = 0; @@ -6904,54 +7390,79 @@ return test_array [0]; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : -cat >>confdefs.h <<_ACEOF -#define intptr_t $ac_type -_ACEOF +printf "%s\n" "#define intptr_t $ac_type" >>confdefs.h ac_type= fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test -z "$ac_type" && break done fi -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : -else + ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default +" +if test "x$ac_cv_type_pid_t" = xyes +then : + +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #if defined _WIN64 && !defined __CYGWIN__ + LLP64 + #endif + +int +main (void) +{ + + ; + return 0; +} -cat >>confdefs.h <<_ACEOF -#define pid_t int _ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + ac_pid_type='int' +else $as_nop + ac_pid_type='__int64' +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + +printf "%s\n" "#define pid_t $ac_pid_type" >>confdefs.h + fi + ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : +if test "x$ac_cv_type_size_t" = xyes +then : -else +else $as_nop -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF +printf "%s\n" "#define size_t unsigned int" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +printf %s "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if test ${ac_cv_struct_tm+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int -main () +main (void) { struct tm tm; int *p = &tm.tm_sec; @@ -6960,56 +7471,135 @@ struct tm tm; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_struct_tm=time.h -else +else $as_nop ac_cv_struct_tm=sys/time.h fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +printf "%s\n" "$ac_cv_struct_tm" >&6; } if test $ac_cv_struct_tm = sys/time.h; then -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h +printf "%s\n" "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5 +printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; } +if test ${ac_cv_c_undeclared_builtin_options+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_save_CFLAGS=$CFLAGS + ac_cv_c_undeclared_builtin_options='cannot detect' + for ac_arg in '' -fno-builtin; do + CFLAGS="$ac_save_CFLAGS $ac_arg" + # This test program should *not* compile successfully. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main (void) +{ +(void) strchr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + +else $as_nop + # This test program should compile successfully. + # No library function is consistently available on + # freestanding implementations, so test against a dummy + # declaration. Include always-available headers on the + # off chance that they somehow elicit warnings. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +extern void ac_decl (int, char *); + +int +main (void) +{ +(void) ac_decl (0, (char *) 0); + (void) ac_decl; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO" +then : + if test x"$ac_arg" = x +then : + ac_cv_c_undeclared_builtin_options='none needed' +else $as_nop + ac_cv_c_undeclared_builtin_options=$ac_arg +fi + break +fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext + done + CFLAGS=$ac_save_CFLAGS + +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5 +printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; } + case $ac_cv_c_undeclared_builtin_options in #( + 'cannot detect') : + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot make $CC report undeclared builtins +See \`config.log' for more details" "$LINENO" 5; } ;; #( + 'none needed') : + ac_c_undeclared_builtin_options='' ;; #( + *) : + ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;; +esac ac_fn_c_check_member "$LINENO" "struct tm" "tm_zone" "ac_cv_member_struct_tm_tm_zone" "#include #include <$ac_cv_struct_tm> " -if test "x$ac_cv_member_struct_tm_tm_zone" = xyes; then : +if test "x$ac_cv_member_struct_tm_tm_zone" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_TM_TM_ZONE 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_TM_TM_ZONE 1" >>confdefs.h fi if test "$ac_cv_member_struct_tm_tm_zone" = yes; then -$as_echo "#define HAVE_TM_ZONE 1" >>confdefs.h +printf "%s\n" "#define HAVE_TM_ZONE 1" >>confdefs.h else - ac_fn_c_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include -" -if test "x$ac_cv_have_decl_tzname" = xyes; then : + ac_fn_check_decl "$LINENO" "tzname" "ac_cv_have_decl_tzname" "#include +" "$ac_c_undeclared_builtin_options" "CFLAGS" +if test "x$ac_cv_have_decl_tzname" = xyes +then : ac_have_decl=1 -else +else $as_nop ac_have_decl=0 fi +printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define HAVE_DECL_TZNAME $ac_have_decl -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 -$as_echo_n "checking for tzname... " >&6; } -if ${ac_cv_var_tzname+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for tzname" >&5 +printf %s "checking for tzname... " >&6; } +if test ${ac_cv_var_tzname+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -7018,40 +7608,42 @@ extern char *tzname[]; #endif int -main () +main (void) { return tzname[0][0]; ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_var_tzname=yes -else +else $as_nop ac_cv_var_tzname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 -$as_echo "$ac_cv_var_tzname" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 +printf "%s\n" "$ac_cv_var_tzname" >&6; } if test $ac_cv_var_tzname = yes; then -$as_echo "#define HAVE_TZNAME 1" >>confdefs.h +printf "%s\n" "#define HAVE_TZNAME 1" >>confdefs.h fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 -$as_echo_n "checking for working volatile... " >&6; } -if ${ac_cv_c_volatile+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +printf %s "checking for working volatile... " >&6; } +if test ${ac_cv_c_volatile+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { volatile int x; @@ -7061,51 +7653,54 @@ return !x && !y; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_c_volatile=yes -else +else $as_nop ac_cv_c_volatile=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 -$as_echo "$ac_cv_c_volatile" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +printf "%s\n" "$ac_cv_c_volatile" >&6; } if test $ac_cv_c_volatile = no; then -$as_echo "#define volatile /**/" >>confdefs.h +printf "%s\n" "#define volatile /**/" >>confdefs.h fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 -$as_echo_n "checking for socklen_t... " >&6; } -if ${ac_cv_ax_type_socklen_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socklen_t" >&5 +printf %s "checking for socklen_t... " >&6; } +if test ${ac_cv_ax_type_socklen_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include int -main () +main (void) { socklen_t len = (socklen_t) 42; return (!len); ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_ax_type_socklen_t=yes -else +else $as_nop ac_cv_ax_type_socklen_t=no fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ax_type_socklen_t" >&5 -$as_echo "$ac_cv_ax_type_socklen_t" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_ax_type_socklen_t" >&5 +printf "%s\n" "$ac_cv_ax_type_socklen_t" >&6; } if test $ac_cv_ax_type_socklen_t != yes; then -$as_echo "#define socklen_t int" >>confdefs.h +printf "%s\n" "#define socklen_t int" >>confdefs.h fi @@ -7113,14 +7708,15 @@ $as_echo "#define socklen_t int" >>confdefs.h # Create stdint.h C99 compatibility header. # ------ AX CREATE STDINT H ------------------------------------- -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint types" >&5 -$as_echo_n "checking for stdint types... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint types" >&5 +printf %s "checking for stdint types... " >&6; } ac_stdint_h=`echo eggint.h` # try to shortcircuit - if the default include path of the compiler # can find a "stdint.h" header then we assume that all compilers can. -if ${ac_cv_header_stdint_t+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test ${ac_cv_header_stdint_t+y} +then : + printf %s "(cached) " >&6 +else $as_nop old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS="" old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="" @@ -7129,38 +7725,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { int_least32_t v = 0; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_stdint_result="(assuming C99 compatible system)" ac_cv_header_stdint_t="stdint.h"; -else +else $as_nop ac_cv_header_stdint_t="" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then CFLAGS="-std=c99" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int -main () +main (void) { int_least32_t v = 0; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&5 -$as_echo "$as_me: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&2;} +if ac_fn_c_try_compile "$LINENO" +then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&5 +printf "%s\n" "$as_me: WARNING: your GCC compiler has a defunct stdint.h for its default-mode" >&2;} fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi CXXFLAGS="$old_CXXFLAGS" CPPFLAGS="$old_CPPFLAGS" @@ -7170,18 +7768,18 @@ fi v="... $ac_cv_header_stdint_h" if test "$ac_stdint_h" = "stdint.h" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./stdint.h?)" >&5 -$as_echo "(are you sure you want them in ./stdint.h?)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./stdint.h?)" >&5 +printf "%s\n" "(are you sure you want them in ./stdint.h?)" >&6; } elif test "$ac_stdint_h" = "inttypes.h" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./inttypes.h?)" >&5 -$as_echo "(are you sure you want them in ./inttypes.h?)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (are you sure you want them in ./inttypes.h?)" >&5 +printf "%s\n" "(are you sure you want them in ./inttypes.h?)" >&6; } elif test "_$ac_cv_header_stdint_t" = "_" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (putting them into $ac_stdint_h)$v" >&5 -$as_echo "(putting them into $ac_stdint_h)$v" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (putting them into $ac_stdint_h)$v" >&5 +printf "%s\n" "(putting them into $ac_stdint_h)$v" >&6; } else ac_cv_header_stdint="$ac_cv_header_stdint_t" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint (shortcircuit)" >&5 -$as_echo "$ac_cv_header_stdint (shortcircuit)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint (shortcircuit)" >&5 +printf "%s\n" "$ac_cv_header_stdint (shortcircuit)" >&6; } fi if test "_$ac_cv_header_stdint_t" = "_" ; then # cannot shortcircuit.. @@ -7191,74 +7789,80 @@ inttype_headers=`echo | sed -e 's/,/ /g'` ac_cv_stdint_result="(no helpful system typedefs seen)" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5 -$as_echo_n "checking for stdint uintptr_t... " >&6; } -if ${ac_cv_header_stdint_x+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5 +printf %s "checking for stdint uintptr_t... " >&6; } +if test ${ac_cv_header_stdint_x+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 -$as_echo "(..)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 +printf "%s\n" "(..)" >&6; } for i in stdint.h inttypes.h sys/inttypes.h $inttype_headers do unset ac_cv_type_uintptr_t unset ac_cv_type_uint64_t ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "#include <$i> " -if test "x$ac_cv_type_uintptr_t" = xyes; then : +if test "x$ac_cv_type_uintptr_t" = xyes +then : ac_cv_header_stdint_x=$i -else +else $as_nop continue fi ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i> " -if test "x$ac_cv_type_uint64_t" = xyes; then : +if test "x$ac_cv_type_uint64_t" = xyes +then : and64="/uint64_t" -else +else $as_nop and64="" fi ac_cv_stdint_result="(seen uintptr_t$and64 in $i)" break done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5 -$as_echo_n "checking for stdint uintptr_t... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5 +printf %s "checking for stdint uintptr_t... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5 -$as_echo "$ac_cv_header_stdint_x" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5 +printf "%s\n" "$ac_cv_header_stdint_x" >&6; } if test "_$ac_cv_header_stdint_x" = "_" ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5 -$as_echo_n "checking for stdint uint32_t... " >&6; } -if ${ac_cv_header_stdint_o+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5 +printf %s "checking for stdint uint32_t... " >&6; } +if test ${ac_cv_header_stdint_o+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 -$as_echo "(..)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 +printf "%s\n" "(..)" >&6; } for i in inttypes.h sys/inttypes.h stdint.h $inttype_headers do unset ac_cv_type_uint32_t unset ac_cv_type_uint64_t ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "#include <$i> " -if test "x$ac_cv_type_uint32_t" = xyes; then : +if test "x$ac_cv_type_uint32_t" = xyes +then : ac_cv_header_stdint_o=$i -else +else $as_nop continue fi ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i> " -if test "x$ac_cv_type_uint64_t" = xyes; then : +if test "x$ac_cv_type_uint64_t" = xyes +then : and64="/uint64_t" -else +else $as_nop and64="" fi @@ -7266,43 +7870,46 @@ fi break break; done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5 -$as_echo_n "checking for stdint uint32_t... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5 +printf %s "checking for stdint uint32_t... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5 -$as_echo "$ac_cv_header_stdint_o" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5 +printf "%s\n" "$ac_cv_header_stdint_o" >&6; } fi if test "_$ac_cv_header_stdint_x" = "_" ; then if test "_$ac_cv_header_stdint_o" = "_" ; then -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5 -$as_echo_n "checking for stdint u_int32_t... " >&6; } -if ${ac_cv_header_stdint_u+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5 +printf %s "checking for stdint u_int32_t... " >&6; } +if test ${ac_cv_header_stdint_u+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 -$as_echo "(..)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 +printf "%s\n" "(..)" >&6; } for i in sys/types.h inttypes.h sys/inttypes.h $inttype_headers ; do unset ac_cv_type_u_int32_t unset ac_cv_type_u_int64_t ac_fn_c_check_type "$LINENO" "u_int32_t" "ac_cv_type_u_int32_t" "#include <$i> " -if test "x$ac_cv_type_u_int32_t" = xyes; then : +if test "x$ac_cv_type_u_int32_t" = xyes +then : ac_cv_header_stdint_u=$i -else +else $as_nop continue fi ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include<$i> " -if test "x$ac_cv_type_u_int64_t" = xyes; then : +if test "x$ac_cv_type_u_int64_t" = xyes +then : and64="/u_int64_t" -else +else $as_nop and64="" fi @@ -7310,36 +7917,38 @@ fi break break; done - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5 -$as_echo_n "checking for stdint u_int32_t... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5 +printf %s "checking for stdint u_int32_t... " >&6; } fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5 -$as_echo "$ac_cv_header_stdint_u" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5 +printf "%s\n" "$ac_cv_header_stdint_u" >&6; } fi fi if test "_$ac_cv_header_stdint_x" = "_" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint datatype model" >&5 -$as_echo_n "checking for stdint datatype model... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 -$as_echo "(..)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint datatype model" >&5 +printf %s "checking for stdint datatype model... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 +printf "%s\n" "(..)" >&6; } # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 -$as_echo_n "checking size of char... " >&6; } -if ${ac_cv_sizeof_char+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of char" >&5 +printf %s "checking size of char... " >&6; } +if test ${ac_cv_sizeof_char+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_char" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (char) See \`config.log' for more details" "$LINENO" 5; } else @@ -7348,31 +7957,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 -$as_echo "$ac_cv_sizeof_char" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 +printf "%s\n" "$ac_cv_sizeof_char" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_CHAR $ac_cv_sizeof_char -_ACEOF +printf "%s\n" "#define SIZEOF_CHAR $ac_cv_sizeof_char" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 -$as_echo_n "checking size of short... " >&6; } -if ${ac_cv_sizeof_short+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of short" >&5 +printf %s "checking size of short... " >&6; } +if test ${ac_cv_sizeof_short+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_short" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (short) See \`config.log' for more details" "$LINENO" 5; } else @@ -7381,31 +7990,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 -$as_echo "$ac_cv_sizeof_short" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 +printf "%s\n" "$ac_cv_sizeof_short" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT $ac_cv_sizeof_short -_ACEOF +printf "%s\n" "#define SIZEOF_SHORT $ac_cv_sizeof_short" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 +printf %s "checking size of int... " >&6; } +if test ${ac_cv_sizeof_int+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (int) See \`config.log' for more details" "$LINENO" 5; } else @@ -7414,31 +8023,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 +printf "%s\n" "$ac_cv_sizeof_int" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF +printf "%s\n" "#define SIZEOF_INT $ac_cv_sizeof_int" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 -$as_echo_n "checking size of long... " >&6; } -if ${ac_cv_sizeof_long+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long" >&5 +printf %s "checking size of long... " >&6; } +if test ${ac_cv_sizeof_long+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_long" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (long) See \`config.log' for more details" "$LINENO" 5; } else @@ -7447,31 +8056,31 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 -$as_echo "$ac_cv_sizeof_long" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 +printf "%s\n" "$ac_cv_sizeof_long" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG $ac_cv_sizeof_long -_ACEOF +printf "%s\n" "#define SIZEOF_LONG $ac_cv_sizeof_long" >>confdefs.h # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5 -$as_echo_n "checking size of void*... " >&6; } -if ${ac_cv_sizeof_voidp+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default"; then : - -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of void*" >&5 +printf %s "checking size of void*... " >&6; } +if test ${ac_cv_sizeof_voidp+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default" +then : + +else $as_nop if test "$ac_cv_type_voidp" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot compute sizeof (void*) See \`config.log' for more details" "$LINENO" 5; } else @@ -7480,14 +8089,12 @@ See \`config.log' for more details" "$LINENO" 5; } fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 -$as_echo "$ac_cv_sizeof_voidp" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 +printf "%s\n" "$ac_cv_sizeof_voidp" >&6; } -cat >>confdefs.h <<_ACEOF -#define SIZEOF_VOIDP $ac_cv_sizeof_voidp -_ACEOF +printf "%s\n" "#define SIZEOF_VOIDP $ac_cv_sizeof_voidp" >>confdefs.h ac_cv_char_data_model="" @@ -7498,8 +8105,8 @@ _ACEOF ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_int" ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_long" ac_cv_long_data_model="$ac_cv_long_data_model$ac_cv_sizeof_voidp" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking data model" >&5 -$as_echo_n "checking data model... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking data model" >&5 +printf %s "checking data model... " >&6; } case "$ac_cv_char_data_model/$ac_cv_long_data_model" in 122/242) ac_cv_data_model="IP16" ; n="standard 16bit machine" ;; 122/244) ac_cv_data_model="LP32" ; n="standard 32bit machine" ;; @@ -7519,8 +8126,8 @@ $as_echo_n "checking data model... " >&6; } ac_cv_data_model="iDSP" ; n="unusual dsptype" ;; *) ac_cv_data_model="none" ; n="very unusual model" ;; esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_data_model ($ac_cv_long_data_model, $n)" >&5 -$as_echo "$ac_cv_data_model ($ac_cv_long_data_model, $n)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_data_model ($ac_cv_long_data_model, $n)" >&5 +printf "%s\n" "$ac_cv_data_model ($ac_cv_long_data_model, $n)" >&6; } fi @@ -7534,27 +8141,30 @@ else ac_cv_header_stdint="stddef.h" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extra inttypes in chosen header" >&5 -$as_echo_n "checking for extra inttypes in chosen header... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ($ac_cv_header_stdint)" >&5 -$as_echo "($ac_cv_header_stdint)" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for extra inttypes in chosen header" >&5 +printf %s "checking for extra inttypes in chosen header... " >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ($ac_cv_header_stdint)" >&5 +printf "%s\n" "($ac_cv_header_stdint)" >&6; } unset ac_cv_type_int_least32_t unset ac_cv_type_int_fast32_t ac_fn_c_check_type "$LINENO" "int_least32_t" "ac_cv_type_int_least32_t" "#include <$ac_cv_header_stdint> " -if test "x$ac_cv_type_int_least32_t" = xyes; then : +if test "x$ac_cv_type_int_least32_t" = xyes +then : fi ac_fn_c_check_type "$LINENO" "int_fast32_t" "ac_cv_type_int_fast32_t" "#include<$ac_cv_header_stdint> " -if test "x$ac_cv_type_int_fast32_t" = xyes; then : +if test "x$ac_cv_type_int_fast32_t" = xyes +then : fi ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "#include <$ac_cv_header_stdint> " -if test "x$ac_cv_type_intmax_t" = xyes; then : +if test "x$ac_cv_type_intmax_t" = xyes +then : fi @@ -7567,8 +8177,8 @@ else ac_cv_stdint_message="using $CC" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&5 -$as_echo "make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&5 +printf "%s\n" "make use of $ac_cv_header_stdint in $ac_stdint_h $ac_cv_stdint_result" >&6; } # ----------------- DONE inttypes.h checks START header ------------- ac_config_commands="$ac_config_commands $ac_stdint_h" @@ -7576,37 +8186,96 @@ ac_config_commands="$ac_config_commands $ac_stdint_h" # Checks for functions and their arguments. -for ac_func in dprintf explicit_bzero explicit_memset getrandom inet_aton isascii memset_s random rand lrand48 snprintf strlcpy vsnprintf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF +ac_fn_c_check_func "$LINENO" "dprintf" "ac_cv_func_dprintf" +if test "x$ac_cv_func_dprintf" = xyes +then : + printf "%s\n" "#define HAVE_DPRINTF 1" >>confdefs.h fi -done +ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero" +if test "x$ac_cv_func_explicit_bzero" = xyes +then : + printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h -for ac_header in sys/select.h sys/socket.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF +fi +ac_fn_c_check_func "$LINENO" "explicit_memset" "ac_cv_func_explicit_memset" +if test "x$ac_cv_func_explicit_memset" = xyes +then : + printf "%s\n" "#define HAVE_EXPLICIT_MEMSET 1" >>confdefs.h fi +ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" +if test "x$ac_cv_func_getrandom" = xyes +then : + printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h -done +fi +ac_fn_c_check_func "$LINENO" "inet_aton" "ac_cv_func_inet_aton" +if test "x$ac_cv_func_inet_aton" = xyes +then : + printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5 -$as_echo_n "checking types of arguments for select... " >&6; } -if ${ac_cv_func_select_args+:} false; then : - $as_echo_n "(cached) " >&6 -else - for ac_arg234 in 'fd_set *' 'int *' 'void *'; do +fi +ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii" +if test "x$ac_cv_func_isascii" = xyes +then : + printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "memset_s" "ac_cv_func_memset_s" +if test "x$ac_cv_func_memset_s" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET_S 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "random" "ac_cv_func_random" +if test "x$ac_cv_func_random" = xyes +then : + printf "%s\n" "#define HAVE_RANDOM 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "rand" "ac_cv_func_rand" +if test "x$ac_cv_func_rand" = xyes +then : + printf "%s\n" "#define HAVE_RAND 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "lrand48" "ac_cv_func_lrand48" +if test "x$ac_cv_func_lrand48" = xyes +then : + printf "%s\n" "#define HAVE_LRAND48 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes +then : + printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy" +if test "x$ac_cv_func_strlcpy" = xyes +then : + printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h + +fi +ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" +if test "x$ac_cv_func_vsnprintf" = xyes +then : + printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h + +fi + + + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking types of arguments for select" >&5 +printf %s "checking types of arguments for select... " >&6; } +if test ${ac_cv_func_select_args+y} +then : + printf %s "(cached) " >&6 +else $as_nop + ac_cv_func_select_args='int,int *,struct timeval *' +for ac_arg234 in 'fd_set *' 'int *' 'void *'; do for ac_arg1 in 'int' 'size_t' 'unsigned long int' 'unsigned int'; do for ac_arg5 in 'struct timeval *' 'const struct timeval *'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -7620,7 +8289,7 @@ $ac_includes_default #endif int -main () +main (void) { extern int select ($ac_arg1, $ac_arg234, $ac_arg234, $ac_arg234, @@ -7629,46 +8298,39 @@ extern int select ($ac_arg1, return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : ac_cv_func_select_args="$ac_arg1,$ac_arg234,$ac_arg5"; break 3 fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done done done -# Provide a safe default value. -: "${ac_cv_func_select_args=int,int *,struct timeval *}" fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 -$as_echo "$ac_cv_func_select_args" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 +printf "%s\n" "$ac_cv_func_select_args" >&6; } ac_save_IFS=$IFS; IFS=',' set dummy `echo "$ac_cv_func_select_args" | sed 's/\*/\*/g'` IFS=$ac_save_IFS shift -cat >>confdefs.h <<_ACEOF -#define SELECT_TYPE_ARG1 $1 -_ACEOF +printf "%s\n" "#define SELECT_TYPE_ARG1 $1" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define SELECT_TYPE_ARG234 ($2) -_ACEOF +printf "%s\n" "#define SELECT_TYPE_ARG234 ($2)" >>confdefs.h -cat >>confdefs.h <<_ACEOF -#define SELECT_TYPE_ARG5 ($3) -_ACEOF +printf "%s\n" "#define SELECT_TYPE_ARG5 ($3)" >>confdefs.h -rm -f conftest* +rm -rf conftest* # https://raw.githubusercontent.com/tmux/tmux/2dd9a4fb9cd73987bdca5b8b2f85ca8b1a6e4e73/configure.ac # Check for b64_ntop. If we have b64_ntop, we assume b64_pton as well. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for b64_ntop" >&5 -$as_echo_n "checking for b64_ntop... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for b64_ntop" >&5 +printf %s "checking for b64_ntop... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7677,27 +8339,28 @@ $as_echo_n "checking for b64_ntop... " >&6; } #include int -main () +main (void) { b64_ntop(NULL, 0, NULL, 0); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : found_b64_ntop=yes -else +else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$found_b64_ntop" = xno; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for b64_ntop with -lresolv" >&5 -$as_echo_n "checking for b64_ntop with -lresolv... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for b64_ntop with -lresolv" >&5 +printf %s "checking for b64_ntop with -lresolv... " >&6; } OLD_LIBS="$LIBS" LIBS="$LIBS -lresolv" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -7708,28 +8371,29 @@ $as_echo_n "checking for b64_ntop with -lresolv... " >&6; } #include int -main () +main (void) { b64_ntop(NULL, 0, NULL, 0); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : found_b64_ntop=yes -else +else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for b64_ntop with -lnetwork" >&5 -$as_echo_n "checking for b64_ntop with -lnetwork... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for b64_ntop with -lnetwork" >&5 +printf %s "checking for b64_ntop with -lnetwork... " >&6; } OLD_LIBS="$LIBS" LIBS="-lnetwork" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -7740,34 +8404,35 @@ $as_echo_n "checking for b64_ntop with -lnetwork... " >&6; } #include int -main () +main (void) { b64_ntop(NULL, 0, NULL, 0); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : found_b64_ntop=yes -else +else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi fi fi if test "x$found_b64_ntop" = xyes; then -$as_echo "#define HAVE_BASE64 1" >>confdefs.h +printf "%s\n" "#define HAVE_BASE64 1" >>confdefs.h - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } else case " $LIBOBJS " in *" base64.$ac_objext "* ) ;; @@ -7778,48 +8443,36 @@ esac fi - - - for ac_header in $ac_header_list -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - +ac_func= +for ac_item in $ac_func_c_list +do + if test $ac_func; then + ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func + if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then + echo "#define $ac_item 1" >> confdefs.h + fi + ac_func= + else + ac_func=$ac_item + fi done - - - - - - -for ac_func in getpagesize -do : - ac_fn_c_check_func "$LINENO" "getpagesize" "ac_cv_func_getpagesize" -if test "x$ac_cv_func_getpagesize" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPAGESIZE 1 -_ACEOF - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 -$as_echo_n "checking for working mmap... " >&6; } -if ${ac_cv_func_mmap_fixed_mapped+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_mmap_fixed_mapped=no -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working mmap" >&5 +printf %s "checking for working mmap... " >&6; } +if test ${ac_cv_func_mmap_fixed_mapped+y} +then : + printf %s "(cached) " >&6 +else $as_nop + if test "$cross_compiling" = yes +then : + case "$host_os" in # (( + # Guess yes on platforms where we know the result. + linux*) ac_cv_func_mmap_fixed_mapped=yes ;; + # If we don't know, assume the worst. + *) ac_cv_func_mmap_fixed_mapped=no ;; + esac +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -7851,10 +8504,6 @@ $ac_includes_default #include #include -#if !defined STDC_HEADERS && !defined HAVE_STDLIB_H -char *malloc (); -#endif - /* This mess was copied from the GNU getpagesize.h. */ #ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE @@ -7888,7 +8537,7 @@ char *malloc (); #endif /* no HAVE_GETPAGESIZE */ int -main () +main (void) { char *data, *data2, *data3; const char *cdata2; @@ -7961,9 +8610,10 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : ac_cv_func_mmap_fixed_mapped=yes -else +else $as_nop ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ @@ -7971,11 +8621,11 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 -$as_echo "$ac_cv_func_mmap_fixed_mapped" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_mmap_fixed_mapped" >&5 +printf "%s\n" "$ac_cv_func_mmap_fixed_mapped" >&6; } if test $ac_cv_func_mmap_fixed_mapped = yes; then -$as_echo "#define HAVE_MMAP 1" >>confdefs.h +printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h fi rm -f conftest.mmap conftest.txt @@ -7985,7 +8635,7 @@ rm -f conftest.mmap conftest.txt # Tcl version to recommend if no Tcl is found, and the site where it can be # found for download. tclrecommendver="8.6.X" -tclrecommendsite="ftp://ftp.tcl.tk/pub/tcl/tcl8_6/" +tclrecommendsite="https://sourceforge.net/projects/tcl/files/Tcl/" # Tcl header filenames. tclheadernames="tcl.h" @@ -8018,8 +8668,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -8049,15 +8699,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -8071,8 +8721,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -8081,13 +8731,15 @@ rm -f confcache # Check whether --with-tcllib was given. -if test "${with_tcllib+set}" = set; then : +if test ${with_tcllib+y} +then : withval=$with_tcllib; tcllibname="$withval" fi # Check whether --with-tclinc was given. -if test "${with_tclinc+set}" = set; then : +if test ${with_tclinc+y} +then : withval=$with_tclinc; tclincname="$withval" fi @@ -8191,15 +8843,15 @@ EOF if test "x$TCLLIBFN" = x; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Autoconfiguring Tcl with tclConfig.sh" >&5 -$as_echo "$as_me: Autoconfiguring Tcl with tclConfig.sh" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Autoconfiguring Tcl with tclConfig.sh" >&5 +printf "%s\n" "$as_me: Autoconfiguring Tcl with tclConfig.sh" >&6;} egg_tcl_changed="yes" # TEA extensions pass this us the version of TEA they think they # are compatible with. TEA_VERSION="3.10" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for correct TEA configuration" >&5 -$as_echo_n "checking for correct TEA configuration... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for correct TEA configuration" >&5 +printf %s "checking for correct TEA configuration... " >&6; } if test x"${PACKAGE_NAME}" = x ; then as_fn_error $? " The PACKAGE_NAME variable must be defined by your TEA configure.ac" "$LINENO" 5 @@ -8208,11 +8860,11 @@ The PACKAGE_NAME variable must be defined by your TEA configure.ac" "$LINENO" 5 as_fn_error $? " TEA version not specified." "$LINENO" 5 elif test ""3.10"" != "${TEA_VERSION}" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: warning: requested TEA version \"\"3.10\"\", have \"${TEA_VERSION}\"" >&5 -$as_echo "warning: requested TEA version \"\"3.10\"\", have \"${TEA_VERSION}\"" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: warning: requested TEA version \"\"3.10\"\", have \"${TEA_VERSION}\"" >&5 +printf "%s\n" "warning: requested TEA version \"\"3.10\"\", have \"${TEA_VERSION}\"" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (TEA ${TEA_VERSION})" >&5 -$as_echo "ok (TEA ${TEA_VERSION})" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok (TEA ${TEA_VERSION})" >&5 +printf "%s\n" "ok (TEA ${TEA_VERSION})" >&6; } fi # If the user did not set CFLAGS, set it now to keep macros @@ -8226,11 +8878,12 @@ $as_echo "ok (TEA ${TEA_VERSION})" >&6; } *win32*|*WIN32*|*MINGW32_*) # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CYGPATH+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CYGPATH+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else @@ -8238,11 +8891,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CYGPATH="cygpath -m" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8254,11 +8911,11 @@ fi fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 -$as_echo "$CYGPATH" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 +printf "%s\n" "$CYGPATH" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi @@ -8294,8 +8951,8 @@ fi exec_prefix=$prefix fi - { $as_echo "$as_me:${as_lineno-$LINENO}: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&5 -$as_echo "$as_me: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&5 +printf "%s\n" "$as_me: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&6;} @@ -8328,15 +8985,17 @@ $as_echo "$as_me: configuring ${PACKAGE_NAME} ${PACKAGE_VERSION}" >&6;} no_tcl=true # Check whether --with-tcl was given. -if test "${with_tcl+set}" = set; then : +if test ${with_tcl+y} +then : withval=$with_tcl; with_tclconfig="${withval}" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl configuration" >&5 -$as_echo_n "checking for Tcl configuration... " >&6; } - if ${ac_cv_c_tclconfig+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl configuration" >&5 +printf %s "checking for Tcl configuration... " >&6; } + if test ${ac_cv_c_tclconfig+y} +then : + printf %s "(cached) " >&6 +else $as_nop # First check to see if --with-tcl was specified. @@ -8344,8 +9003,8 @@ else case "${with_tclconfig}" in */tclConfig.sh ) if test -f "${with_tclconfig}"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5 -$as_echo "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&5 +printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory containing tclConfig.sh, not to tclConfig.sh itself" >&2;} with_tclconfig="`echo "${with_tclconfig}" | sed 's!/tclConfig\.sh$!!'`" fi ;; esac @@ -8459,22 +9118,22 @@ fi else no_tcl= TCL_BIN_DIR="${ac_cv_c_tclconfig}" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5 -$as_echo "found ${TCL_BIN_DIR}/tclConfig.sh" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: found ${TCL_BIN_DIR}/tclConfig.sh" >&5 +printf "%s\n" "found ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5 -$as_echo_n "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for existence of ${TCL_BIN_DIR}/tclConfig.sh" >&5 +printf %s "checking for existence of ${TCL_BIN_DIR}/tclConfig.sh... " >&6; } if test -f "${TCL_BIN_DIR}/tclConfig.sh" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: loading" >&5 -$as_echo "loading" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: loading" >&5 +printf "%s\n" "loading" >&6; } . "${TCL_BIN_DIR}/tclConfig.sh" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5 -$as_echo "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: could not find ${TCL_BIN_DIR}/tclConfig.sh" >&5 +printf "%s\n" "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; } fi # eval is required to do the TCL_DBGX substitution @@ -8533,14 +9192,14 @@ $as_echo "could not find ${TCL_BIN_DIR}/tclConfig.sh" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking platform" >&5 -$as_echo_n "checking platform... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking platform" >&5 +printf %s "checking platform... " >&6; } hold_cc=$CC; CC="$TCL_CC" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { #ifdef _WIN32 @@ -8551,21 +9210,23 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : TEA_PLATFORM="unix" CYGPATH=echo -else +else $as_nop TEA_PLATFORM="windows" # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CYGPATH+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_CYGPATH+y} +then : + printf %s "(cached) " >&6 +else $as_nop if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else @@ -8573,11 +9234,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CYGPATH="cygpath -m" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -8589,27 +9254,25 @@ fi fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 -$as_echo "$CYGPATH" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CYGPATH" >&5 +printf "%s\n" "$CYGPATH" >&6; } else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } fi fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC=$hold_cc - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TEA_PLATFORM" >&5 -$as_echo "$TEA_PLATFORM" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TEA_PLATFORM" >&5 +printf "%s\n" "$TEA_PLATFORM" >&6; } # The BUILD_$pkg is to define the correct extern storage class # handling when making this package -cat >>confdefs.h <<_ACEOF -#define BUILD_${PACKAGE_NAME} /**/ -_ACEOF +printf "%s\n" "#define BUILD_${PACKAGE_NAME} /**/" >>confdefs.h # Do this here as we have fully defined TEA_PLATFORM now if test "${TEA_PLATFORM}" = "windows" ; then @@ -8634,17 +9297,19 @@ _ACEOF #-------------------------------------------------------------------- ac_fn_c_check_func "$LINENO" "sin" "ac_cv_func_sin" -if test "x$ac_cv_func_sin" = xyes; then : +if test "x$ac_cv_func_sin" = xyes +then : MATH_LIBS="" -else +else $as_nop MATH_LIBS="-lm" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5 -$as_echo_n "checking for main in -lieee... " >&6; } -if ${ac_cv_lib_ieee_main+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5 +printf %s "checking for main in -lieee... " >&6; } +if test ${ac_cv_lib_ieee_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lieee $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8652,25 +9317,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int -main () +main (void) { return main (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ieee_main=yes -else +else $as_nop ac_cv_lib_ieee_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5 -$as_echo "$ac_cv_lib_ieee_main" >&6; } -if test "x$ac_cv_lib_ieee_main" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5 +printf "%s\n" "$ac_cv_lib_ieee_main" >&6; } +if test "x$ac_cv_lib_ieee_main" = xyes +then : MATH_LIBS="-lieee $MATH_LIBS" fi @@ -8680,11 +9347,12 @@ fi # needs net/errno.h to define the socket-related error codes. #-------------------------------------------------------------------- - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 -$as_echo_n "checking for main in -linet... " >&6; } -if ${ac_cv_lib_inet_main+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -linet" >&5 +printf %s "checking for main in -linet... " >&6; } +if test ${ac_cv_lib_inet_main+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8692,38 +9360,40 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext int -main () +main (void) { return main (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_inet_main=yes -else +else $as_nop ac_cv_lib_inet_main=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 -$as_echo "$ac_cv_lib_inet_main" >&6; } -if test "x$ac_cv_lib_inet_main" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 +printf "%s\n" "$ac_cv_lib_inet_main" >&6; } +if test "x$ac_cv_lib_inet_main" = xyes +then : LIBS="$LIBS -linet" fi - ac_fn_c_check_header_mongrel "$LINENO" "net/errno.h" "ac_cv_header_net_errno_h" "$ac_includes_default" -if test "x$ac_cv_header_net_errno_h" = xyes; then : + ac_fn_c_check_header_compile "$LINENO" "net/errno.h" "ac_cv_header_net_errno_h" "$ac_includes_default" +if test "x$ac_cv_header_net_errno_h" = xyes +then : -$as_echo "#define HAVE_NET_ERRNO_H 1" >>confdefs.h +printf "%s\n" "#define HAVE_NET_ERRNO_H 1" >>confdefs.h fi - #-------------------------------------------------------------------- # Check for the existence of the -lsocket and -lnsl libraries. # The order here is important, so that they end up in the right @@ -8744,22 +9414,25 @@ fi tcl_checkBoth=0 ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" -if test "x$ac_cv_func_connect" = xyes; then : +if test "x$ac_cv_func_connect" = xyes +then : tcl_checkSocket=0 -else +else $as_nop tcl_checkSocket=1 fi if test "$tcl_checkSocket" = 1; then ac_fn_c_check_func "$LINENO" "setsockopt" "ac_cv_func_setsockopt" -if test "x$ac_cv_func_setsockopt" = xyes; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5 -$as_echo_n "checking for setsockopt in -lsocket... " >&6; } -if ${ac_cv_lib_socket_setsockopt+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test "x$ac_cv_func_setsockopt" = xyes +then : + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5 +printf %s "checking for setsockopt in -lsocket... " >&6; } +if test ${ac_cv_lib_socket_setsockopt+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8768,32 +9441,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char setsockopt (); int -main () +main (void) { return setsockopt (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_socket_setsockopt=yes -else +else $as_nop ac_cv_lib_socket_setsockopt=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5 -$as_echo "$ac_cv_lib_socket_setsockopt" >&6; } -if test "x$ac_cv_lib_socket_setsockopt" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_setsockopt" >&5 +printf "%s\n" "$ac_cv_lib_socket_setsockopt" >&6; } +if test "x$ac_cv_lib_socket_setsockopt" = xyes +then : LIBS="$LIBS -lsocket" -else +else $as_nop tcl_checkBoth=1 fi @@ -8804,22 +9476,25 @@ fi tk_oldLibs=$LIBS LIBS="$LIBS -lsocket -lnsl" ac_fn_c_check_func "$LINENO" "accept" "ac_cv_func_accept" -if test "x$ac_cv_func_accept" = xyes; then : +if test "x$ac_cv_func_accept" = xyes +then : tcl_checkNsl=0 -else +else $as_nop LIBS=$tk_oldLibs fi fi ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" -if test "x$ac_cv_func_gethostbyname" = xyes; then : - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 -$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } -if ${ac_cv_lib_nsl_gethostbyname+:} false; then : - $as_echo_n "(cached) " >&6 -else +if test "x$ac_cv_func_gethostbyname" = xyes +then : + +else $as_nop + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +printf %s "checking for gethostbyname in -lnsl... " >&6; } +if test ${ac_cv_lib_nsl_gethostbyname+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -8828,30 +9503,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char gethostbyname (); int -main () +main (void) { return gethostbyname (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_nsl_gethostbyname=yes -else +else $as_nop ac_cv_lib_nsl_gethostbyname=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 -$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } -if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes +then : LIBS="$LIBS -lnsl" fi @@ -8871,10 +9545,10 @@ fi . ${TCL_BIN_DIR}/tclConfig.sh SHLIB_LD=$TCL_SHLIB_LD - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl linker" >&5 -$as_echo_n "checking for Tcl linker... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIB_LD" >&5 -$as_echo "$SHLIB_LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl linker" >&5 +printf %s "checking for Tcl linker... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIB_LD" >&5 +printf "%s\n" "$SHLIB_LD" >&6; } else TCL_LIBS="${EGG_MATH_LIB}" fi @@ -8886,10 +9560,10 @@ $as_echo "$SHLIB_LD" >&6; } . ${TCLLIB}/tclConfig.sh SHLIB_LD=$TCL_SHLIB_LD - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl linker" >&5 -$as_echo_n "checking for Tcl linker... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SHLIB_LD" >&5 -$as_echo "$SHLIB_LD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl linker" >&5 +printf %s "checking for Tcl linker... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SHLIB_LD" >&5 +printf "%s\n" "$SHLIB_LD" >&6; } TCL_PATCHLEVEL="${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${TCL_PATCH_LEVEL}" TCL_LIB_SPEC="${TCL_LIB_SPEC} ${TCL_LIBS}" else @@ -8911,36 +9585,36 @@ $as_echo "$SHLIB_LD" >&6; } if test "$SUNOS_GCC" = yes; then SHLIB_LD=$(echo $SHLIB_LD | sed -- 's/-z text//') - { $as_echo "$as_me:${as_lineno-$LINENO}: SunOS found, SHLIB_LD = $SHLIB_LD" >&5 -$as_echo "$as_me: SunOS found, SHLIB_LD = $SHLIB_LD" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: SunOS found, SHLIB_LD = $SHLIB_LD" >&5 +printf "%s\n" "$as_me: SunOS found, SHLIB_LD = $SHLIB_LD" >&6;} fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl version" >&5 -$as_echo_n "checking for Tcl version... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TCL_PATCHLEVEL" >&5 -$as_echo "$TCL_PATCHLEVEL" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl library flags" >&5 -$as_echo_n "checking for Tcl library flags... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TCL_LIB_SPEC" >&5 -$as_echo "$TCL_LIB_SPEC" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Tcl header flags" >&5 -$as_echo_n "checking for Tcl header flags... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TCL_INCLUDE_SPEC" >&5 -$as_echo "$TCL_INCLUDE_SPEC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl version" >&5 +printf %s "checking for Tcl version... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TCL_PATCHLEVEL" >&5 +printf "%s\n" "$TCL_PATCHLEVEL" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl library flags" >&5 +printf %s "checking for Tcl library flags... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TCL_LIB_SPEC" >&5 +printf "%s\n" "$TCL_LIB_SPEC" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Tcl header flags" >&5 +printf %s "checking for Tcl header flags... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TCL_INCLUDE_SPEC" >&5 +printf "%s\n" "$TCL_INCLUDE_SPEC" >&6; } - if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 3; then + if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 5; then cat << EOF >&2 configure: error: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is $tclrecommendver and can be downloaded from - ${tclrecommendsite}. We require at least Tcl 8.3. + ${tclrecommendsite}. We require at least Tcl 8.5. See doc/COMPILE-GUIDE's 'Tcl Detection and Installation' section for more information. @@ -8951,13 +9625,6 @@ EOF - if test $TCL_MAJOR_VERSION -gt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -ge 4; then - -$as_echo "#define HAVE_TCL_NOTIFIER_INIT 1" >>confdefs.h - - fi - - if test "x$TCLINCFN" != x; then egg_tclinc="\\\"$TCLINC/$TCLINCFN\\\"" else @@ -8974,72 +9641,82 @@ $as_echo "#define HAVE_TCL_NOTIFIER_INIT 1" >>confdefs.h # Debug options # Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : +if test ${enable_debug+y} +then : enableval=$enable_debug; enable_debug="$enableval" -else +else $as_nop enable_debug="auto" fi # Check whether --enable-debug was given. -if test "${enable_debug+set}" = set; then : +if test ${enable_debug+y} +then : enableval=$enable_debug; enable_debug="$enableval" -else +else $as_nop enable_debug="auto" fi # Check whether --enable-debug-assert was given. -if test "${enable_debug_assert+set}" = set; then : +if test ${enable_debug_assert+y} +then : enableval=$enable_debug_assert; enable_debug_assert="$enableval" -else +else $as_nop enable_debug_assert="auto" fi # Check whether --enable-debug-assert was given. -if test "${enable_debug_assert+set}" = set; then : +if test ${enable_debug_assert+y} +then : enableval=$enable_debug_assert; enable_debug_assert="$enableval" -else +else $as_nop enable_debug_assert="auto" fi # Check whether --enable-debug-mem was given. -if test "${enable_debug_mem+set}" = set; then : +if test ${enable_debug_mem+y} +then : enableval=$enable_debug_mem; enable_debug_mem="$enableval" -else +else $as_nop enable_debug_mem="auto" fi # Check whether --enable-debug-mem was given. -if test "${enable_debug_mem+set}" = set; then : +if test ${enable_debug_mem+y} +then : enableval=$enable_debug_mem; enable_debug_mem="$enableval" -else +else $as_nop enable_debug_mem="auto" fi # Check whether --enable-debug-dns was given. -if test "${enable_debug_dns+set}" = set; then : +if test ${enable_debug_dns+y} +then : enableval=$enable_debug_dns; enable_debug_dns="$enableval" -else +else $as_nop enable_debug_dns="auto" fi # Check whether --enable-debug-dns was given. -if test "${enable_debug_dns+set}" = set; then : +if test ${enable_debug_dns+y} +then : enableval=$enable_debug_dns; enable_debug_dns="$enableval" -else +else $as_nop enable_debug_dns="auto" fi # Check whether --enable-debug-context was given. -if test "${enable_debug_context+set}" = set; then : +if test ${enable_debug_context+y} +then : enableval=$enable_debug_context; enable_debug_context="$enableval" -else +else $as_nop enable_debug_context="auto" fi # Check whether --enable-debug-context was given. -if test "${enable_debug_context+set}" = set; then : +if test ${enable_debug_context+y} +then : enableval=$enable_debug_context; enable_debug_context="$enableval" -else +else $as_nop enable_debug_context="auto" fi @@ -9101,8 +9778,8 @@ fi if test "$enable_value" != yes && test "$enable_value" != no; then opt_name=`echo $enable_option | sed 's/_/-/g'` eval opt_default=\$default_$enable_option - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid option '$enable_value' passed to --enable-${opt_name}, defaulting to '$opt_default'" >&5 -$as_echo "$as_me: WARNING: Invalid option '$enable_value' passed to --enable-${opt_name}, defaulting to '$opt_default'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid option '$enable_value' passed to --enable-${opt_name}, defaulting to '$opt_default'" >&5 +printf "%s\n" "$as_me: WARNING: Invalid option '$enable_value' passed to --enable-${opt_name}, defaulting to '$opt_default'" >&2;} eval enable_$enable_option="auto" fi fi @@ -9173,8 +9850,8 @@ $as_echo "$as_me: WARNING: Invalid option '$enable_value' passed to --enable-${o # Make sure an invalid option wasn't passed as --enable-debug-context=foo if test "$enable_debug_context" != yes && test "$enable_debug_context" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid option '$enable_debug_context' passed to --enable-debug-context, defaulting to '$default_debug_context'" >&5 -$as_echo "$as_me: WARNING: Invalid option '$enable_debug_context' passed to --enable-debug-context, defaulting to '$default_debug_context'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid option '$enable_debug_context' passed to --enable-debug-context, defaulting to '$default_debug_context'" >&5 +printf "%s\n" "$as_me: WARNING: Invalid option '$enable_debug_context' passed to --enable-debug-context, defaulting to '$default_debug_context'" >&2;} enable_debug_context="$default_debug_context" fi else @@ -9183,7 +9860,7 @@ $as_echo "$as_me: WARNING: Invalid option '$enable_debug_context' passed to --en if test "$enable_debug_context" = yes; then -$as_echo "#define DEBUG_CONTEXT 1" >>confdefs.h +printf "%s\n" "#define DEBUG_CONTEXT 1" >>confdefs.h else cat << 'EOF' >&2 @@ -9202,18 +9879,17 @@ EOF # Check whether --with-handlen was given. -if test "${with_handlen+set}" = set; then : +if test ${with_handlen+y} +then : withval=$with_handlen; if test -n $withval && test $withval -ge 9 && test $withval -le 32; then -cat >>confdefs.h <<_ACEOF -#define EGG_HANDLEN $withval -_ACEOF +printf "%s\n" "#define EGG_HANDLEN $withval" >>confdefs.h else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid handlen given (must be a number between 9 and 32), defaulting to 9." >&5 -$as_echo "$as_me: WARNING: Invalid handlen given (must be a number between 9 and 32), defaulting to 9." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid handlen given (must be a number between 9 and 32), defaulting to 9." >&5 +printf "%s\n" "$as_me: WARNING: Invalid handlen given (must be a number between 9 and 32), defaulting to 9." >&2;} fi fi @@ -9223,13 +9899,15 @@ fi # Check for IPv6 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system IPv6 support" >&5 -$as_echo_n "checking for system IPv6 support... " >&6; } -if ${egg_cv_var_ipv6_supported+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for system IPv6 support" >&5 +printf %s "checking for system IPv6 support... " >&6; } +if test ${egg_cv_var_ipv6_supported+y} +then : + printf %s "(cached) " >&6 +else $as_nop - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes +then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9239,7 +9917,7 @@ else #include int -main () +main (void) { int s = socket(AF_INET6, SOCK_STREAM, 0); @@ -9253,18 +9931,19 @@ main () return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : egg_cv_var_ipv6_supported="yes" -else +else $as_nop egg_cv_var_ipv6_supported="no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9273,7 +9952,7 @@ else #include int -main () +main (void) { int s = socket(AF_INET6, SOCK_STREAM, 0); @@ -9287,11 +9966,12 @@ main () return 0; } _ACEOF -if ac_fn_c_try_run "$LINENO"; then : +if ac_fn_c_try_run "$LINENO" +then : egg_cv_var_ipv6_supported="yes" -else +else $as_nop egg_cv_var_ipv6_supported="no" @@ -9302,73 +9982,64 @@ fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ipv6_supported" >&5 -$as_echo "$egg_cv_var_ipv6_supported" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ipv6_supported" >&5 +printf "%s\n" "$egg_cv_var_ipv6_supported" >&6; } ipv6_enabled="no" # Check whether --enable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then : +if test ${enable_ipv6+y} +then : enableval=$enable_ipv6; enable_ipv6="$enableval" -else +else $as_nop enable_ipv6="$egg_cv_var_ipv6_supported" fi # Check whether --enable-ipv6 was given. -if test "${enable_ipv6+set}" = set; then : +if test ${enable_ipv6+y} +then : enableval=$enable_ipv6; enable_ipv6="$enableval" fi if test "$enable_ipv6" = "yes"; then if test "$egg_cv_var_ipv6_supported" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have enabled IPv6 but your system doesn't seem to support it." >&5 -$as_echo "$as_me: WARNING: You have enabled IPv6 but your system doesn't seem to support it." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Eggdrop will compile but will be limited to IPv4 on this host." >&5 -$as_echo "$as_me: WARNING: Eggdrop will compile but will be limited to IPv4 on this host." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You have enabled IPv6 but your system doesn't seem to support it." >&5 +printf "%s\n" "$as_me: WARNING: You have enabled IPv6 but your system doesn't seem to support it." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Eggdrop will compile but will be limited to IPv4 on this host." >&5 +printf "%s\n" "$as_me: WARNING: Eggdrop will compile but will be limited to IPv4 on this host." >&2;} fi -$as_echo "#define IPV6 1" >>confdefs.h +printf "%s\n" "#define IPV6 1" >>confdefs.h ipv6_enabled="yes" fi if test "$enable_ipv6" = "yes"; then - for ac_func in gethostbyname2 -do : - ac_fn_c_check_func "$LINENO" "gethostbyname2" "ac_cv_func_gethostbyname2" -if test "x$ac_cv_func_gethostbyname2" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETHOSTBYNAME2 1 -_ACEOF - -fi -done - ac_fn_c_check_type "$LINENO" "struct in6_addr" "ac_cv_type_struct_in6_addr" " #include #include " -if test "x$ac_cv_type_struct_in6_addr" = xyes; then : +if test "x$ac_cv_type_struct_in6_addr" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_IN6_ADDR 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h egg_cv_var_have_in6_addr="yes" -else +else $as_nop egg_cv_var_have_in6_addr="no" fi if test "$egg_cv_var_have_in6_addr" = "yes"; then # Check for in6addr_any - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the in6addr_any constant" >&5 -$as_echo_n "checking for the in6addr_any constant... " >&6; } -if ${egg_cv_var_have_in6addr_any+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the in6addr_any constant" >&5 +printf %s "checking for the in6addr_any constant... " >&6; } +if test ${egg_cv_var_have_in6addr_any+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9377,34 +10048,36 @@ else #include int -main () +main (void) { struct in6_addr i6 = in6addr_any; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : egg_cv_var_have_in6addr_any="yes" -else +else $as_nop egg_cv_var_have_in6addr_any="no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_have_in6addr_any" >&5 -$as_echo "$egg_cv_var_have_in6addr_any" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_have_in6addr_any" >&5 +printf "%s\n" "$egg_cv_var_have_in6addr_any" >&6; } if test "$egg_cv_var_have_in6addr_any" = "yes"; then -$as_echo "#define HAVE_IN6ADDR_ANY 1" >>confdefs.h +printf "%s\n" "#define HAVE_IN6ADDR_ANY 1" >>confdefs.h fi # Check for in6addr_loopback - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the in6addr_loopback constant" >&5 -$as_echo_n "checking for the in6addr_loopback constant... " >&6; } -if ${egg_cv_var_have_in6addr_loopback+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for the in6addr_loopback constant" >&5 +printf %s "checking for the in6addr_loopback constant... " >&6; } +if test ${egg_cv_var_have_in6addr_loopback+y} +then : + printf %s "(cached) " >&6 +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9413,26 +10086,27 @@ else #include int -main () +main (void) { struct in6_addr i6 = in6addr_loopback; ; return 0; } _ACEOF -if ac_fn_c_try_compile "$LINENO"; then : +if ac_fn_c_try_compile "$LINENO" +then : egg_cv_var_have_in6addr_loopback="yes" -else +else $as_nop egg_cv_var_have_in6addr_loopback="no" fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_have_in6addr_loopback" >&5 -$as_echo "$egg_cv_var_have_in6addr_loopback" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_have_in6addr_loopback" >&5 +printf "%s\n" "$egg_cv_var_have_in6addr_loopback" >&6; } if test "$egg_cv_var_have_in6addr_loopback" = "yes"; then -$as_echo "#define HAVE_IN6ADDR_LOOPBACK 1" >>confdefs.h +printf "%s\n" "#define HAVE_IN6ADDR_LOOPBACK 1" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "struct sockaddr_in6" "ac_cv_type_struct_sockaddr_in6" " @@ -9440,18 +10114,17 @@ $as_echo "#define HAVE_IN6ADDR_LOOPBACK 1" >>confdefs.h #include " -if test "x$ac_cv_type_struct_sockaddr_in6" = xyes; then : +if test "x$ac_cv_type_struct_sockaddr_in6" = xyes +then : -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_SOCKADDR_IN6 1 -_ACEOF +printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_IN6 1" >>confdefs.h fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: no in6_addr found, skipping dependent checks. Custom definitions will be used." >&5 -$as_echo "$as_me: no in6_addr found, skipping dependent checks. Custom definitions will be used." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: no in6_addr found, skipping dependent checks. Custom definitions will be used." >&5 +printf "%s\n" "$as_me: no in6_addr found, skipping dependent checks. Custom definitions will be used." >&6;} fi fi @@ -9459,29 +10132,32 @@ fi # Check for TLS - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable TLS support" >&5 -$as_echo_n "checking whether to enable TLS support... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable TLS support" >&5 +printf %s "checking whether to enable TLS support... " >&6; } # Check whether --enable-tls was given. -if test "${enable_tls+set}" = set; then : +if test ${enable_tls+y} +then : enableval=$enable_tls; enable_tls="$enableval" fi # Check whether --enable-tls was given. -if test "${enable_tls+set}" = set; then : +if test ${enable_tls+y} +then : enableval=$enable_tls; enable_tls="$enableval" -else +else $as_nop enable_tls="autodetect" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_tls" >&5 -$as_echo "$enable_tls" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_tls" >&5 +printf "%s\n" "$enable_tls" >&6; } save_LIBS="$LIBS" # Check whether --with-sslinc was given. -if test "${with_sslinc+set}" = set; then : +if test ${with_sslinc+y} +then : withval=$with_sslinc; if test "$enable_tls" != "no"; then if test -d "$withval"; then @@ -9489,9 +10165,9 @@ if test "${with_sslinc+set}" = set; then : save_CPP="$CPP" CC="$CC -I$withval" CPP="$CPP -I$withval" - for ac_header in openssl/ssl.h openssl/x509v3.h + for ac_header in openssl/ssl.h openssl/x509v3.h do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef CYGWIN_HACKS # ifndef __int64 @@ -9500,29 +10176,29 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #endif " -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF sslinc="-I$withval" -else +else $as_nop - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." >&5 -$as_echo "$as_me: WARNING: Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." >&5 +printf "%s\n" "$as_me: WARNING: Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." >&2;} sslinc="" break fi done - SSL_INCLUDES=$sslinc CC="$save_CC" CPP="$save_CPP" else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL headers. $withval is not a directory." >&5 -$as_echo "$as_me: WARNING: Invalid path to OpenSSL headers. $withval is not a directory." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL headers. $withval is not a directory." >&5 +printf "%s\n" "$as_me: WARNING: Invalid path to OpenSSL headers. $withval is not a directory." >&2;} fi fi @@ -9531,15 +10207,17 @@ fi # Check whether --with-ssllib was given. -if test "${with_ssllib+set}" = set; then : +if test ${with_ssllib+y} +then : withval=$with_ssllib; if test "$enable_tls" != "no"; then if test -d "$withval"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X509_digest in -lcrypto" >&5 -$as_echo_n "checking for X509_digest in -lcrypto... " >&6; } -if ${ac_cv_lib_crypto_X509_digest+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X509_digest in -lcrypto" >&5 +printf %s "checking for X509_digest in -lcrypto... " >&6; } +if test ${ac_cv_lib_crypto_X509_digest+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto -L$withval -lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9548,45 +10226,43 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char X509_digest (); int -main () +main (void) { return X509_digest (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_crypto_X509_digest=yes -else +else $as_nop ac_cv_lib_crypto_X509_digest=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_X509_digest" >&5 -$as_echo "$ac_cv_lib_crypto_X509_digest" >&6; } -if test "x$ac_cv_lib_crypto_X509_digest" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBCRYPTO 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_X509_digest" >&5 +printf "%s\n" "$ac_cv_lib_crypto_X509_digest" >&6; } +if test "x$ac_cv_lib_crypto_X509_digest" = xyes +then : + printf "%s\n" "#define HAVE_LIBCRYPTO 1" >>confdefs.h LIBS="-lcrypto $LIBS" -else +else $as_nop havessllib="no" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 -$as_echo_n "checking for SSL_accept in -lssl... " >&6; } -if ${ac_cv_lib_ssl_SSL_accept+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 +printf %s "checking for SSL_accept in -lssl... " >&6; } +if test ${ac_cv_lib_ssl_SSL_accept+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lssl -L$withval -lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9595,51 +10271,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char SSL_accept (); int -main () +main (void) { return SSL_accept (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ssl_SSL_accept=yes -else +else $as_nop ac_cv_lib_ssl_SSL_accept=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_accept" >&6; } -if test "x$ac_cv_lib_ssl_SSL_accept" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSSL 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 +printf "%s\n" "$ac_cv_lib_ssl_SSL_accept" >&6; } +if test "x$ac_cv_lib_ssl_SSL_accept" = xyes +then : + printf "%s\n" "#define HAVE_LIBSSL 1" >>confdefs.h LIBS="-lssl $LIBS" -else +else $as_nop havessllib="no" fi if test "$havessllib" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL libs. $withval doesn't contain the required files." >&5 -$as_echo "$as_me: WARNING: Invalid path to OpenSSL libs. $withval doesn't contain the required files." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to OpenSSL libs. $withval doesn't contain the required files." >&5 +printf "%s\n" "$as_me: WARNING: Invalid path to OpenSSL libs. $withval doesn't contain the required files." >&2;} else SSL_LIBS=-L$withval LDFLAGS="${LDFLAGS} -L$withval" fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You have specified an invalid path to OpenSSL libs. $withval is not a directory." >&5 -$as_echo "$as_me: WARNING: You have specified an invalid path to OpenSSL libs. $withval is not a directory." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: You have specified an invalid path to OpenSSL libs. $withval is not a directory." >&5 +printf "%s\n" "$as_me: WARNING: You have specified an invalid path to OpenSSL libs. $withval is not a directory." >&2;} fi fi @@ -9650,9 +10323,9 @@ fi tls_enabled="no" if test "$enable_tls" != "no"; then if test -z "$SSL_INCLUDES"; then - for ac_header in openssl/ssl.h openssl/x509v3.h + for ac_header in openssl/ssl.h openssl/x509v3.h do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef CYGWIN_HACKS # ifndef __int64 @@ -9661,24 +10334,25 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #endif " -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : +if eval test \"x\$"$as_ac_Header"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -else +else $as_nop havesslinc="no" fi done - fi if test -z "$SSL_LIBS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for X509_digest in -lcrypto" >&5 -$as_echo_n "checking for X509_digest in -lcrypto... " >&6; } -if ${ac_cv_lib_crypto_X509_digest+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for X509_digest in -lcrypto" >&5 +printf %s "checking for X509_digest in -lcrypto... " >&6; } +if test ${ac_cv_lib_crypto_X509_digest+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto -lssl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9687,45 +10361,43 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char X509_digest (); int -main () +main (void) { return X509_digest (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_crypto_X509_digest=yes -else +else $as_nop ac_cv_lib_crypto_X509_digest=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_X509_digest" >&5 -$as_echo "$ac_cv_lib_crypto_X509_digest" >&6; } -if test "x$ac_cv_lib_crypto_X509_digest" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBCRYPTO 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypto_X509_digest" >&5 +printf "%s\n" "$ac_cv_lib_crypto_X509_digest" >&6; } +if test "x$ac_cv_lib_crypto_X509_digest" = xyes +then : + printf "%s\n" "#define HAVE_LIBCRYPTO 1" >>confdefs.h LIBS="-lcrypto $LIBS" -else +else $as_nop havessllib="no" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 -$as_echo_n "checking for SSL_accept in -lssl... " >&6; } -if ${ac_cv_lib_ssl_SSL_accept+:} false; then : - $as_echo_n "(cached) " >&6 -else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 +printf %s "checking for SSL_accept in -lssl... " >&6; } +if test ${ac_cv_lib_ssl_SSL_accept+y} +then : + printf %s "(cached) " >&6 +else $as_nop ac_check_lib_save_LIBS=$LIBS LIBS="-lssl -lcrypto $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -9734,69 +10406,77 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif char SSL_accept (); int -main () +main (void) { return SSL_accept (); ; return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO"; then : +if ac_fn_c_try_link "$LINENO" +then : ac_cv_lib_ssl_SSL_accept=yes -else +else $as_nop ac_cv_lib_ssl_SSL_accept=no fi -rm -f core conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_accept" >&6; } -if test "x$ac_cv_lib_ssl_SSL_accept" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSSL 1 -_ACEOF +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_accept" >&5 +printf "%s\n" "$ac_cv_lib_ssl_SSL_accept" >&6; } +if test "x$ac_cv_lib_ssl_SSL_accept" = xyes +then : + printf "%s\n" "#define HAVE_LIBSSL 1" >>confdefs.h LIBS="-lssl $LIBS" -else +else $as_nop havessllib="no" fi - for ac_func in EVP_md5 EVP_sha1 a2i_IPADDRESS + + for ac_func in EVP_sha1 a2i_IPADDRESS do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else +else $as_nop havessllib="no" break fi -done +done fi + ac_fn_c_check_func "$LINENO" "EVP_md5" "ac_cv_func_EVP_md5" +if test "x$ac_cv_func_EVP_md5" = xyes +then : + printf "%s\n" "#define HAVE_EVP_MD5 1" >>confdefs.h + +fi + ac_fn_c_check_func "$LINENO" "OPENSSL_buf2hexstr" "ac_cv_func_OPENSSL_buf2hexstr" -if test "x$ac_cv_func_OPENSSL_buf2hexstr" = xyes; then : +if test "x$ac_cv_func_OPENSSL_buf2hexstr" = xyes +then : -else +else $as_nop ac_fn_c_check_func "$LINENO" "hex_to_string" "ac_cv_func_hex_to_string" -if test "x$ac_cv_func_hex_to_string" = xyes; then : +if test "x$ac_cv_func_hex_to_string" = xyes +then : -$as_echo "#define OPENSSL_buf2hexstr hex_to_string" >>confdefs.h +printf "%s\n" "#define OPENSSL_buf2hexstr hex_to_string" >>confdefs.h -else +else $as_nop havessllib="no" break @@ -9807,16 +10487,18 @@ fi fi ac_fn_c_check_func "$LINENO" "OPENSSL_hexstr2buf" "ac_cv_func_OPENSSL_hexstr2buf" -if test "x$ac_cv_func_OPENSSL_hexstr2buf" = xyes; then : +if test "x$ac_cv_func_OPENSSL_hexstr2buf" = xyes +then : -else +else $as_nop ac_fn_c_check_func "$LINENO" "string_to_hex" "ac_cv_func_string_to_hex" -if test "x$ac_cv_func_string_to_hex" = xyes; then : +if test "x$ac_cv_func_string_to_hex" = xyes +then : -$as_echo "#define OPENSSL_hexstr2buf string_to_hex" >>confdefs.h +printf "%s\n" "#define OPENSSL_hexstr2buf string_to_hex" >>confdefs.h -else +else $as_nop havessllib="no" break @@ -9828,66 +10510,64 @@ fi if test "$enable_tls" = "yes"; then if test "$havesslinc" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL headers." >&5 -$as_echo "$as_me: WARNING: Cannot find OpenSSL headers." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&5 -$as_echo "$as_me: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL headers." >&5 +printf "%s\n" "$as_me: WARNING: Cannot find OpenSSL headers." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&5 +printf "%s\n" "$as_me: WARNING: Please specify the path to the openssl include dir using --with-sslinc=path" >&2;} fi if test "$havessllib" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL libraries." >&5 -$as_echo "$as_me: WARNING: Cannot find OpenSSL libraries." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&5 -$as_echo "$as_me: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find OpenSSL libraries." >&5 +printf "%s\n" "$as_me: WARNING: Cannot find OpenSSL libraries." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&5 +printf "%s\n" "$as_me: WARNING: Please specify the path to libssl and libcrypto using --with-ssllib=path" >&2;} fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5 -$as_echo_n "checking for OpenSSL... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5 +printf %s "checking for OpenSSL... " >&6; } if test "$havesslinc" = "no" || test "$havessllib" = "no"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no (make sure you have version 0.9.8 or higher installed)" >&5 -$as_echo "no (make sure you have version 0.9.8 or higher installed)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no (make sure you have version 0.9.8 or higher installed)" >&5 +printf "%s\n" "no (make sure you have version 0.9.8 or higher installed)" >&6; } LIBS="$save_LIBS" else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } if test "$EGG_CYGWIN" = "yes"; then ac_fn_c_check_type "$LINENO" "__int64" "ac_cv_type___int64" "$ac_includes_default" -if test "x$ac_cv_type___int64" = xyes; then : +if test "x$ac_cv_type___int64" = xyes +then : -else +else $as_nop -$as_echo "#define __int64 long long" >>confdefs.h +printf "%s\n" "#define __int64 long long" >>confdefs.h fi fi -$as_echo "#define TLS 1" >>confdefs.h +printf "%s\n" "#define TLS 1" >>confdefs.h ac_fn_c_check_func "$LINENO" "ASN1_STRING_get0_data" "ac_cv_func_ASN1_STRING_get0_data" -if test "x$ac_cv_func_ASN1_STRING_get0_data" = xyes; then : +if test "x$ac_cv_func_ASN1_STRING_get0_data" = xyes +then : -$as_echo "#define egg_ASN1_string_data ASN1_STRING_get0_data" >>confdefs.h +printf "%s\n" "#define egg_ASN1_string_data ASN1_STRING_get0_data" >>confdefs.h -else +else $as_nop -$as_echo "#define egg_ASN1_string_data ASN1_STRING_data" >>confdefs.h +printf "%s\n" "#define egg_ASN1_string_data ASN1_STRING_data" >>confdefs.h fi - for ac_func in EVP_PKEY_get1_EC_KEY -do : - ac_fn_c_check_func "$LINENO" "EVP_PKEY_get1_EC_KEY" "ac_cv_func_EVP_PKEY_get1_EC_KEY" -if test "x$ac_cv_func_EVP_PKEY_get1_EC_KEY" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_EVP_PKEY_GET1_EC_KEY 1 -_ACEOF + ac_fn_c_check_func "$LINENO" "EVP_PKEY_get1_EC_KEY" "ac_cv_func_EVP_PKEY_get1_EC_KEY" +if test "x$ac_cv_func_EVP_PKEY_get1_EC_KEY" = xyes +then : + printf "%s\n" "#define HAVE_EVP_PKEY_GET1_EC_KEY 1" >>confdefs.h fi -done tls_enabled="yes" @@ -9895,36 +10575,36 @@ done save_CPP="$CPP" CC="$CC $sslinc" CPP="$CPP $sslinc" - for ac_header in openssl/md5.h + for ac_header in openssl/md5.h do : - ac_fn_c_check_header_mongrel "$LINENO" "openssl/md5.h" "ac_cv_header_openssl_md5_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_md5_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OPENSSL_MD5_H 1 -_ACEOF + ac_fn_c_check_header_compile "$LINENO" "openssl/md5.h" "ac_cv_header_openssl_md5_h" "$ac_includes_default" +if test "x$ac_cv_header_openssl_md5_h" = xyes +then : + printf "%s\n" "#define HAVE_OPENSSL_MD5_H 1" >>confdefs.h - for ac_func in MD5_Init MD5_Update MD5_Final + + for ac_func in MD5_Init MD5_Update MD5_Final do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : +if eval test \"x\$"$as_ac_var"\" = x"yes" +then : cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else +else $as_nop havesslmd5="no" fi -done +done fi done - if test "$havesslmd5" != "no"; then -$as_echo "#define HAVE_OPENSSL_MD5 1" >>confdefs.h +printf "%s\n" "#define HAVE_OPENSSL_MD5 1" >>confdefs.h fi CC="$save_CC" @@ -9937,9 +10617,10 @@ $as_echo "#define HAVE_OPENSSL_MD5 1" >>confdefs.h # Threaded DNS core # Check whether --enable-tdns was given. -if test "${enable_tdns+set}" = set; then : +if test ${enable_tdns+y} +then : enableval=$enable_tdns; tdns_enabled="$enableval" -else +else $as_nop tdns_enabled="yes" fi @@ -9948,7 +10629,7 @@ fi else if test "$tdns_enabled" = "yes"; then -$as_echo "#define EGG_TDNS 1" >>confdefs.h +printf "%s\n" "#define EGG_TDNS 1" >>confdefs.h fi fi @@ -9962,9 +10643,7 @@ $as_echo "#define EGG_TDNS 1" >>confdefs.h egg_version_num=`echo $EGGVERSION | $AWK 'BEGIN {FS = "."} {printf("%d%02d%02d", $1, $2, $3)}'` -cat >>confdefs.h <<_ACEOF -#define EGG_VERSION $egg_version_num -_ACEOF +printf "%s\n" "#define EGG_VERSION $egg_version_num" >>confdefs.h @@ -9991,11 +10670,12 @@ _ACEOF -if test "$cross_compiling" = "yes"; then : +if test "$cross_compiling" = "yes" +then : EGG_CROSS_COMPILING=yes -else +else $as_nop EGG_CROSS_COMPILING=no @@ -10033,8 +10713,8 @@ _ACEOF case $ac_val in #( *${as_nl}*) case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( @@ -10064,15 +10744,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; /^ac_cv_env_/b end t clear :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else @@ -10086,8 +10766,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;} fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache @@ -10104,7 +10784,7 @@ U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" @@ -10121,8 +10801,8 @@ LTLIBOBJS=$ac_ltlibobjs ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL @@ -10145,14 +10825,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -10162,46 +10844,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -10210,13 +10892,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -10225,8 +10900,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -10238,30 +10917,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] @@ -10274,13 +10933,14 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -10307,18 +10967,20 @@ as_fn_unset () { eval $1=; unset $1;} } as_unset=as_fn_unset + # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -10330,12 +10992,13 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` @@ -10366,7 +11029,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -10388,6 +11051,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -10401,6 +11068,12 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -10442,7 +11115,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -10451,7 +11124,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -10513,8 +11186,8 @@ 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 Eggdrop $as_me 1.9.4, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by Eggdrop $as_me 1.9.5, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -10576,14 +11249,16 @@ $config_commands Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Eggdrop config.status 1.9.4 -configured by $0, generated by GNU Autoconf 2.69, +Eggdrop config.status 1.9.5 +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2012 Free Software Foundation, Inc. +Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -10622,15 +11297,15 @@ do -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; + printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; + printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" @@ -10638,7 +11313,7 @@ do --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; @@ -10647,7 +11322,7 @@ do as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; + printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; @@ -10675,7 +11350,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" @@ -10689,7 +11364,7 @@ exec 5>>config.log sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX - $as_echo "$ac_log" + printf "%s\n" "$ac_log" } >&5 _ACEOF @@ -10701,7 +11376,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 PACKAGE="$PACKAGE" VERSION="$VERSION" ac_stdint_h="$ac_stdint_h" -_ac_stdint_h=`$as_echo "_$PACKAGE-$ac_stdint_h" | $as_tr_cpp` +_ac_stdint_h=`printf "%s\n" "_$PACKAGE-$ac_stdint_h" | $as_tr_cpp` ac_cv_stdint_message="$ac_cv_stdint_message" ac_cv_header_stdint_t="$ac_cv_header_stdint_t" ac_cv_header_stdint_x="$ac_cv_header_stdint_x" @@ -10749,9 +11424,9 @@ done # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands + test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files + test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers + test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree @@ -11087,7 +11762,7 @@ do esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done @@ -11095,17 +11770,17 @@ do # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | + ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac @@ -11122,7 +11797,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | +printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -11146,9 +11821,9 @@ $as_echo X"$ac_file" | case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; @@ -11205,8 +11880,8 @@ ac_sed_dataroot=' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' @@ -11249,9 +11924,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" @@ -11267,35 +11942,35 @@ which seems to be undefined. Please make sure it is defined" >&2;} # if test x"$ac_file" != x-; then { - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else - $as_echo "/* $configure_input */" \ + printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} + :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +printf "%s\n" "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "$ac_stdint_h":C) -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_stdint_h : $_ac_stdint_h" >&5 -$as_echo "$as_me: creating $ac_stdint_h : $_ac_stdint_h" >&6;} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_stdint_h : $_ac_stdint_h" >&5 +printf "%s\n" "$as_me: creating $ac_stdint_h : $_ac_stdint_h" >&6;} ac_stdint=$tmp/_stdint.h echo "#ifndef" $_ac_stdint_h >$ac_stdint @@ -11726,15 +12401,15 @@ typedef long intptr_t; STDINT_EOF fi if cmp -s $ac_stdint_h $ac_stdint 2>/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_stdint_h is unchanged" >&5 -$as_echo "$as_me: $ac_stdint_h is unchanged" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_stdint_h is unchanged" >&5 +printf "%s\n" "$as_me: $ac_stdint_h is unchanged" >&6;} else ac_dir=`$as_dirname -- "$ac_stdint_h" || $as_expr X"$ac_stdint_h" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_stdint_h" : 'X\(//\)[^/]' \| \ X"$ac_stdint_h" : 'X\(//\)$' \| \ X"$ac_stdint_h" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_stdint_h" | +printf "%s\n" X"$ac_stdint_h" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -11815,26 +12490,26 @@ if test "$no_create" != yes; then $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi # Display configure end message -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&5 -$as_echo "Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: IPv6 Support: $ipv6_enabled" >&5 -$as_echo "IPv6 Support: $ipv6_enabled" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&5 +printf "%s\n" "Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: IPv6 Support: $ipv6_enabled" >&5 +printf "%s\n" "IPv6 Support: $ipv6_enabled" >&6; } ADD="" if test "x$TCL_THREADS" = "x1"; then ADD=" (threaded)" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Tcl version: $TCL_PATCHLEVEL$ADD" >&5 -$as_echo "Tcl version: $TCL_PATCHLEVEL$ADD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Tcl version: $TCL_PATCHLEVEL$ADD" >&5 +printf "%s\n" "Tcl version: $TCL_PATCHLEVEL$ADD" >&6; } ADD="" if test "x$tls_enabled" = "xyes"; then @@ -11860,79 +12535,80 @@ EOF ADD=" ($tls_version)" fi fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: SSL/TLS Support: $tls_enabled$ADD" >&5 -$as_echo "SSL/TLS Support: $tls_enabled$ADD" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Threaded DNS core: $tdns_enabled" >&5 -$as_echo "Threaded DNS core: $tdns_enabled" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: SSL/TLS Support: $tls_enabled$ADD" >&5 +printf "%s\n" "SSL/TLS Support: $tls_enabled$ADD" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Threaded DNS core: $tdns_enabled" >&5 +printf "%s\n" "Threaded DNS core: $tdns_enabled" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } if test "$UNKNOWN_OS" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: WARNING:" >&5 -$as_echo "WARNING:" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Unknown Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&5 -$as_echo " Unknown Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Module support has been disabled for this build." >&5 -$as_echo " Module support has been disabled for this build." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Please let us know what type of system this is by e-mailing" >&5 -$as_echo " Please let us know what type of system this is by e-mailing" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: bugs@eggheads.org. The output of uname -a, and some other basic" >&5 -$as_echo " bugs@eggheads.org. The output of uname -a, and some other basic" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: information about the OS should be included." >&5 -$as_echo " information about the OS should be included." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: WARNING:" >&5 +printf "%s\n" "WARNING:" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Unknown Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&5 +printf "%s\n" " Unknown Operating System: $egg_cv_var_system_type $egg_cv_var_system_release" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Module support has been disabled for this build." >&5 +printf "%s\n" " Module support has been disabled for this build." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Please let us know what type of system this is by e-mailing" >&5 +printf "%s\n" " Please let us know what type of system this is by e-mailing" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: bugs@eggheads.org. The output of uname -a, and some other basic" >&5 +printf "%s\n" " bugs@eggheads.org. The output of uname -a, and some other basic" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: information about the OS should be included." >&5 +printf "%s\n" " information about the OS should be included." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } else if test "$WEIRD_OS" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: WARNING:" >&5 -$as_echo "WARNING:" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: The operating system you are using has not yet had a great" >&5 -$as_echo " The operating system you are using has not yet had a great" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: deal of testing with Eggdrop. For this reason, this compile" >&5 -$as_echo " deal of testing with Eggdrop. For this reason, this compile" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: will default to \"make static\"." >&5 -$as_echo " will default to \"make static\"." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: To enable module support, type \"make eggdrop\" instead of just" >&5 -$as_echo " To enable module support, type \"make eggdrop\" instead of just" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"make\" after you run \"make config\" (or \"make iconfig\")." >&5 -$as_echo " \"make\" after you run \"make config\" (or \"make iconfig\")." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: As we have not done a sufficient amount of testing on this" >&5 -$as_echo " As we have not done a sufficient amount of testing on this" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: OS, your feedback is greatly appreciated. Please let us know" >&5 -$as_echo " OS, your feedback is greatly appreciated. Please let us know" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: at bugs@eggheads.org if there are any problems compiling with" >&5 -$as_echo " at bugs@eggheads.org if there are any problems compiling with" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: module support, or if you got it to work :)" >&5 -$as_echo " module support, or if you got it to work :)" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: WARNING:" >&5 +printf "%s\n" "WARNING:" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: The operating system you are using has not yet had a great" >&5 +printf "%s\n" " The operating system you are using has not yet had a great" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: deal of testing with Eggdrop. For this reason, this compile" >&5 +printf "%s\n" " deal of testing with Eggdrop. For this reason, this compile" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: will default to \"make static\"." >&5 +printf "%s\n" " will default to \"make static\"." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: To enable module support, type \"make eggdrop\" instead of just" >&5 +printf "%s\n" " To enable module support, type \"make eggdrop\" instead of just" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: \"make\" after you run \"make config\" (or \"make iconfig\")." >&5 +printf "%s\n" " \"make\" after you run \"make config\" (or \"make iconfig\")." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: As we have not done a sufficient amount of testing on this" >&5 +printf "%s\n" " As we have not done a sufficient amount of testing on this" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: OS, your feedback is greatly appreciated. Please let us know" >&5 +printf "%s\n" " OS, your feedback is greatly appreciated. Please let us know" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: at bugs@eggheads.org if there are any problems compiling with" >&5 +printf "%s\n" " at bugs@eggheads.org if there are any problems compiling with" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: module support, or if you got it to work :)" >&5 +printf "%s\n" " module support, or if you got it to work :)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: If you experience any problems compiling Eggdrop, please read the" >&5 -$as_echo "If you experience any problems compiling Eggdrop, please read the" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: compile guide, found in doc/COMPILE-GUIDE." >&5 -$as_echo "compile guide, found in doc/COMPILE-GUIDE." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: If you experience any problems compiling Eggdrop, please read the" >&5 +printf "%s\n" "If you experience any problems compiling Eggdrop, please read the" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: compile guide, found in doc/COMPILE-GUIDE." >&5 +printf "%s\n" "compile guide, found in doc/COMPILE-GUIDE." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Type 'make config' to configure the modules, or type 'make iconfig'" >&5 -$as_echo "Type 'make config' to configure the modules, or type 'make iconfig'" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: to interactively choose which modules to compile." >&5 -$as_echo "to interactively choose which modules to compile." >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 -$as_echo "" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Type 'make config' to configure the modules, or type 'make iconfig'" >&5 +printf "%s\n" "Type 'make config' to configure the modules, or type 'make iconfig'" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: to interactively choose which modules to compile." >&5 +printf "%s\n" "to interactively choose which modules to compile." >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 +printf "%s\n" "" >&6; } + diff --git a/configure.ac b/configure.ac index f6c66bbae..6243537e6 100644 --- a/configure.ac +++ b/configure.ac @@ -1,8 +1,8 @@ dnl configure.ac: this file is processed by autoconf to produce ./configure. AC_PREREQ(2.61) -AC_INIT([Eggdrop],[1.9.4],[bugs@eggheads.org]) -AC_COPYRIGHT([Copyright (C) 1999 - 2022 Eggheads Development Team]) +AC_INIT([Eggdrop],[1.9.5],[bugs@eggheads.org]) +AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) AC_LANG([C]) AC_REVISION([m4_esyscmd([misc/getcommit])]) AC_CONFIG_SRCDIR(src/eggdrop.h) @@ -14,7 +14,7 @@ AC_PRESERVE_HELP_ORDER dnl config.h stuff AH_TOP([/* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2022 Eggheads Development Team + * Copyright (C) 1999 - 2023 Eggheads Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -113,7 +113,7 @@ AX_TYPE_SOCKLEN_T AX_CREATE_STDINT_H([eggint.h]) # Checks for functions and their arguments. -AC_CHECK_FUNCS([dprintf explicit_bzero explicit_memset getrandom inet_aton isascii memset_s random rand lrand48 snprintf strlcpy vsnprintf]) +AC_CHECK_FUNCS([dprintf explicit_bzero memset_explicit explicit_memset getrandom inet_aton isascii memset_s random rand lrand48 snprintf strlcpy vsnprintf]) AC_FUNC_SELECT_ARGTYPES EGG_FUNC_B64_NTOP AC_FUNC_MMAP @@ -122,7 +122,7 @@ AC_FUNC_MMAP # Tcl version to recommend if no Tcl is found, and the site where it can be # found for download. tclrecommendver="8.6.X" -tclrecommendsite="ftp://ftp.tcl.tk/pub/tcl/tcl8_6/" +tclrecommendsite="https://sourceforge.net/projects/tcl/files/Tcl/" # Tcl header filenames. tclheadernames="tcl.h" @@ -136,7 +136,6 @@ EGG_TCL_WITH_TCLLIB EGG_TCL_WITH_TCLINC EGG_TCL_TCLCONFIG EGG_TCL_CHECK_VERSION -EGG_TCL_CHECK_NOTIFIER_INIT EGG_TCL_LUSH diff --git a/doc/ABOUT b/doc/ABOUT index 30fb3e7ff..dd7301edd 100644 --- a/doc/ABOUT +++ b/doc/ABOUT @@ -55,4 +55,4 @@ About Eggdrop - Tcl -- Eggdrop cannot compile without Tcl installed on your shell. - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/ACCOUNTS b/doc/ACCOUNTS new file mode 100644 index 000000000..aecd84ad5 --- /dev/null +++ b/doc/ACCOUNTS @@ -0,0 +1,157 @@ +Account tracking in Eggdrop + +In Eggdrop 1.9.3, Eggdrop added the ability to associate nicknames with +the service accounts they are logged into. It is IMPORTANT to note that +Eggdrop's ability to do this is dependent on an IRC server's +implementation of three features- the IRCv3 extended-join capability, +the IRCv3 account-notify capability, and WHOX support. All three of +these features must be supported by the server and, in the case of +extended-join and account-notify, requested by Eggdrop in order for +Eggdrop to maintain "perfect" association between nicknames and account +statuses. + +REQUIRED SERVER CAPABILITIES + +You're going to see this repeated a lot- the IRC server must support +three features in order for Eggdrop to accurately associate accounts +with nicknames. These three features allow Eggdrop to always know the +current association between an account and a nickname by getting account +statuses of users already on a channel when it joins, new users joining +a channel, and users who authenticate while on a channel. + +extended-join + +extended-join is an IRCv3-defined capability that adds the account name +of a user to the JOIN message sent by the IRC server, alerting clients +that a new member has joined a channel. Enabling this capability allows +Eggdrop to immediately determine the account name associated with a user +joining a channel + +account-notify + +account-notify is an IRCv3-defined capability that sends a message to a +channel when a member of the channel either authenticates or +deauthenticates from their account. Enabling this capability allows +Eggdrop to immediately associate an account to a channel member when +they authenticate or deauthenticate. + +WHOX + +'WHOX `_ is a server feature +that allows a client to request custom fields to be returned in a WHO +response. If a server supports this capability, Eggdrop sends a WHOX +query to the server when it joins a channel, allowing it to immediately +determine accounts associated with channel members when Eggdrop joins a +channel. + +ENABLING EGGDROP ACCOUNT TRACKING + +By default, the Eggdrop config file will attempt to enable all the +capabilities required for account tracking. There are two settings to +pay attention to : + + # To request the account-notify feature via CAP, set this to 1 + set account-notify 1 + + # To request the extended-join feature via CAP, set this to 1 + set extended-join 1 + +The ability of a server to support WHOX queries is determined via a +server's ISUPPORT (005) reply. If a server supports WHOX queries, +Eggdrop will automatically enable this feature. + +CHECKING ACCOUNT-TRACKING STATUS + +While Eggdrop is running, join the partyline and type .status. If +account-tracking is enabled (both the server supports and Eggdrop has +requested), you'll see this line : + + Loaded module information: + #eggdroptest : (not on channel) + Channels: #eggdroptest (trying) + Account tracking: Enabled <--- This line + Online as: BeerBot (BeerBot) + +Otherwise, the prompt will tell you which required capability is +missing/not enabled : + + Loaded module information: + #eggdroptest : 2 members, enforcing "+tn" (greet) + Channels: #eggdroptest (need ops) + Account tracking: Best-effort (Missing capabilities: extended-join, see .status all for details) <---- This line + Online as: Eggdrop (Eggdrop) + +DETERMINING IF A SERVER SUPPORTS ACCOUNT CAPABILITIES + +A server announces the capabilities it supports via a CAP request. If +you have Tcl enabled on the partyline (or via a raw message from a +client), you can send .tcl cap ls and see if the extended-join and +account-notify capabilities are supported by the server. If they are not +listed, the server does not support it. + +A server announces if it supports WHOX via its ISUPPORT (005) +announcement. If you have Tcl enabled on the partyline, you can send +.tcl issupport isset WHOX and if it returns '1', WHOX is supported by +the server. + +BEST-EFFORT ACCOUNT TRACKING + +If a server only supports some, but not all, of the required +capabilities, Eggdrop will switch to 'best effort' account tracking. +This means Eggdrop will update account statuses whenever it sees account +information, but in this mode Eggdrop cannot guarantee that all account +associations are up to date. + +If a server does not support extended-join, Eggdrop will not be able to +determine the account associated with a user when they join. Eggdrop can +update this information by sending a WHOX to the server. + +If a server does not support account-notify, Eggdrop will not be able to +determine the account associated with a user if they +authenticate/deauthenticate from their account after joining a channel. +Eggdrop can update this information by sending a WHOX to the server. + +If a server does not support WHOX, Eggdrop will not be able to determine +the accounts associated with users already on a channel before Eggdrop +joined. There is no reliable way to update this information. + +One workaround to significantly increase the accuracy of account +tracking for scripts in a 'best effort' scenario would be to issue a +WHOX query (assuming the server supports it), wait for the reply from +the server, and then query for the account information. + +account-tag + +One supplementary capability that can assist a best-effort account +tracking scenario is the IRCv3-defined account-tag capability. The +account-tag capability attaches a tag with the account name associated +with the user sending a command. Enabling this capability allows Eggdrop +to update its account tracking every time a user talks in channel, sets +a mode, sends a kick, etc. While still not able to offer the same level +of accuracy as enabling the "main three" account tracking features, it +can increase the overall accuracy of the account list. Additionally, +binds that react to user activity (pub, kick, mode, etc) containing +account-tag will update the internal account list prior to executing the +associated callback, so looking up the account name in the callback can +be considered accurate. + +USING ACCOUNTS WITH TCL SCRIPTS + +The Eggdrop Tcl ACCOUNT bind is triggered whenever an existing account +record stored by Eggdrop is modified, such as a user de/authenticating +to their account while in a channel, or information such as an +account-tag being seen that updates an existing user. However, the +ACCOUNT bind will NOT be triggered for the creation of a new user +record, such as a user joining a channel. The bind is triggered for +every channel the user is seen on- this means if a user is present with +Eggdrop on four channels, the bind will be executed four times, each +time with a different channel variable being passed to the associated +Tcl procedure. Additionally, in a best-effort account tracking +situation, Eggdrop will update the account associated with a user on all +channels, not just the channel the event is seen on (and thus resulting +in a bind trigger for each channel the user is on). + +In order to trigger Tcl script events to cover all instances where a +user logs in, you need to pair an ACCOUNT bind with a JOIN bind. This +will allow you to execute account-based events when a user joins as well +as if they authenticate after joining. diff --git a/doc/BANS b/doc/BANS index 747f95ffa..0eb2ddfdb 100644 --- a/doc/BANS +++ b/doc/BANS @@ -75,4 +75,4 @@ Bans, Invites, and Exempts file) or until the channel goes -i again, whichever happens last. - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BOTNET b/doc/BOTNET index d3e700766..a0bef1c93 100644 --- a/doc/BOTNET +++ b/doc/BOTNET @@ -1,4 +1,4 @@ -Botnet Sharing and Linking Last revised: Nov 09, 2017 +Botnet Sharing and Linking Botnet Sharing and Linking @@ -171,6 +171,16 @@ At this point, you can link the two bots by typing '.link BotA' on BotB passwords which are not stored encrypted in the userfile. Note that you can link as many bots as you wish to your botnet. +Secure (TLS) Links + +Since Eggdrop 1.8.0, the ability to encrypt bot links using TLS is +possible. On the hub bot you would prefix the port given in the listen +command with a +, and when you add the hub bot to the leaf, you would +prefix the port used in the .+bot command with a +. In other words, you +would set listen +5555 in the hub config and use .+bot hubbot 1.2.3.4 ++5555 on the leaf bot. These settings are explained more thoroughly in +the TLS botnet documentation. + USING BOTFLAGS Botflags are needed to assign special functions and tasks to your bots. @@ -338,4 +348,17 @@ MAKING BOTS SHARE USER RECORDS |-+beldin `-+Lameshare -Copyright (C) 1999 - 2022 Eggheads Development Team +USING CERTIFICATES TO AUTHENTICATE EGGDROPS + +Eggdrops can use certificates to authenticate when linking to each other +instead of a password. First, you must ensure you have set the +appropriate certificates in the ssl-privatekey and ssl-certificate +settings in the config file, and then enable the ssl-cert-auth setting. +Next, add the certificate on the partyline by using .fprint + to add the +fingerprint for the certificate currently in use, or .fprint to manually add a fingerprint. Once the config file +settings are set 0and fingerprints are added on the partyline, Eggdrops +will attempt to use their certificates instead of passwords for +authentication. + +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BUG-REPORT b/doc/BUG-REPORT index f1ceda1e8..f60096f40 100644 --- a/doc/BUG-REPORT +++ b/doc/BUG-REPORT @@ -26,7 +26,7 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 1) INFORMATION ABOUT YOUR EGGDROP 1.1) Eggdrop version: - 1.8.__ + 1.9._ 1.2) Make type: ( ) dynamic @@ -42,17 +42,11 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 2) INFORMATION ABOUT TCL 2.1) Tcl library version: - ( ) 8.3 - ( ) 8.4 - ( ) 8.5 - ( ) 8.6 + ( ) 8.5._ + ( ) 8.6._ ( ) Other - Which? ____ -2.2) Tcl library patchlevel: ___ - eg; p1, p2, etc for Tcl versions up to 8.0p2 - or the 3rd part of the version number for 8.0.3 and newer - -2.3) Tcl scripts used: +2.2) Tcl scripts used: [ ] alltools [ ] sentinel [ ] getops @@ -81,6 +75,7 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. ( ) SINIX ( ) Solaris/SunOS/OpenIndiana ( ) Ultrix + ( ) Windows Subsystem for Linux (WSL) ( ) Other - Which? _____________ 3.2) OS Version/Release: _____________ @@ -110,8 +105,10 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. useful if you could paste gdb's output during the following steps: First call gdb $ gdb eggdrop -c core + (systemd users could try coredumpctl) and then enter 'bt' on gdb's command line: (gdb) bt + (even more information could be obtained with 'bt full') Keep your core file for at least one week, so that the dev team can ask for further information if needed. However, don't send us the core file unless we ask for it. diff --git a/doc/COMPILE-GUIDE b/doc/COMPILE-GUIDE index 54e98d32f..7e4322866 100644 --- a/doc/COMPILE-GUIDE +++ b/doc/COMPILE-GUIDE @@ -1,5 +1,5 @@ Eggdrop Compile Guide and FAQ -Last revised: June 9, 2020 +Last revised: November 17, 2022 _____________________________________________________________________ Eggdrop Compile Guide and FAQ @@ -20,7 +20,7 @@ Last revised: June 9, 2020 A. Standard compile process (Linux, FreeBSD, NetBSD, OpenBSD, etc) B. HP-UX B.11.* C. Ultrix - D. Mac OS X + D. macOS (previously OS X and originally Mac OS X) E. AIX F. IRIX G. Solaris / SunOS @@ -187,7 +187,7 @@ Last revised: June 9, 2020 gmake install DEST=/home/user/otherdir - D. Mac OS X + D. macOS Follow the standard compile process in Section A. To compile dynamically (with module support), use 'make eggdrop' instead of 'make'. @@ -210,7 +210,7 @@ Last revised: June 9, 2020 If you notice a module that requires these changes, it would probably be a good idea to let the module's developer know, so it can be fixed. - Note that on Mac OS X, the DYLD_LIBRARY_PATH environment variable should + Note that on macOS, the DYLD_LIBRARY_PATH environment variable should be used instead of LD_LIBRARY_PATH. Install OpenSSL using homebrew: @@ -221,7 +221,7 @@ Last revised: June 9, 2020 Tell configure where to find tcl and openssl: - ./configure --with-tcl=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh --with-sslinc=/usr/local/opt/openssl/include --with-ssllib=/usr/local/opt/openssl/lib + ./configure --with-tcl=/System/Volumes/Data/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh -with-sslinc=/usr/local/Cellar/openssl@3/3.0.7/include --with-ssllib=/usr/local/Cellar/openssl@3/3.0.7/lib E. AIX Follow the standard compile process in Section A. To compile dynamically @@ -581,4 +581,4 @@ Last revised: June 9, 2020 _____________________________________________________________________ Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2021 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/CONTENTS b/doc/CONTENTS index ba059a05e..a56d03cb4 100644 --- a/doc/CONTENTS +++ b/doc/CONTENTS @@ -72,4 +72,4 @@ Last revised: Nov 01, 2010 notes in reverse chronological order. _____________________________________________________________________ - Copyright (C) 2003 - 2021 Eggheads Development Team + Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/doc/Changes1.0 b/doc/Changes1.0 index 4de0765b9..516ee5adb 100644 --- a/doc/Changes1.0 +++ b/doc/Changes1.0 @@ -1984,7 +1984,7 @@ Eggdrop Changes (since version 0.9) - Each channel keeps its own banlist now for temporary bans - - Changed various Tcl ban commands to accomidate the concept of having a + - Changed various Tcl ban commands to accommodate the concept of having a global banlist + separate banlist for each channel - Channel ban lists are sent by channel name to other sharebots @@ -2365,7 +2365,7 @@ Eggdrop Changes (since version 0.9) - Each channel keeps its own banlist now for temporary bans - - Changed various Tcl ban commands to accomidate the concept of having a + - Changed various Tcl ban commands to accommodate the concept of having a global banlist + separate banlist for each channel - Channel ban lists are sent by channel name to other sharebots diff --git a/doc/Changes1.8 b/doc/Changes1.8 index e66daa364..f472a38e0 100644 --- a/doc/Changes1.8 +++ b/doc/Changes1.8 @@ -135,7 +135,7 @@ Eggdrop v1.8.4rc1 (2018-12-12): 2018-10-26 * Run autotools * Allow -HQ to be added when no userfile is present. Closes #727 [Found by: Geo / Patch by: Cizzle] - 2018-10-24 * Fix forgoten #include . Fixes #732 + 2018-10-24 * Fix forgotten #include . Fixes #732 [Patch by: michaelortmann] * Fix nwcc compiler error. Fixes #729 [Patch by: michaelortmann] @@ -547,7 +547,7 @@ Eggdrop v1.8.2rc1 (2017-07-07): 2017-03-20 * Restore NEWS-1.8.0 as UPGRADE-1.8. * Update releaseprep to correct version.h on stable release 2017-03-18 * Add compatibility autoconf macro for stdint.h - * Update gitingore file. + * Update gitignore file. 2017-03-15 * Make depend. Eggdrop v1.8.1 (2017-03-27): diff --git a/doc/Changes1.9 b/doc/Changes1.9 index a8c1c3762..2f8fb420b 100644 --- a/doc/Changes1.9 +++ b/doc/Changes1.9 @@ -327,7 +327,7 @@ Eggdrop v1.9.0rc1: * Split tags into key/value pairs * Add tag-related definitions * Implement dict-based msg-tags - * Update buffer sizes to accomodate larger msgtag strings + * Update buffer sizes to accommodate larger msgtag strings * Prevent double-tapping internal binds * Update tagmsg to accept dicts 2020-01-29 * Fix eggdrop.conf typos diff --git a/doc/FIRST-SCRIPT b/doc/FIRST-SCRIPT index c98d00674..919531af7 100644 --- a/doc/FIRST-SCRIPT +++ b/doc/FIRST-SCRIPT @@ -225,4 +225,4 @@ of salt!)
-Copyright (C) 2003 - 2022 Eggheads Development Team +Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/doc/IPV6 b/doc/IPV6 index b088b8a8f..b181d3b14 100644 --- a/doc/IPV6 +++ b/doc/IPV6 @@ -77,4 +77,4 @@ Other affected variables: nat-ip works with IPv4 as it used to. It has no meaning for IPv6 and is not queried for IPv6 connections. -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/IRCv3 b/doc/IRCv3 index e72536ff9..2199771ee 100644 --- a/doc/IRCv3 +++ b/doc/IRCv3 @@ -54,4 +54,4 @@ The following capabilities are supported by Eggdrop: - setname - +typing -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/MODULES b/doc/MODULES deleted file mode 100644 index ef8f2c019..000000000 --- a/doc/MODULES +++ /dev/null @@ -1,421 +0,0 @@ -Eggdrop Module Information Last revised: Nov 10, 2022 - -Eggdrop Module Information - -The purpose of this document is to show you how to download, install, -create, and submit modules. - -WHAT ARE MODULES? - -Modules are portions of code which are loaded separately to the bot -itself and provide extra services. For example, the filesys module -provides the entire file system. - -WHY USE MODULES? - -Modules allow C coders to add their own enhancements to the bot while -keeping them optional and without increasing the size of the Eggdrop -core. - -HOW TO INSTALL A MODULE - -Please note that these are only basic instructions for compiling and -installing a module. Please read any and all directions included with -the module you wish to install. - - 1. Download and un-tar the Eggdrop source code. - 2. Place the new module in its own directory (in the format of - (modulename).mod) in src/mod. - 3. Run ./configure (from eggdrop1.8.x/). - 4. Type 'make config' or 'make iconfig'. - 5. Type 'make'. - 6. Copy the compiled module file (modulename.so) into your bot's - modules folder. - 7. Add 'loadmodule modulename' to your eggdrop.conf file (do not add - the .so suffix). - 8. Rehash or restart your bot. - -To view your currently loaded modules, type '.module'. - -MODULES INCLUDED WITH EGGDROP - - assoc - - This module provides assoc support, i.e. naming channels on the - botnet. - - blowfish - - Eggdrop can encrypt your userfile, so users can have secure - passwords. Please note that when you change your encryption method - later (i.e. using other modules like a md5 module), you can't use - your current userfile anymore. Eggdrop will not start without an - encryption module. - - channels - - This module provides channel related support for the bot. Without - it, you won't be able to make the bot join a channel or save - channel specific userfile information. - - compress - - This module provides support for file compression. With share module - loaded this allows the bot to transfer compressed user files and, - therefore, save a significant amount of bandwidth. - - console - - This module provides storage of console settings when you exit the - bot or type .store on the partyline. - - ctcp - - This module provides the normal ctcp replies that you'd expect. - Without it loaded, CTCP CHAT will not work. - - dns - - This module provides asynchronous dns support. This will avoid - long periods where the bot just hangs there, waiting for a - hostname to resolve, which will often let it timeout on all other - connections. - - filesys - - This module provides an area within the bot where users can store - and manage files. With this module, the bot is usable as a file - server. - - irc - - This module provides basic IRC support for your bot. You have to - load this if you want your bot to come on IRC. - - notes - - This module provides support for storing of notes for users from - each other. Note sending between currently online users is - supported in the core, this is only for storing the notes for - later retrieval. - - seen - - This module provides very basic seen commands via msg, on channel - or via dcc. This module works only for users in the bot's - userlist. If you are looking for a better and more advanced seen - module, try the gseen module by G'Quann. You can find it at - http://www.kreativrauschen.com/gseen.mod/. - - server - - This module provides the core server support. You have to load - this if you want your bot to come on IRC. Not loading this is - equivalent to the old NO_IRC define. - - share - - This module provides userfile sharing support between two directly - linked bots. - - transfer - - The transfer module provides DCC SEND/GET support and userfile - transfer support for userfile sharing. - - uptime - - This module reports uptime statistics to the uptime contest web - site at http://uptime.eggheads.org. Go look and see what your - uptime is! It takes about 9 hours to show up, so if your bot isn't - listed, try again later. See doc/settings/mod.uptime for more - information, including details on what information is sent to the - uptime server. - - woobie - - This is for demonstrative purposes only. If you are looking for - starting point in writing modules, woobie is the right thing. - -PROGRAMMING MODULES - -WARNING: This section is very likely to be out of date. - -Note: This is for a simple module of 1 source file. If you're doing a -multiple source file module, you shouldn't need to read this anyway. - - 1. Create a src/mod/MODULE.mod directory in your Eggdrop directory - (where MODULE is the module name) and cd to it. - - 2. Copy the file 'Makefile' from src/mod/woobie.mod and replace all - occurrences of 'woobie' with your module name. This should ensure - that your module gets compiled. - - 3. Next, you want to create a file called MODULE.c (MODULE is the - module name again). - - 4. You MUST include the following in your source code: - - #define MODULE_NAME "module-name" - - This should be defined to the same name you will be using when you - load your module. - - #define MAKING_MODULENAME - - MODULENAME is the name of your module (MODULE_NAME), but in all - caps. - - #include "../module.h" - - This provides access to Eggdrop's global function table. Examine - src/mod/module.h closely to find a list of functions available. - - #include any other standard c header files you might need. - - Note that stdio.h, string.h, stdlib.h, and sys/types.h are already - included. - - Function *global; - - This variable provides access to all the Eggdrop functions; without - it, you can't call any Eggdrop functions (the module won't even - load). - -MODULE REQUIREMENTS - -In most modules, all functions/variables (except global and -MODULE_start) should be static. This will drastically reduce the size of -modules on decent systems. - -Throughout this step, MODULE refers to the module name. Note that - - "MODULE_NAME" should literally be "MODULE_NAME". - -MODULE_start - - char *MODULE_start(Function *func_table) - - This function is called when the module is first loaded. There are - several things that need to be done in this function - - global = func_table; - - This allows you to make calls to the global function table. - - module_register(MODULE_NAME, MODULE_table, MAJOR, MINOR); - - This records details about the module for other modules and Eggdrop - itself to access. MAJOR and MINOR are ints, where MAJOR is the - module's major version number and MINOR is a minor version number. - MODULE_table is a function table (see below). - - module_depend(MODULE_NAME, "another-module", MAJOR, MINOR); - - This lets Eggdrop know that your module NEEDS "another-module" of - major version 'MAJOR' and at least minor version 'MINOR' to run, - and hence should try to load it if it's not already loaded. This - will return 1 on success, or 0 if it can't be done (at which stage - you should return an error). - -Any other initialization stuff you desire should also be included in -this function. See below for various things you can do. - -You also will need to return a value. Returning NULL implies the module -loaded successfully. Returning a non-NULL STRING is an error message. -The module (and any other dependent modules) will stop loading and an -error will be returned. - -MODULE_table - - static Function *MODULE_table = { - MODULE_start, - MODULE_close, - MODULE_expmem, - MODULE_report, - any_other_functions, - you_want_to_export - }; - - This is a table of functions which any other module can access. The - first 4 functions are FIXED. You MUST have them; they provide important - module information. - -MODULE_close () - - static char *MODULE_close () - - This is called when the module is unloaded. Apart from tidying any - relevant data (I suggest you be thorough, we don't want any trailing - garbage from modules), you MUST do the following: - - module_undepend(MODULE_NAME); - - This lets Eggdrop know your module no longer depends on any other - modules. - - Return a value. NULL implies success; any non-NULL STRING implies - that the module cannot be unloaded for some reason, and hence the - bot should not unload it (see the blowfish module for an example). - -MODULE_expmem - - static int MODULE_expmem () - - This should tally all memory you allocate/deallocate within the module - (using nmalloc, nfree, etc) in bytes. It's used by memory debugging to - track memory faults, and it is used by .status to total up memory usage. - -MODULE_report - - static void MODULE_report (int idx) - - This should provide a relatively short report of the module's status - (for the module and status commands). - -These functions are available to modules. MANY more available functions -can be found in src/mod/module.h. - -Additional functions - - void *nmalloc(int j); - - This allocates j bytes of memory. - - void nfree(void *a); - - This frees an nmalloc'd block of memory. - - Context; - - Actually a macro -- records the current position in execution (for - debugging). Using Context is no longer recommended, because it uses - too many resources and a core file provides much more information. - - void dprintf(int idx, char *format, ...) - - This acts like a normal printf() function, but it outputs to - log/socket/idx. - - idx is a normal dcc idx, or if < 0 is a sock number. - - Other destinations: - DP_LOG - send to log file - DP_STDOUT - send to stdout - DP_MODE - send via mode queue to the server - DP_SERVER - send via normal queue to the server - DP_HELP - send via help queue to server - - const module_entry *module_find(char *module_name, int major, int minor); - - Searches for a loaded module (matching major, >= minor), and returns - info about it. - - Members of module_entry: - char *name; - module name - int major; - real major version - int minor; - real minor version - Function *funcs; - function table (see above) - - void module_rename(char *old_module_name, char *new_module_name) - - This renames a module frim old_module_name to new_module_name. - - void add_hook(int hook_num, Function *funcs) - void del_hook(int hook_num, Function *funcs) - - These are used for adding or removing hooks to/from Eggdrop code that - are triggered on various events. Valid hooks are: - HOOK_SECONDLY - called every second - HOOK_MINUTELY - called every minute - HOOK_5MINUTELY - called every 5 minutes - HOOK_HOURLY - called every hour (hourly-updates minutes past) - HOOK_DAILY - called when the logfiles are switched - - HOOK_READ_USERFILE - called when the userfile is read - HOOK_USERFILE - called when the userfile is written - HOOK_PRE_REHASH - called just before a rehash - HOOK_REHASH - called just after a rehash - HOOK_IDLE - called whenever the dcc connections have been - idle for a whole second - HOOK_BACKUP - called when a user/channel file backup is done - HOOK_LOADED - called when Eggdrop is first loaded - HOOK_DIE - called when Eggdrop is about to die - - char *module_unload (char *module_name); - char *module_load (char *module_name); - - Tries to load or unload the specified module; returns 0 on success, or - an error message. - - void add_tcl_commands(tcl_cmds *tab); - void rem_tcl_commands(tcl_cmds *tab); - - Provides a quick way to create and remove a table of Tcl commands. The - table is in the form of: - - {char *func_name, Function *function_to_call} - - Use { NULL, NULL } to indicate the end of the list. - - void add_tcl_ints(tcl_ints *); - void rem_tcl_ints(tcl_ints *); - - Provides a quick way to create and remove a table of links from C - int variables to Tcl variables (add_tcl_ints checks to see if the Tcl - variable exists and copies it over the C one). The format of table is: - - {char *variable_name, int *variable, int readonly} - - Use {NULL, NULL, 0} to indicate the end of the list. - - void add_tcl_strings(tcl_strings *); - void rem_tcl_strings(tcl_strings *); - - Provides a quick way to create and remove a table of links from C - string variables to Tcl variables (add_tcl_ints checks to see if the - Tcl variable exists and copies it over the C one). The format of table - is: - - {char *variable_name, char *string, int length, int flags} - - Use {NULL, NULL, 0, 0} to indicate the end of the list. Use 0 for - length if you want a const string. Use STR_DIR for flags if you want a - '/' constantly appended; use STR_PROTECT if you want the variable set - in the config file, but not during normal usage. - - void add_builtins(p_tcl_hash_list table, cmd_t *cc); - void rem_builtins(p_tcl_hash_list table, cmd_t *cc); - - This adds binds to one of Eggdrop's bind tables. The format of the - table is: - - {char *command, char *flags, Function *function, char *displayname} - - Use {NULL, NULL, NULL, NULL} to indicate the end of the list. - - This works EXACTLY like the Tcl 'bind' command. displayname is what Tcl - sees this function's proc name as (in .binds all). - - function is called with exactly the same args as a Tcl binding is with - type conversion taken into account (e.g. idx's are ints). Return values - are much the same as Tcl bindings. Use int 0/1 for those which require - 0/1, or char * for those which require a string (auch as filt). Return - nothing if no return value is required. - - void putlog (int logmode, char *channel, char *format, ...) - - Adds text to a logfile (determined by logmode and channel). This text - will also output to any users' consoles if they have the specified - console mode enabled. - -WHAT TO DO WITH A MODULE? - - If you have written a module and feel that you wish to share it with - the rest of the Eggdrop community, upload it to the incoming directory - on incoming.eggheads.org (/incoming/modules/1.8). Place a nice - descriptive text (modulename.desc) with it, and it'll make its way to - the modules directory on ftp.eggheads.org. Don't forget to mention in - your text file which version Eggdrop the module is written for. - -Copyright (C) 1999 - 2021 Eggheads Development Team diff --git a/doc/PARTYLINE b/doc/PARTYLINE index 4b4a030c1..3d490e611 100644 --- a/doc/PARTYLINE +++ b/doc/PARTYLINE @@ -34,4 +34,4 @@ prefixed with an apostrophe is sent to all users on the local bot only. You can change channels with the ".chat" command or even leave all channels with ".chat off". -Copyright (C) 2002 - 2022 Eggheads Development Team +Copyright (C) 2002 - 2023 Eggheads Development Team diff --git a/doc/PATCH-HOWTO b/doc/PATCH-HOWTO index abfa9c012..411ef0adc 100644 --- a/doc/PATCH-HOWTO +++ b/doc/PATCH-HOWTO @@ -34,4 +34,4 @@ To create a patch via github: 7. Pour yourself a cold one and bask in the warm feeling of contributing to the open source community! Karma++! -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/PBKDF2 b/doc/PBKDF2 index cbb4e5e81..7e60d55c7 100644 --- a/doc/PBKDF2 +++ b/doc/PBKDF2 @@ -138,4 +138,4 @@ where 'PBK method' is the method specified in the configuration file, 'salt' is the value used for the salt, and 'password hash' is the output of the hashing algorithm. -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/doc/TLS b/doc/TLS index d4c9661d3..991217fd4 100644 --- a/doc/TLS +++ b/doc/TLS @@ -202,4 +202,4 @@ verification and authorization. Higher values enable specific exceptions like allowing self-signed or expired certificates. Details are documented in eggdrop.conf. -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/TRICKS b/doc/TRICKS index 157390db8..dfc5dbb6d 100644 --- a/doc/TRICKS +++ b/doc/TRICKS @@ -58,4 +58,4 @@ normal Tcl file. For example, you can set 'userfile' and 'chanfile' to set userfile "$myvar.user" set chanfile "$myvar.chan" -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/USERS b/doc/USERS index de72d3bf6..5e561135f 100644 --- a/doc/USERS +++ b/doc/USERS @@ -97,4 +97,4 @@ global flag applies to all channels. The standard global flags are: user-defined flags (Capital letters A through Z). These are used by scripts, and their uses vary depending on the script that uses them. -Copyright (C) 2002 - 2022 Eggheads Development Team +Copyright (C) 2002 - 2023 Eggheads Development Team diff --git a/doc/Versions b/doc/Versions index 71187084b..61aaf483d 100644 --- a/doc/Versions +++ b/doc/Versions @@ -7,6 +7,8 @@ get in contact via #eggdrop on Libera so it can be added. Version Release date +1.9.5 Mar 11, 2023 +1.9.4 Dec 14, 2022 1.9.3 Aug 10, 2022 1.9.2 Mar 05, 2022 1.9.1 May 31, 2021 diff --git a/doc/core.settings b/doc/core.settings index 236709f7f..28b090666 100644 --- a/doc/core.settings +++ b/doc/core.settings @@ -231,9 +231,7 @@ logfile "logs/logfile" set logfile-suffix ".%d%b%Y" If keep-all-logs is 1, this setting will define the suffix of the logfiles. The default will result in a suffix like "04May2000". "%Y%m%d" will produce the often used - yyyymmdd format. Read the strftime manpages for more options. NOTE: - On systems which don't support strftime, the default format will - always be used. + yyyymmdd format. Read the strftime manpages for more options. CONSOLE SETTINGS @@ -712,4 +710,4 @@ point. source scripts/alltools.tcl source scripts/action.fix.tcl -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css index 9b49ca350..18255e5ae 100644 --- a/doc/html/_static/basic.css +++ b/doc/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -15,6 +15,12 @@ div.clearer { clear: both; } +div.section::after { + display: block; + content: ''; + clear: left; +} + /* -- relbar ---------------------------------------------------------------- */ div.related { @@ -124,7 +130,7 @@ ul.search li a { font-weight: bold; } -ul.search li div.context { +ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -216,7 +222,7 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; + min-width: 360px; max-width: 800px; } @@ -261,19 +267,25 @@ p.rubric { font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -287,30 +299,45 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; - padding: 7px 7px 0 7px; + padding: 7px; background-color: #ffe; width: 40%; float: right; + clear: right; + overflow-x: auto; } p.sidebar-title { font-weight: bold; } +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + /* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, div.topic { border: 1px solid #ccc; - padding: 7px 7px 0 7px; + padding: 7px; margin: 10px 0 10px 0; } @@ -332,10 +359,6 @@ div.admonition dt { font-weight: bold; } -div.admonition dl { - margin-bottom: 0; -} - p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; @@ -346,9 +369,34 @@ div.body p.centered { margin-top: 25px; } +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + /* -- tables ---------------------------------------------------------------- */ table.docutils { + margin-top: 10px; + margin-bottom: 10px; border: 0; border-collapse: collapse; } @@ -358,6 +406,11 @@ table.align-center { margin-right: auto; } +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } @@ -373,10 +426,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -391,22 +440,34 @@ table.citation td { border-bottom: none; } +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -433,10 +494,71 @@ table.field-list td, table.field-list th { /* -- hlist styles ---------------------------------------------------------- */ +table.hlist { + margin: 1em 0; +} + table.hlist td { vertical-align: top; } +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + /* -- other body styles ----------------------------------------------------- */ @@ -460,11 +582,81 @@ ol.upperroman { list-style: upper-roman; } +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + dl { margin-bottom: 15px; } -dd p { +dd > :first-child { margin-top: 0px; } @@ -478,6 +670,11 @@ dd { margin-left: 30px; } +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + dt:target, span.highlighted { background-color: #fbe54e; } @@ -491,14 +688,6 @@ dl.glossary dt { font-size: 1.1em; } -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - .versionmodified { font-style: italic; } @@ -537,6 +726,13 @@ dl.glossary dt { font-style: oblique; } +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + abbr, acronym { border-bottom: dotted 1px; cursor: help; @@ -549,29 +745,69 @@ pre { overflow-y: hidden; /* fixes display issues on Chrome browsers */ } +pre, div[class*="highlight-"] { + clear: both; +} + span.pre { -moz-hyphens: none; -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; } td.linenos pre { - padding: 5px 0px; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { - margin-left: 0.5em; + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; } table.highlighttable td { - padding: 0 0.5em 0 0.5em; + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; } div.code-block-caption { + margin-top: 1em; padding: 2px 5px; font-size: small; } @@ -580,8 +816,14 @@ div.code-block-caption code { background-color: transparent; } -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { @@ -593,21 +835,7 @@ div.code-block-caption span.caption-text { } div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; + margin: 1em 0; } code.xref, a code { @@ -648,8 +876,7 @@ span.eqno { } span.eqno a.headerlink { - position: relative; - left: 0px; + position: absolute; z-index: 1; } diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js index 344db17dd..d06a71d75 100644 --- a/doc/html/_static/doctools.js +++ b/doc/html/_static/doctools.js @@ -2,314 +2,155 @@ * doctools.js * ~~~~~~~~~~~ * - * Sphinx JavaScript utilities for all documentation. + * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - return result; }; -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - /** * Small JavaScript module for the documentation. */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + * helper function to focus on search bar */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * highlight the search words provided in the url in the text + * Initialise the domain index toggle buttons */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, + }; - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } + break; } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); +_ready(Documentation.init); diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index c0721a95a..eb68a3b87 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,10 +1,14 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.9.4', - LANGUAGE: 'None', + VERSION: '1.9.5', + LANGUAGE: 'en', COLLAPSE_INDEX: false, + BUILDER: 'html', FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/doc/html/_static/jquery.js b/doc/html/_static/jquery.js index 7e3291082..624bca829 100644 --- a/doc/html/_static/jquery.js +++ b/doc/html/_static/jquery.js @@ -1,15 +1,13 @@ /*! - * jQuery JavaScript Library v3.3.1-dfsg + * jQuery JavaScript Library v3.6.0 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * - * Copyright JS Foundation and other contributors + * Copyright OpenJS Foundation and other contributors * Released under the MIT license * https://jquery.org/license - * - * Date: 2019-04-19T06:52Z */ ( function( global, factory ) { @@ -43,17 +41,20 @@ // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common // enough that all such attempts are guarded in a try block. - +"use strict"; var arr = []; -var document = window.document; - var getProto = Object.getPrototypeOf; var slice = arr.slice; -var concat = arr.concat; +var flat = arr.flat ? function( array ) { + return arr.flat.call( array ); +} : function( array ) { + return arr.concat.apply( [], array ); +}; + var push = arr.push; @@ -73,12 +74,16 @@ var support = {}; var isFunction = function isFunction( obj ) { - // Support: Chrome <=57, Firefox <=52 - // In some browsers, typeof returns "function" for HTML elements - // (i.e., `typeof document.createElement( "object" ) === "function"`). - // We don't want to classify *any* DOM node as a function. - return typeof obj === "function" && typeof obj.nodeType !== "number"; - }; + // Support: Chrome <=57, Firefox <=52 + // In some browsers, typeof returns "function" for HTML elements + // (i.e., `typeof document.createElement( "object" ) === "function"`). + // We don't want to classify *any* DOM node as a function. + // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 + // Plus for old WebKit, typeof returns "function" for HTML collections + // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) + return typeof obj === "function" && typeof obj.nodeType !== "number" && + typeof obj.item !== "function"; + }; var isWindow = function isWindow( obj ) { @@ -86,25 +91,40 @@ var isWindow = function isWindow( obj ) { }; +var document = window.document; + var preservedScriptAttributes = { type: true, src: true, + nonce: true, noModule: true }; - function DOMEval( code, doc, node ) { + function DOMEval( code, node, doc ) { doc = doc || document; - var i, + var i, val, script = doc.createElement( "script" ); script.text = code; if ( node ) { for ( i in preservedScriptAttributes ) { - if ( node[ i ] ) { - script[ i ] = node[ i ]; + + // Support: Firefox 64+, Edge 18+ + // Some browsers don't support the "nonce" property on scripts. + // On the other hand, just using `getAttribute` is not enough as + // the `nonce` attribute is reset to an empty string whenever it + // becomes browsing-context connected. + // See https://github.com/whatwg/html/issues/2369 + // See https://html.spec.whatwg.org/#nonce-attributes + // The `node.getAttribute` check was added for the sake of + // `jQuery.globalEval` so that it can fake a nonce-containing node + // via an object. + val = node[ i ] || node.getAttribute && node.getAttribute( i ); + if ( val ) { + script.setAttribute( i, val ); } } } @@ -129,7 +149,7 @@ function toType( obj ) { var - version = "3.3.1", + version = "3.6.0", // Define a local copy of jQuery jQuery = function( selector, context ) { @@ -137,11 +157,7 @@ var // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init( selector, context ); - }, - - // Support: Android <=4.0 only - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; + }; jQuery.fn = jQuery.prototype = { @@ -207,6 +223,18 @@ jQuery.fn = jQuery.prototype = { return this.eq( -1 ); }, + even: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return ( i + 1 ) % 2; + } ) ); + }, + + odd: function() { + return this.pushStack( jQuery.grep( this, function( _elem, i ) { + return i % 2; + } ) ); + }, + eq: function( i ) { var len = this.length, j = +i + ( i < 0 ? len : 0 ); @@ -258,7 +286,6 @@ jQuery.extend = jQuery.fn.extend = function() { // Extend the base object for ( name in options ) { - src = target[ name ]; copy = options[ name ]; // Prevent Object.prototype pollution @@ -270,14 +297,17 @@ jQuery.extend = jQuery.fn.extend = function() { // Recurse if we're merging plain objects or arrays if ( deep && copy && ( jQuery.isPlainObject( copy ) || ( copyIsArray = Array.isArray( copy ) ) ) ) { + src = target[ name ]; - if ( copyIsArray ) { - copyIsArray = false; - clone = src && Array.isArray( src ) ? src : []; - + // Ensure proper type for the source value + if ( copyIsArray && !Array.isArray( src ) ) { + clone = []; + } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { + clone = {}; } else { - clone = src && jQuery.isPlainObject( src ) ? src : {}; + clone = src; } + copyIsArray = false; // Never move original objects, clone them target[ name ] = jQuery.extend( deep, clone, copy ); @@ -330,9 +360,6 @@ jQuery.extend( { }, isEmptyObject: function( obj ) { - - /* eslint-disable no-unused-vars */ - // See https://github.com/eslint/eslint/issues/6125 var name; for ( name in obj ) { @@ -341,9 +368,10 @@ jQuery.extend( { return true; }, - // Evaluates a script in a global context - globalEval: function( code ) { - DOMEval( code ); + // Evaluates a script in a provided context; falls back to the global one + // if not specified. + globalEval: function( code, options, doc ) { + DOMEval( code, { nonce: options && options.nonce }, doc ); }, each: function( obj, callback ) { @@ -367,13 +395,6 @@ jQuery.extend( { return obj; }, - // Support: Android <=4.0 only - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - // results is for internal usage only makeArray: function( arr, results ) { var ret = results || []; @@ -382,7 +403,7 @@ jQuery.extend( { if ( isArrayLike( Object( arr ) ) ) { jQuery.merge( ret, typeof arr === "string" ? - [ arr ] : arr + [ arr ] : arr ); } else { push.call( ret, arr ); @@ -460,7 +481,7 @@ jQuery.extend( { } // Flatten any nested arrays - return concat.apply( [], ret ); + return flat( ret ); }, // A global GUID counter for objects @@ -477,9 +498,9 @@ if ( typeof Symbol === "function" ) { // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), -function( i, name ) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -} ); + function( _i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); + } ); function isArrayLike( obj ) { @@ -499,17 +520,16 @@ function isArrayLike( obj ) { } var Sizzle = /*! - * Sizzle CSS Selector Engine v2.3.3 + * Sizzle CSS Selector Engine v2.3.6 * https://sizzlejs.com/ * - * Copyright jQuery Foundation and other contributors + * Copyright JS Foundation and other contributors * Released under the MIT license - * http://jquery.org/license + * https://js.foundation/ * - * Date: 2016-08-08 + * Date: 2021-02-16 */ -(function( window ) { - +( function( window ) { var i, support, Expr, @@ -540,6 +560,7 @@ var i, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), + nonnativeSelectorCache = createCache(), sortOrder = function( a, b ) { if ( a === b ) { hasDuplicate = true; @@ -548,61 +569,71 @@ var i, }, // Instance methods - hasOwn = ({}).hasOwnProperty, + hasOwn = ( {} ).hasOwnProperty, arr = [], pop = arr.pop, - push_native = arr.push, + pushNative = arr.push, push = arr.push, slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native // https://jsperf.com/thor-indexof-vs-for/5 indexOf = function( list, elem ) { var i = 0, len = list.length; for ( ; i < len; i++ ) { - if ( list[i] === elem ) { + if ( list[ i ] === elem ) { return i; } } return -1; }, - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + + "ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", + // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram + identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", + + // "Attribute values must be CSS identifiers [capture 5] + // or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + + whitespace + "+$", "g" ), rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + + "*" ), + rdescend = new RegExp( whitespace + "|>" ), rpseudo = new RegExp( pseudos ), ridentifier = new RegExp( "^" + identifier + "$" ), @@ -613,16 +644,19 @@ var i, "TAG": new RegExp( "^(" + identifier + "|[*])" ), "ATTR": new RegExp( "^" + attributes ), "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + "needsContext": new RegExp( "^" + whitespace + + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) }, + rhtml = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, @@ -635,18 +669,21 @@ var i, // CSS escapes // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : + runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), + funescape = function( escape, nonHex ) { + var high = "0x" + escape.slice( 1 ) - 0x10000; + + return nonHex ? + + // Strip the backslash prefix from a non-hex escape sequence + nonHex : + + // Replace a hexadecimal escape sequence with the encoded Unicode code point + // Support: IE <=11+ + // For values outside the Basic Multilingual Plane (BMP), manually construct a + // surrogate pair high < 0 ? - // BMP codepoint String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); }, @@ -662,7 +699,8 @@ var i, } // Control characters and (dependent upon position) numbers get escaped as code points - return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + return ch.slice( 0, -1 ) + "\\" + + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; } // Other potentially-special ASCII characters get backslash-escaped @@ -677,9 +715,9 @@ var i, setDocument(); }, - disabledAncestor = addCombinator( + inDisabledFieldset = addCombinator( function( elem ) { - return elem.disabled === true && ("form" in elem || "label" in elem); + return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; }, { dir: "parentNode", next: "legend" } ); @@ -687,18 +725,20 @@ var i, // Optimize for push.apply( _, NodeList ) try { push.apply( - (arr = slice.call( preferredDoc.childNodes )), + ( arr = slice.call( preferredDoc.childNodes ) ), preferredDoc.childNodes ); + // Support: Android<4.0 // Detect silently failing push.apply + // eslint-disable-next-line no-unused-expressions arr[ preferredDoc.childNodes.length ].nodeType; } catch ( e ) { push = { apply: arr.length ? // Leverage slice if possible function( target, els ) { - push_native.apply( target, slice.call(els) ); + pushNative.apply( target, slice.call( els ) ); } : // Support: IE<9 @@ -706,8 +746,9 @@ try { function( target, els ) { var j = target.length, i = 0; + // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} + while ( ( target[ j++ ] = els[ i++ ] ) ) {} target.length = j - 1; } }; @@ -731,24 +772,21 @@ function Sizzle( selector, context, results, seed ) { // Try to shortcut find operations (as opposed to filters) in HTML documents if ( !seed ) { - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } + setDocument( context ); context = context || document; if ( documentIsHTML ) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { // ID selector - if ( (m = match[1]) ) { + if ( ( m = match[ 1 ] ) ) { // Document context if ( nodeType === 9 ) { - if ( (elem = context.getElementById( m )) ) { + if ( ( elem = context.getElementById( m ) ) ) { // Support: IE, Opera, Webkit // TODO: identify versions @@ -767,7 +805,7 @@ function Sizzle( selector, context, results, seed ) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID - if ( newContext && (elem = newContext.getElementById( m )) && + if ( newContext && ( elem = newContext.getElementById( m ) ) && contains( context, elem ) && elem.id === m ) { @@ -777,12 +815,12 @@ function Sizzle( selector, context, results, seed ) { } // Type selector - } else if ( match[2] ) { + } else if ( match[ 2 ] ) { push.apply( results, context.getElementsByTagName( selector ) ); return results; // Class selector - } else if ( (m = match[3]) && support.getElementsByClassName && + } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && context.getElementsByClassName ) { push.apply( results, context.getElementsByClassName( m ) ); @@ -792,50 +830,62 @@ function Sizzle( selector, context, results, seed ) { // Take advantage of querySelectorAll if ( support.qsa && - !compilerCache[ selector + " " ] && - (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + !nonnativeSelectorCache[ selector + " " ] && + ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && - if ( nodeType !== 1 ) { - newContext = context; - newSelector = selector; - - // qSA looks outside Element context, which is not what we want - // Thanks to Andrew Dupont for this workaround technique - // Support: IE <=8 + // Support: IE 8 only // Exclude object elements - } else if ( context.nodeName.toLowerCase() !== "object" ) { + ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { - // Capture the context ID, setting it first if necessary - if ( (nid = context.getAttribute( "id" )) ) { - nid = nid.replace( rcssescape, fcssescape ); - } else { - context.setAttribute( "id", (nid = expando) ); + newSelector = selector; + newContext = context; + + // qSA considers elements outside a scoping root when evaluating child or + // descendant combinators, which is not what we want. + // In such cases, we work around the behavior by prefixing every selector in the + // list with an ID selector referencing the scope context. + // The technique has to be used as well when a leading combinator is used + // as such selectors are not recognized by querySelectorAll. + // Thanks to Andrew Dupont for this technique. + if ( nodeType === 1 && + ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + + // We can use :scope instead of the ID hack if the browser + // supports it & if we're not changing the context. + if ( newContext !== context || !support.scope ) { + + // Capture the context ID, setting it first if necessary + if ( ( nid = context.getAttribute( "id" ) ) ) { + nid = nid.replace( rcssescape, fcssescape ); + } else { + context.setAttribute( "id", ( nid = expando ) ); + } } // Prefix every selector in the list groups = tokenize( selector ); i = groups.length; while ( i-- ) { - groups[i] = "#" + nid + " " + toSelector( groups[i] ); + groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + + toSelector( groups[ i ] ); } newSelector = groups.join( "," ); - - // Expand context for sibling selectors - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || - context; } - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch ( qsaError ) { - } finally { - if ( nid === expando ) { - context.removeAttribute( "id" ); - } + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + nonnativeSelectorCache( selector, true ); + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); } } } @@ -856,12 +906,14 @@ function createCache() { var keys = []; function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries delete cache[ keys.shift() ]; } - return (cache[ key + " " ] = value); + return ( cache[ key + " " ] = value ); } return cache; } @@ -880,17 +932,19 @@ function markFunction( fn ) { * @param {Function} fn Passed the created element and returns a boolean result */ function assert( fn ) { - var el = document.createElement("fieldset"); + var el = document.createElement( "fieldset" ); try { return !!fn( el ); - } catch (e) { + } catch ( e ) { return false; } finally { + // Remove from its parent by default if ( el.parentNode ) { el.parentNode.removeChild( el ); } + // release memory in IE el = null; } @@ -902,11 +956,11 @@ function assert( fn ) { * @param {Function} handler The method that will be applied */ function addHandle( attrs, handler ) { - var arr = attrs.split("|"), + var arr = attrs.split( "|" ), i = arr.length; while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; + Expr.attrHandle[ arr[ i ] ] = handler; } } @@ -928,7 +982,7 @@ function siblingCheck( a, b ) { // Check if b follows a if ( cur ) { - while ( (cur = cur.nextSibling) ) { + while ( ( cur = cur.nextSibling ) ) { if ( cur === b ) { return -1; } @@ -956,7 +1010,7 @@ function createInputPseudo( type ) { function createButtonPseudo( type ) { return function( elem ) { var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; + return ( name === "input" || name === "button" ) && elem.type === type; }; } @@ -999,7 +1053,7 @@ function createDisabledPseudo( disabled ) { // Where there is no isDisabled, check manually /* jshint -W018 */ elem.isDisabled !== !disabled && - disabledAncestor( elem ) === disabled; + inDisabledFieldset( elem ) === disabled; } return elem.disabled === disabled; @@ -1021,21 +1075,21 @@ function createDisabledPseudo( disabled ) { * @param {Function} fn */ function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { + return markFunction( function( argument ) { argument = +argument; - return markFunction(function( seed, matches ) { + return markFunction( function( seed, matches ) { var j, matchIndexes = fn( [], seed.length, argument ), i = matchIndexes.length; // Match elements found at the specified indexes while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); + if ( seed[ ( j = matchIndexes[ i ] ) ] ) { + seed[ j ] = !( matches[ j ] = seed[ j ] ); } } - }); - }); + } ); + } ); } /** @@ -1056,10 +1110,13 @@ support = Sizzle.support = {}; * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; + var namespace = elem && elem.namespaceURI, + docElem = elem && ( elem.ownerDocument || elem ).documentElement; + + // Support: IE <=8 + // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes + // https://bugs.jquery.com/ticket/4833 + return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); }; /** @@ -1072,7 +1129,11 @@ setDocument = Sizzle.setDocument = function( node ) { doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { return document; } @@ -1081,10 +1142,14 @@ setDocument = Sizzle.setDocument = function( node ) { docElem = document.documentElement; documentIsHTML = !isXML( document ); - // Support: IE 9-11, Edge + // Support: IE 9 - 11+, Edge 12 - 18+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) - if ( preferredDoc !== document && - (subWindow = document.defaultView) && subWindow.top !== subWindow ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( preferredDoc != document && + ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { // Support: IE 11, Edge if ( subWindow.addEventListener ) { @@ -1096,25 +1161,36 @@ setDocument = Sizzle.setDocument = function( node ) { } } + // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, + // Safari 4 - 5 only, Opera <=11.6 - 12.x only + // IE/Edge & older browsers don't support the :scope pseudo-class. + // Support: Safari 6.0 only + // Safari 6.0 supports :scope but it's an alias of :root there. + support.scope = assert( function( el ) { + docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); + return typeof el.querySelectorAll !== "undefined" && + !el.querySelectorAll( ":scope fieldset div" ).length; + } ); + /* Attributes ---------------------------------------------------------------------- */ // Support: IE<8 // Verify that getAttribute really returns attributes and not properties // (excepting IE8 booleans) - support.attributes = assert(function( el ) { + support.attributes = assert( function( el ) { el.className = "i"; - return !el.getAttribute("className"); - }); + return !el.getAttribute( "className" ); + } ); /* getElement(s)By* ---------------------------------------------------------------------- */ // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( el ) { - el.appendChild( document.createComment("") ); - return !el.getElementsByTagName("*").length; - }); + support.getElementsByTagName = assert( function( el ) { + el.appendChild( document.createComment( "" ) ); + return !el.getElementsByTagName( "*" ).length; + } ); // Support: IE<9 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); @@ -1123,38 +1199,38 @@ setDocument = Sizzle.setDocument = function( node ) { // Check if getElementById returns elements by name // The broken getElementById methods don't pick up programmatically-set names, // so use a roundabout getElementsByName test - support.getById = assert(function( el ) { + support.getById = assert( function( el ) { docElem.appendChild( el ).id = expando; return !document.getElementsByName || !document.getElementsByName( expando ).length; - }); + } ); // ID filter and find if ( support.getById ) { - Expr.filter["ID"] = function( id ) { + Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { - return elem.getAttribute("id") === attrId; + return elem.getAttribute( "id" ) === attrId; }; }; - Expr.find["ID"] = function( id, context ) { + Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var elem = context.getElementById( id ); return elem ? [ elem ] : []; } }; } else { - Expr.filter["ID"] = function( id ) { + Expr.filter[ "ID" ] = function( id ) { var attrId = id.replace( runescape, funescape ); return function( elem ) { var node = typeof elem.getAttributeNode !== "undefined" && - elem.getAttributeNode("id"); + elem.getAttributeNode( "id" ); return node && node.value === attrId; }; }; // Support: IE 6 - 7 only // getElementById is not reliable as a find shortcut - Expr.find["ID"] = function( id, context ) { + Expr.find[ "ID" ] = function( id, context ) { if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { var node, i, elems, elem = context.getElementById( id ); @@ -1162,7 +1238,7 @@ setDocument = Sizzle.setDocument = function( node ) { if ( elem ) { // Verify the id attribute - node = elem.getAttributeNode("id"); + node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } @@ -1170,8 +1246,8 @@ setDocument = Sizzle.setDocument = function( node ) { // Fall back on getElementsByName elems = context.getElementsByName( id ); i = 0; - while ( (elem = elems[i++]) ) { - node = elem.getAttributeNode("id"); + while ( ( elem = elems[ i++ ] ) ) { + node = elem.getAttributeNode( "id" ); if ( node && node.value === id ) { return [ elem ]; } @@ -1184,7 +1260,7 @@ setDocument = Sizzle.setDocument = function( node ) { } // Tag - Expr.find["TAG"] = support.getElementsByTagName ? + Expr.find[ "TAG" ] = support.getElementsByTagName ? function( tag, context ) { if ( typeof context.getElementsByTagName !== "undefined" ) { return context.getElementsByTagName( tag ); @@ -1199,12 +1275,13 @@ setDocument = Sizzle.setDocument = function( node ) { var elem, tmp = [], i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too results = context.getElementsByTagName( tag ); // Filter out possible comments if ( tag === "*" ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem.nodeType === 1 ) { tmp.push( elem ); } @@ -1216,7 +1293,7 @@ setDocument = Sizzle.setDocument = function( node ) { }; // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { return context.getElementsByClassName( className ); } @@ -1237,10 +1314,14 @@ setDocument = Sizzle.setDocument = function( node ) { // See https://bugs.jquery.com/ticket/13378 rbuggyQSA = []; - if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { + // Build QSA regex // Regex strategy adopted from Diego Perini - assert(function( el ) { + assert( function( el ) { + + var input; + // Select is set to empty string on purpose // This is to test IE's treatment of not explicitly // setting a boolean content attribute, @@ -1254,78 +1335,98 @@ setDocument = Sizzle.setDocument = function( node ) { // Nothing should be selected when empty strings follow ^= or $= or *= // The test attribute must be unknown in Opera but "safe" for WinRT // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( el.querySelectorAll("[msallowcapture^='']").length ) { + if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); } // Support: IE8 // Boolean attributes and "value" are not treated correctly - if ( !el.querySelectorAll("[selected]").length ) { + if ( !el.querySelectorAll( "[selected]" ).length ) { rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); + rbuggyQSA.push( "~=" ); + } + + // Support: IE 11+, Edge 15 - 18+ + // IE 11/Edge don't find elements on a `[name='']` query in some cases. + // Adding a temporary attribute to the document before the selection works + // around the issue. + // Interestingly, IE 10 & older don't seem to have the issue. + input = document.createElement( "input" ); + input.setAttribute( "name", "" ); + el.appendChild( input ); + if ( !el.querySelectorAll( "[name='']" ).length ) { + rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + + whitespace + "*(?:''|\"\")" ); } // Webkit/Opera - :checked should return selected option elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked // IE8 throws error here and will not see later tests - if ( !el.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); + if ( !el.querySelectorAll( ":checked" ).length ) { + rbuggyQSA.push( ":checked" ); } // Support: Safari 8+, iOS 8+ // https://bugs.webkit.org/show_bug.cgi?id=136851 // In-page `selector#id sibling-combinator selector` fails if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); + rbuggyQSA.push( ".#.+[+~]" ); } - }); - assert(function( el ) { + // Support: Firefox <=3.6 - 5 only + // Old Firefox doesn't throw on a badly-escaped identifier. + el.querySelectorAll( "\\\f" ); + rbuggyQSA.push( "[\\r\\n\\f]" ); + } ); + + assert( function( el ) { el.innerHTML = "" + ""; // Support: Windows 8 Native Apps // The type and name attributes are restricted during .innerHTML assignment - var input = document.createElement("input"); + var input = document.createElement( "input" ); input.setAttribute( "type", "hidden" ); el.appendChild( input ).setAttribute( "name", "D" ); // Support: IE8 // Enforce case-sensitivity of name attribute - if ( el.querySelectorAll("[name=d]").length ) { + if ( el.querySelectorAll( "[name=d]" ).length ) { rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) // IE8 throws error here and will not see later tests - if ( el.querySelectorAll(":enabled").length !== 2 ) { + if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } // Support: IE9-11+ // IE's :disabled selector does not pick up the children of disabled fieldsets docElem.appendChild( el ).disabled = true; - if ( el.querySelectorAll(":disabled").length !== 2 ) { + if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { rbuggyQSA.push( ":enabled", ":disabled" ); } + // Support: Opera 10 - 11 only // Opera 10-11 does not throw on post-comma invalid pseudos - el.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); + el.querySelectorAll( "*,:x" ); + rbuggyQSA.push( ",.*:" ); + } ); } - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { + docElem.msMatchesSelector ) ) ) ) { + + assert( function( el ) { - assert(function( el ) { // Check to see if it's possible to do matchesSelector // on a disconnected node (IE 9) support.disconnectedMatch = matches.call( el, "*" ); @@ -1334,11 +1435,11 @@ setDocument = Sizzle.setDocument = function( node ) { // Gecko does not error, returns false instead matches.call( el, "[s!='']:x" ); rbuggyMatches.push( "!=", pseudos ); - }); + } ); } - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); /* Contains ---------------------------------------------------------------------- */ @@ -1355,11 +1456,11 @@ setDocument = Sizzle.setDocument = function( node ) { adown.contains ? adown.contains( bup ) : a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); + ) ); } : function( a, b ) { if ( b ) { - while ( (b = b.parentNode) ) { + while ( ( b = b.parentNode ) ) { if ( b === a ) { return true; } @@ -1388,7 +1489,11 @@ setDocument = Sizzle.setDocument = function( node ) { } // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? a.compareDocumentPosition( b ) : // Otherwise we know they are disconnected @@ -1396,13 +1501,24 @@ setDocument = Sizzle.setDocument = function( node ) { // Disconnected nodes if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { // Choose the first element that is related to our preferred document - if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( a == document || a.ownerDocument == preferredDoc && + contains( preferredDoc, a ) ) { return -1; } - if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( b == document || b.ownerDocument == preferredDoc && + contains( preferredDoc, b ) ) { return 1; } @@ -1415,6 +1531,7 @@ setDocument = Sizzle.setDocument = function( node ) { return compare & 4 ? -1 : 1; } : function( a, b ) { + // Exit early if the nodes are identical if ( a === b ) { hasDuplicate = true; @@ -1430,8 +1547,14 @@ setDocument = Sizzle.setDocument = function( node ) { // Parentless nodes are either documents or disconnected if ( !aup || !bup ) { - return a === document ? -1 : - b === document ? 1 : + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + return a == document ? -1 : + b == document ? 1 : + /* eslint-enable eqeqeq */ aup ? -1 : bup ? 1 : sortInput ? @@ -1445,26 +1568,32 @@ setDocument = Sizzle.setDocument = function( node ) { // Otherwise we need full lists of their ancestors for comparison cur = a; - while ( (cur = cur.parentNode) ) { + while ( ( cur = cur.parentNode ) ) { ap.unshift( cur ); } cur = b; - while ( (cur = cur.parentNode) ) { + while ( ( cur = cur.parentNode ) ) { bp.unshift( cur ); } // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { + while ( ap[ i ] === bp[ i ] ) { i++; } return i ? + // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : + siblingCheck( ap[ i ], bp[ i ] ) : // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + /* eslint-disable eqeqeq */ + ap[ i ] == preferredDoc ? -1 : + bp[ i ] == preferredDoc ? 1 : + /* eslint-enable eqeqeq */ 0; }; @@ -1476,16 +1605,10 @@ Sizzle.matches = function( expr, elements ) { }; Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); + setDocument( elem ); if ( support.matchesSelector && documentIsHTML && - !compilerCache[ expr + " " ] && + !nonnativeSelectorCache[ expr + " " ] && ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { @@ -1494,32 +1617,46 @@ Sizzle.matchesSelector = function( elem, expr ) { // IE 9's matchesSelector returns false on disconnected nodes if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { + + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { return ret; } - } catch (e) {} + } catch ( e ) { + nonnativeSelectorCache( expr, true ); + } } return Sizzle( expr, document, null, [ elem ] ).length > 0; }; Sizzle.contains = function( context, elem ) { + // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( context.ownerDocument || context ) != document ) { setDocument( context ); } return contains( context, elem ); }; Sizzle.attr = function( elem, name ) { + // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( ( elem.ownerDocument || elem ) != document ) { setDocument( elem ); } var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? fn( elem, name, !documentIsHTML ) : @@ -1529,13 +1666,13 @@ Sizzle.attr = function( elem, name ) { val : support.attributes || !documentIsHTML ? elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? + ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : null; }; Sizzle.escape = function( sel ) { - return (sel + "").replace( rcssescape, fcssescape ); + return ( sel + "" ).replace( rcssescape, fcssescape ); }; Sizzle.error = function( msg ) { @@ -1558,7 +1695,7 @@ Sizzle.uniqueSort = function( results ) { results.sort( sortOrder ); if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { + while ( ( elem = results[ i++ ] ) ) { if ( elem === results[ i ] ) { j = duplicates.push( i ); } @@ -1586,17 +1723,21 @@ getText = Sizzle.getText = function( elem ) { nodeType = elem.nodeType; if ( !nodeType ) { + // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { + while ( ( node = elem[ i++ ] ) ) { + // Do not traverse comment nodes ret += getText( node ); } } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements // innerText usage removed for consistency of new lines (jQuery #11153) if ( typeof elem.textContent === "string" ) { return elem.textContent; } else { + // Traverse its children for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { ret += getText( elem ); @@ -1605,6 +1746,7 @@ getText = Sizzle.getText = function( elem ) { } else if ( nodeType === 3 || nodeType === 4 ) { return elem.nodeValue; } + // Do not include comment or processing instruction nodes return ret; @@ -1632,19 +1774,21 @@ Expr = Sizzle.selectors = { preFilter: { "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); + match[ 1 ] = match[ 1 ].replace( runescape, funescape ); // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + match[ 3 ] = ( match[ 3 ] || match[ 4 ] || + match[ 5 ] || "" ).replace( runescape, funescape ); - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; + if ( match[ 2 ] === "~=" ) { + match[ 3 ] = " " + match[ 3 ] + " "; } return match.slice( 0, 4 ); }, "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] 1 type (only|nth|...) 2 what (child|of-type) @@ -1655,22 +1799,25 @@ Expr = Sizzle.selectors = { 7 sign of y-component 8 y of y-component */ - match[1] = match[1].toLowerCase(); + match[ 1 ] = match[ 1 ].toLowerCase(); + + if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { - if ( match[1].slice( 0, 3 ) === "nth" ) { // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); + if ( !match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); } // numeric x and y parameters for Expr.filter.CHILD // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + match[ 4 ] = +( match[ 4 ] ? + match[ 5 ] + ( match[ 6 ] || 1 ) : + 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); + match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); + // other types prohibit arguments + } else if ( match[ 3 ] ) { + Sizzle.error( match[ 0 ] ); } return match; @@ -1678,26 +1825,28 @@ Expr = Sizzle.selectors = { "PSEUDO": function( match ) { var excess, - unquoted = !match[6] && match[2]; + unquoted = !match[ 6 ] && match[ 2 ]; - if ( matchExpr["CHILD"].test( match[0] ) ) { + if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { return null; } // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; + if ( match[ 3 ] ) { + match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; // Strip excess characters from unquoted arguments } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && + ( excess = tokenize( unquoted, true ) ) && + // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); + match[ 0 ] = match[ 0 ].slice( 0, excess ); + match[ 2 ] = unquoted.slice( 0, excess ); } // Return only captures needed by the pseudo filter method (type and argument) @@ -1710,7 +1859,9 @@ Expr = Sizzle.selectors = { "TAG": function( nodeNameSelector ) { var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); return nodeNameSelector === "*" ? - function() { return true; } : + function() { + return true; + } : function( elem ) { return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; }; @@ -1720,10 +1871,16 @@ Expr = Sizzle.selectors = { var pattern = classCache[ className + " " ]; return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); + ( pattern = new RegExp( "(^|" + whitespace + + ")" + className + "(" + whitespace + "|$)" ) ) && classCache( + className, function( elem ) { + return pattern.test( + typeof elem.className === "string" && elem.className || + typeof elem.getAttribute !== "undefined" && + elem.getAttribute( "class" ) || + "" + ); + } ); }, "ATTR": function( name, operator, check ) { @@ -1739,6 +1896,8 @@ Expr = Sizzle.selectors = { result += ""; + /* eslint-disable max-len */ + return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf( check ) === 0 : @@ -1747,10 +1906,12 @@ Expr = Sizzle.selectors = { operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : false; + /* eslint-enable max-len */ + }; }, - "CHILD": function( type, what, argument, first, last ) { + "CHILD": function( type, what, _argument, first, last ) { var simple = type.slice( 0, 3 ) !== "nth", forward = type.slice( -4 ) !== "last", ofType = what === "of-type"; @@ -1762,7 +1923,7 @@ Expr = Sizzle.selectors = { return !!elem.parentNode; } : - function( elem, context, xml ) { + function( elem, _context, xml ) { var cache, uniqueCache, outerCache, node, nodeIndex, start, dir = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, @@ -1776,7 +1937,7 @@ Expr = Sizzle.selectors = { if ( simple ) { while ( dir ) { node = elem; - while ( (node = node[ dir ]) ) { + while ( ( node = node[ dir ] ) ) { if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { @@ -1784,6 +1945,7 @@ Expr = Sizzle.selectors = { return false; } } + // Reverse direction for :only-* (if we haven't yet done so) start = dir = type === "only" && !start && "nextSibling"; } @@ -1799,22 +1961,22 @@ Expr = Sizzle.selectors = { // ...in a gzip-friendly way node = parent; - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; diff = nodeIndex && cache[ 2 ]; node = nodeIndex && parent.childNodes[ nodeIndex ]; - while ( (node = ++nodeIndex && node && node[ dir ] || + while ( ( node = ++nodeIndex && node && node[ dir ] || // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { + ( diff = nodeIndex = 0 ) || start.pop() ) ) { // When found, cache indexes on `parent` and break if ( node.nodeType === 1 && ++diff && node === elem ) { @@ -1824,16 +1986,18 @@ Expr = Sizzle.selectors = { } } else { + // Use previously-cached element index if available if ( useCache ) { + // ...in a gzip-friendly way node = elem; - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); cache = uniqueCache[ type ] || []; nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; @@ -1843,9 +2007,10 @@ Expr = Sizzle.selectors = { // xml :nth-child(...) // or :nth-last-child(...) or :nth(-last)?-of-type(...) if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { + while ( ( node = ++nodeIndex && node && node[ dir ] || + ( diff = nodeIndex = 0 ) || start.pop() ) ) { if ( ( ofType ? node.nodeName.toLowerCase() === name : @@ -1854,12 +2019,13 @@ Expr = Sizzle.selectors = { // Cache the index of each encountered element if ( useCache ) { - outerCache = node[ expando ] || (node[ expando ] = {}); + outerCache = node[ expando ] || + ( node[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) uniqueCache = outerCache[ node.uniqueID ] || - (outerCache[ node.uniqueID ] = {}); + ( outerCache[ node.uniqueID ] = {} ); uniqueCache[ type ] = [ dirruns, diff ]; } @@ -1880,6 +2046,7 @@ Expr = Sizzle.selectors = { }, "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive // http://www.w3.org/TR/selectors/#pseudo-classes // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters @@ -1899,15 +2066,15 @@ Expr = Sizzle.selectors = { if ( fn.length > 1 ) { args = [ pseudo, pseudo, "", argument ]; return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { + markFunction( function( seed, matches ) { var idx, matched = fn( seed, argument ), i = matched.length; while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); + idx = indexOf( seed, matched[ i ] ); + seed[ idx ] = !( matches[ idx ] = matched[ i ] ); } - }) : + } ) : function( elem ) { return fn( elem, 0, args ); }; @@ -1918,8 +2085,10 @@ Expr = Sizzle.selectors = { }, pseudos: { + // Potentially complex pseudos - "not": markFunction(function( selector ) { + "not": markFunction( function( selector ) { + // Trim the selector passed to compile // to avoid treating leading and trailing // spaces as combinators @@ -1928,39 +2097,40 @@ Expr = Sizzle.selectors = { matcher = compile( selector.replace( rtrim, "$1" ) ); return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { + markFunction( function( seed, matches, _context, xml ) { var elem, unmatched = matcher( seed, null, xml, [] ), i = seed.length; // Match elements unmatched by `matcher` while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); + if ( ( elem = unmatched[ i ] ) ) { + seed[ i ] = !( matches[ i ] = elem ); } } - }) : - function( elem, context, xml ) { - input[0] = elem; + } ) : + function( elem, _context, xml ) { + input[ 0 ] = elem; matcher( input, null, xml, results ); + // Don't keep the element (issue #299) - input[0] = null; + input[ 0 ] = null; return !results.pop(); }; - }), + } ), - "has": markFunction(function( selector ) { + "has": markFunction( function( selector ) { return function( elem ) { return Sizzle( selector, elem ).length > 0; }; - }), + } ), - "contains": markFunction(function( text ) { + "contains": markFunction( function( text ) { text = text.replace( runescape, funescape ); return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; }; - }), + } ), // "Whether an element is represented by a :lang() selector // is based solely on the element's language value @@ -1970,25 +2140,26 @@ Expr = Sizzle.selectors = { // The identifier C does not have to be a valid language name." // http://www.w3.org/TR/selectors/#lang-pseudo "lang": markFunction( function( lang ) { + // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { + if ( !ridentifier.test( lang || "" ) ) { Sizzle.error( "unsupported lang: " + lang ); } lang = lang.replace( runescape, funescape ).toLowerCase(); return function( elem ) { var elemLang; do { - if ( (elemLang = documentIsHTML ? + if ( ( elemLang = documentIsHTML ? elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { elemLang = elemLang.toLowerCase(); return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); return false; }; - }), + } ), // Miscellaneous "target": function( elem ) { @@ -2001,7 +2172,9 @@ Expr = Sizzle.selectors = { }, "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + return elem === document.activeElement && + ( !document.hasFocus || document.hasFocus() ) && + !!( elem.type || elem.href || ~elem.tabIndex ); }, // Boolean properties @@ -2009,16 +2182,20 @@ Expr = Sizzle.selectors = { "disabled": createDisabledPseudo( true ), "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + return ( nodeName === "input" && !!elem.checked ) || + ( nodeName === "option" && !!elem.selected ); }, "selected": function( elem ) { + // Accessing this property makes selected-by-default // options in Safari work properly if ( elem.parentNode ) { + // eslint-disable-next-line no-unused-expressions elem.parentNode.selectedIndex; } @@ -2027,6 +2204,7 @@ Expr = Sizzle.selectors = { // Contents "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), // but not by others (comment: 8; processing instruction: 7; etc.) @@ -2040,7 +2218,7 @@ Expr = Sizzle.selectors = { }, "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); + return !Expr.pseudos[ "empty" ]( elem ); }, // Element/input types @@ -2064,57 +2242,62 @@ Expr = Sizzle.selectors = { // Support: IE<8 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + ( ( attr = elem.getAttribute( "type" ) ) == null || + attr.toLowerCase() === "text" ); }, // Position-in-collection - "first": createPositionalPseudo(function() { + "first": createPositionalPseudo( function() { return [ 0 ]; - }), + } ), - "last": createPositionalPseudo(function( matchIndexes, length ) { + "last": createPositionalPseudo( function( _matchIndexes, length ) { return [ length - 1 ]; - }), + } ), - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { return [ argument < 0 ? argument + length : argument ]; - }), + } ), - "even": createPositionalPseudo(function( matchIndexes, length ) { + "even": createPositionalPseudo( function( matchIndexes, length ) { var i = 0; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "odd": createPositionalPseudo(function( matchIndexes, length ) { + "odd": createPositionalPseudo( function( matchIndexes, length ) { var i = 1; for ( ; i < length; i += 2 ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; + "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { + var i = argument < 0 ? + argument + length : + argument > length ? + length : + argument; for ( ; --i >= 0; ) { matchIndexes.push( i ); } return matchIndexes; - }), + } ), - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { var i = argument < 0 ? argument + length : argument; for ( ; ++i < length; ) { matchIndexes.push( i ); } return matchIndexes; - }) + } ) } }; -Expr.pseudos["nth"] = Expr.pseudos["eq"]; +Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; // Add button/input type pseudos for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { @@ -2145,37 +2328,39 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { while ( soFar ) { // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( !matched || ( match = rcomma.exec( soFar ) ) ) { if ( match ) { + // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; + soFar = soFar.slice( match[ 0 ].length ) || soFar; } - groups.push( (tokens = []) ); + groups.push( ( tokens = [] ) ); } matched = false; // Combinators - if ( (match = rcombinators.exec( soFar )) ) { + if ( ( match = rcombinators.exec( soFar ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, + // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); + type: match[ 0 ].replace( rtrim, " " ) + } ); soFar = soFar.slice( matched.length ); } // Filters for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { + if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || + ( match = preFilters[ type ]( match ) ) ) ) { matched = match.shift(); - tokens.push({ + tokens.push( { value: matched, type: type, matches: match - }); + } ); soFar = soFar.slice( matched.length ); } } @@ -2192,6 +2377,7 @@ tokenize = Sizzle.tokenize = function( selector, parseOnly ) { soFar.length : soFar ? Sizzle.error( selector ) : + // Cache the tokens tokenCache( selector, groups ).slice( 0 ); }; @@ -2201,7 +2387,7 @@ function toSelector( tokens ) { len = tokens.length, selector = ""; for ( ; i < len; i++ ) { - selector += tokens[i].value; + selector += tokens[ i ].value; } return selector; } @@ -2214,9 +2400,10 @@ function addCombinator( matcher, combinator, base ) { doneName = done++; return combinator.first ? + // Check against closest ancestor/preceding element function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { return matcher( elem, context, xml ); } @@ -2231,7 +2418,7 @@ function addCombinator( matcher, combinator, base ) { // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching if ( xml ) { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { if ( matcher( elem, context, xml ) ) { return true; @@ -2239,27 +2426,29 @@ function addCombinator( matcher, combinator, base ) { } } } else { - while ( (elem = elem[ dir ]) ) { + while ( ( elem = elem[ dir ] ) ) { if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); + outerCache = elem[ expando ] || ( elem[ expando ] = {} ); // Support: IE <9 only // Defend against cloned attroperties (jQuery gh-1709) - uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + uniqueCache = outerCache[ elem.uniqueID ] || + ( outerCache[ elem.uniqueID ] = {} ); if ( skip && skip === elem.nodeName.toLowerCase() ) { elem = elem[ dir ] || elem; - } else if ( (oldCache = uniqueCache[ key ]) && + } else if ( ( oldCache = uniqueCache[ key ] ) && oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); + return ( newCache[ 2 ] = oldCache[ 2 ] ); } else { + // Reuse newcache so results back-propagate to previous elements uniqueCache[ key ] = newCache; // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { return true; } } @@ -2275,20 +2464,20 @@ function elementMatcher( matchers ) { function( elem, context, xml ) { var i = matchers.length; while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { + if ( !matchers[ i ]( elem, context, xml ) ) { return false; } } return true; } : - matchers[0]; + matchers[ 0 ]; } function multipleContexts( selector, contexts, results ) { var i = 0, len = contexts.length; for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); + Sizzle( selector, contexts[ i ], results ); } return results; } @@ -2301,7 +2490,7 @@ function condense( unmatched, map, filter, context, xml ) { mapped = map != null; for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { + if ( ( elem = unmatched[ i ] ) ) { if ( !filter || filter( elem, context, xml ) ) { newUnmatched.push( elem ); if ( mapped ) { @@ -2321,14 +2510,18 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( postFinder && !postFinder[ expando ] ) { postFinder = setMatcher( postFinder, postSelector ); } - return markFunction(function( seed, results, context, xml ) { + return markFunction( function( seed, results, context, xml ) { var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + elems = seed || multipleContexts( + selector || "*", + context.nodeType ? [ context ] : context, + [] + ), // Prefilter to get matcher input, preserving a map for seed-results synchronization matcherIn = preFilter && ( seed || !selector ) ? @@ -2336,6 +2529,7 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS elems, matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, postFinder || ( seed ? preFilter : preexisting || postFilter ) ? @@ -2359,8 +2553,8 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS // Un-match failing elements by moving them back to matcherIn i = temp.length; while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + if ( ( elem = temp[ i ] ) ) { + matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); } } } @@ -2368,25 +2562,27 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts temp = []; i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) ) { + if ( ( elem = matcherOut[ i ] ) ) { + // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); + temp.push( ( matcherIn[ i ] = elem ) ); } } - postFinder( null, (matcherOut = []), temp, xml ); + postFinder( null, ( matcherOut = [] ), temp, xml ); } // Move matched elements from seed to results to keep them synchronized i = matcherOut.length; while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + if ( ( elem = matcherOut[ i ] ) && + ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { - seed[temp] = !(results[temp] = elem); + seed[ temp ] = !( results[ temp ] = elem ); } } } @@ -2404,14 +2600,14 @@ function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postS push.apply( results, matcherOut ); } } - }); + } ); } function matcherFromTokens( tokens ) { var checkContext, matcher, j, len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], + leadingRelative = Expr.relative[ tokens[ 0 ].type ], + implicitRelative = leadingRelative || Expr.relative[ " " ], i = leadingRelative ? 1 : 0, // The foundational matcher ensures that elements are reachable from top-level context(s) @@ -2423,38 +2619,43 @@ function matcherFromTokens( tokens ) { }, implicitRelative, true ), matchers = [ function( elem, context, xml ) { var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? + ( checkContext = context ).nodeType ? matchContext( elem, context, xml ) : matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) checkContext = null; return ret; } ]; for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { + matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); // Return special upon seeing a positional matcher if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling j = ++i; for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { + if ( Expr.relative[ tokens[ j ].type ] ) { break; } } return setMatcher( i > 1 && elementMatcher( matchers ), i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens + .slice( 0, i - 1 ) + .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) ).replace( rtrim, "$1" ), matcher, i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), j < len && toSelector( tokens ) ); } @@ -2475,28 +2676,40 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { unmatched = seed && [], setMatched = [], contextBackup = outermostContext, + // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), len = elems.length; if ( outermost ) { - outermostContext = context === document || context || outermost; + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + outermostContext = context == document || context || outermost; } // Add elements passing elementMatchers directly to results // Support: IE<9, Safari // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { if ( byElement && elem ) { j = 0; - if ( !context && elem.ownerDocument !== document ) { + + // Support: IE 11+, Edge 17 - 18+ + // IE/Edge sometimes throw a "Permission denied" error when strict-comparing + // two documents; shallow comparisons work. + // eslint-disable-next-line eqeqeq + if ( !context && elem.ownerDocument != document ) { setDocument( elem ); xml = !documentIsHTML; } - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context || document, xml) ) { + while ( ( matcher = elementMatchers[ j++ ] ) ) { + if ( matcher( elem, context || document, xml ) ) { results.push( elem ); break; } @@ -2508,8 +2721,9 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // Track unmatched elements for set filters if ( bySet ) { + // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { + if ( ( elem = !matcher && elem ) ) { matchedCount--; } @@ -2533,16 +2747,17 @@ function matcherFromGroupMatchers( elementMatchers, setMatchers ) { // numerically zero. if ( bySet && i !== matchedCount ) { j = 0; - while ( (matcher = setMatchers[j++]) ) { + while ( ( matcher = setMatchers[ j++ ] ) ) { matcher( unmatched, setMatched, context, xml ); } if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting if ( matchedCount > 0 ) { while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); + if ( !( unmatched[ i ] || setMatched[ i ] ) ) { + setMatched[ i ] = pop.call( results ); } } } @@ -2583,13 +2798,14 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { cached = compilerCache[ selector + " " ]; if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element if ( !match ) { match = tokenize( selector ); } i = match.length; while ( i-- ) { - cached = matcherFromTokens( match[i] ); + cached = matcherFromTokens( match[ i ] ); if ( cached[ expando ] ) { setMatchers.push( cached ); } else { @@ -2598,7 +2814,10 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { } // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + cached = compilerCache( + selector, + matcherFromGroupMatchers( elementMatchers, setMatchers ) + ); // Save selector and tokenization cached.selector = selector; @@ -2618,7 +2837,7 @@ compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { select = Sizzle.select = function( selector, context, results, seed ) { var i, tokens, token, type, find, compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); + match = !seed && tokenize( ( selector = compiled.selector || selector ) ); results = results || []; @@ -2627,11 +2846,12 @@ select = Sizzle.select = function( selector, context, results, seed ) { if ( match.length === 1 ) { // Reduce context if the leading compound selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) { + tokens = match[ 0 ] = match[ 0 ].slice( 0 ); + if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && + context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + context = ( Expr.find[ "ID" ]( token.matches[ 0 ] + .replace( runescape, funescape ), context ) || [] )[ 0 ]; if ( !context ) { return results; @@ -2644,20 +2864,22 @@ select = Sizzle.select = function( selector, context, results, seed ) { } // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; while ( i-- ) { - token = tokens[i]; + token = tokens[ i ]; // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { + if ( Expr.relative[ ( type = token.type ) ] ) { break; } - if ( (find = Expr.find[ type ]) ) { + if ( ( find = Expr.find[ type ] ) ) { + // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { + if ( ( seed = find( + token.matches[ 0 ].replace( runescape, funescape ), + rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || + context + ) ) ) { // If seed is empty or no tokens remain, we can return early tokens.splice( i, 1 ); @@ -2688,7 +2910,7 @@ select = Sizzle.select = function( selector, context, results, seed ) { // One-time assignments // Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; +support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; // Support: Chrome 14-35+ // Always assume duplicates if they aren't passed to the comparison function @@ -2699,58 +2921,59 @@ setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) // Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( el ) { +support.sortDetached = assert( function( el ) { + // Should return 1, but returns 4 (following) - return el.compareDocumentPosition( document.createElement("fieldset") ) & 1; -}); + return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; +} ); // Support: IE<8 // Prevent attribute/property "interpolation" // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( el ) { +if ( !assert( function( el ) { el.innerHTML = ""; - return el.firstChild.getAttribute("href") === "#" ; -}) ) { + return el.firstChild.getAttribute( "href" ) === "#"; +} ) ) { addHandle( "type|href|height|width", function( elem, name, isXML ) { if ( !isXML ) { return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); } - }); + } ); } // Support: IE<9 // Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( el ) { +if ( !support.attributes || !assert( function( el ) { el.innerHTML = ""; el.firstChild.setAttribute( "value", "" ); return el.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { +} ) ) { + addHandle( "value", function( elem, _name, isXML ) { if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { return elem.defaultValue; } - }); + } ); } // Support: IE<9 // Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( el ) { - return el.getAttribute("disabled") == null; -}) ) { +if ( !assert( function( el ) { + return el.getAttribute( "disabled" ) == null; +} ) ) { addHandle( booleans, function( elem, name, isXML ) { var val; if ( !isXML ) { return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? + ( val = elem.getAttributeNode( name ) ) && val.specified ? val.value : - null; + null; } - }); + } ); } return Sizzle; -})( window ); +} )( window ); @@ -2803,9 +3026,9 @@ var rneedsContext = jQuery.expr.match.needsContext; function nodeName( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); -}; +} var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); @@ -3119,7 +3342,7 @@ jQuery.each( { parents: function( elem ) { return dir( elem, "parentNode" ); }, - parentsUntil: function( elem, i, until ) { + parentsUntil: function( elem, _i, until ) { return dir( elem, "parentNode", until ); }, next: function( elem ) { @@ -3134,10 +3357,10 @@ jQuery.each( { prevAll: function( elem ) { return dir( elem, "previousSibling" ); }, - nextUntil: function( elem, i, until ) { + nextUntil: function( elem, _i, until ) { return dir( elem, "nextSibling", until ); }, - prevUntil: function( elem, i, until ) { + prevUntil: function( elem, _i, until ) { return dir( elem, "previousSibling", until ); }, siblings: function( elem ) { @@ -3147,18 +3370,24 @@ jQuery.each( { return siblings( elem.firstChild ); }, contents: function( elem ) { - if ( nodeName( elem, "iframe" ) ) { - return elem.contentDocument; - } + if ( elem.contentDocument != null && - // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only - // Treat the template element as a regular one in browsers that - // don't support it. - if ( nodeName( elem, "template" ) ) { - elem = elem.content || elem; - } + // Support: IE 11+ + // elements with no `data` attribute has an object + // `contentDocument` with a `null` prototype. + getProto( elem.contentDocument ) ) { + + return elem.contentDocument; + } - return jQuery.merge( [], elem.childNodes ); + // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only + // Treat the template element as a regular one in browsers that + // don't support it. + if ( nodeName( elem, "template" ) ) { + elem = elem.content || elem; + } + + return jQuery.merge( [], elem.childNodes ); } }, function( name, fn ) { jQuery.fn[ name ] = function( until, selector ) { @@ -3490,7 +3719,7 @@ jQuery.extend( { var fns = arguments; return jQuery.Deferred( function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { + jQuery.each( tuples, function( _i, tuple ) { // Map tuples (progress, done, fail) to arguments (done, fail, progress) var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; @@ -3770,8 +3999,8 @@ jQuery.extend( { resolveContexts = Array( i ), resolveValues = slice.call( arguments ), - // the master Deferred - master = jQuery.Deferred(), + // the primary Deferred + primary = jQuery.Deferred(), // subordinate callback factory updateFunc = function( i ) { @@ -3779,30 +4008,30 @@ jQuery.extend( { resolveContexts[ i ] = this; resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; if ( !( --remaining ) ) { - master.resolveWith( resolveContexts, resolveValues ); + primary.resolveWith( resolveContexts, resolveValues ); } }; }; // Single- and empty arguments are adopted like Promise.resolve if ( remaining <= 1 ) { - adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject, + adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, !remaining ); // Use .then() to unwrap secondary thenables (cf. gh-3000) - if ( master.state() === "pending" || + if ( primary.state() === "pending" || isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { - return master.then(); + return primary.then(); } } // Multiple arguments are aggregated like Promise.all array elements while ( i-- ) { - adoptValue( resolveValues[ i ], updateFunc( i ), master.reject ); + adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); } - return master.promise(); + return primary.promise(); } } ); @@ -3943,7 +4172,7 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { // ...except when executing function values } else { bulk = fn; - fn = function( elem, key, value ) { + fn = function( elem, _key, value ) { return bulk.call( jQuery( elem ), value ); }; } @@ -3953,8 +4182,8 @@ var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { for ( ; i < len; i++ ) { fn( elems[ i ], key, raw ? - value : - value.call( elems[ i ], i, fn( elems[ i ], key ) ) + value : + value.call( elems[ i ], i, fn( elems[ i ], key ) ) ); } } @@ -3978,7 +4207,7 @@ var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace() -function fcamelCase( all, letter ) { +function fcamelCase( _all, letter ) { return letter.toUpperCase(); } @@ -4467,6 +4696,26 @@ var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; +var documentElement = document.documentElement; + + + + var isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ); + }, + composed = { composed: true }; + + // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only + // Check attachment across shadow DOM boundaries when possible (gh-3504) + // Support: iOS 10.0-10.2 only + // Early iOS 10 versions support `attachShadow` but not `getRootNode`, + // leading to errors. We need to check for `getRootNode`. + if ( documentElement.getRootNode ) { + isAttached = function( elem ) { + return jQuery.contains( elem.ownerDocument, elem ) || + elem.getRootNode( composed ) === elem.ownerDocument; + }; + } var isHiddenWithinTree = function( elem, el ) { // isHiddenWithinTree might be called from jQuery#filter function; @@ -4481,32 +4730,11 @@ var isHiddenWithinTree = function( elem, el ) { // Support: Firefox <=43 - 45 // Disconnected elements can have computed display: none, so first confirm that elem is // in the document. - jQuery.contains( elem.ownerDocument, elem ) && + isAttached( elem ) && jQuery.css( elem, "display" ) === "none"; }; -var swap = function( elem, options, callback, args ) { - var ret, name, - old = {}; - - // Remember the old values, and insert the new ones - for ( name in options ) { - old[ name ] = elem.style[ name ]; - elem.style[ name ] = options[ name ]; - } - - ret = callback.apply( elem, args || [] ); - - // Revert the old values - for ( name in options ) { - elem.style[ name ] = old[ name ]; - } - - return ret; -}; - - function adjustCSS( elem, prop, valueParts, tween ) { @@ -4523,7 +4751,8 @@ function adjustCSS( elem, prop, valueParts, tween ) { unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), // Starting value computation is required for potential unit mismatches - initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + initialInUnit = elem.nodeType && + ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && rcssNum.exec( jQuery.css( elem, prop ) ); if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { @@ -4670,17 +4899,46 @@ jQuery.fn.extend( { } ); var rcheckableType = ( /^(?:checkbox|radio)$/i ); -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i ); +var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); -// We have to close these tags to support XHTML (#13200) -var wrapMap = { +( function() { + var fragment = document.createDocumentFragment(), + div = fragment.appendChild( document.createElement( "div" ) ), + input = document.createElement( "input" ); + + // Support: Android 4.0 - 4.3 only + // Check state lost if the name is set (#11217) + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Android <=4.1 only + // Older WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE <=11 only + // Make sure textarea (and checkbox) defaultValue is properly cloned + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; // Support: IE <=9 only - option: [ 1, "" ], + // IE <=9 replaces "; + support.option = !!div.lastChild; +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { // XHTML parsers do not magically insert elements in the // same way that tag soup parsers do. So we cannot shorten @@ -4693,12 +4951,14 @@ var wrapMap = { _default: [ 0, "", "" ] }; -// Support: IE <=9 only -wrapMap.optgroup = wrapMap.option; - wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; wrapMap.th = wrapMap.td; +// Support: IE <=9 only +if ( !support.option ) { + wrapMap.optgroup = wrapMap.option = [ 1, "" ]; +} + function getAll( context, tag ) { @@ -4742,7 +5002,7 @@ function setGlobalEval( elems, refElements ) { var rhtml = /<|&#?\w+;/; function buildFragment( elems, context, scripts, selection, ignored ) { - var elem, tmp, tag, wrap, contains, j, + var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, @@ -4806,13 +5066,13 @@ function buildFragment( elems, context, scripts, selection, ignored ) { continue; } - contains = jQuery.contains( elem.ownerDocument, elem ); + attached = isAttached( elem ); // Append to fragment tmp = getAll( fragment.appendChild( elem ), "script" ); // Preserve script evaluation history - if ( contains ) { + if ( attached ) { setGlobalEval( tmp ); } @@ -4831,38 +5091,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) { } -( function() { - var fragment = document.createDocumentFragment(), - div = fragment.appendChild( document.createElement( "div" ) ), - input = document.createElement( "input" ); - - // Support: Android 4.0 - 4.3 only - // Check state lost if the name is set (#11217) - // Support: Windows Web Apps (WWA) - // `name` and `type` must use .setAttribute for WWA (#14901) - input.setAttribute( "type", "radio" ); - input.setAttribute( "checked", "checked" ); - input.setAttribute( "name", "t" ); - - div.appendChild( input ); - - // Support: Android <=4.1 only - // Older WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE <=11 only - // Make sure textarea (and checkbox) defaultValue is properly cloned - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; -} )(); -var documentElement = document.documentElement; - - - -var - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)/; +var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; @@ -4872,8 +5101,19 @@ function returnFalse() { return false; } +// Support: IE <=9 - 11+ +// focus() and blur() are asynchronous, except when they are no-op. +// So expect focus to be synchronous when the element is already active, +// and blur to be synchronous when the element is not already active. +// (focus and blur are always synchronous in other supported browsers, +// this just defines when we can count on it). +function expectSync( elem, type ) { + return ( elem === safeActiveElement() ) === ( type === "focus" ); +} + // Support: IE <=9 only -// See #13393 for more info +// Accessing document.activeElement can throw unexpectedly +// https://bugs.jquery.com/ticket/13393 function safeActiveElement() { try { return document.activeElement; @@ -4956,8 +5196,8 @@ jQuery.event = { special, handlers, type, namespaces, origType, elemData = dataPriv.get( elem ); - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { + // Only attach events to objects that accept data + if ( !acceptData( elem ) ) { return; } @@ -4981,7 +5221,7 @@ jQuery.event = { // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { - events = elemData.events = {}; + events = elemData.events = Object.create( null ); } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { @@ -5139,12 +5379,15 @@ jQuery.event = { dispatch: function( nativeEvent ) { - // Make a writable jQuery.Event from the native event object - var event = jQuery.event.fix( nativeEvent ); - var i, j, ret, matched, handleObj, handlerQueue, args = new Array( arguments.length ), - handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( nativeEvent ), + + handlers = ( + dataPriv.get( this, "events" ) || Object.create( null ) + )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event @@ -5173,9 +5416,10 @@ jQuery.event = { while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { - // Triggered event must either 1) have no namespace, or 2) have namespace(s) - // a subset or equal to those in the bound event (both can have no namespace). - if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + // If the event is namespaced, then each handler is only invoked if it is + // specially universal or its namespaces are a superset of the event's. + if ( !event.rnamespace || handleObj.namespace === false || + event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; @@ -5267,12 +5511,12 @@ jQuery.event = { get: isFunction( hook ) ? function() { if ( this.originalEvent ) { - return hook( this.originalEvent ); + return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { - return this.originalEvent[ name ]; + return this.originalEvent[ name ]; } }, @@ -5299,39 +5543,51 @@ jQuery.event = { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, - focus: { + click: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - this.focus(); - return false; - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; + // Utilize native event to ensure correct state for checkable inputs + setup: function( data ) { + + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Claim the first handler + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + // dataPriv.set( el, "click", ... ) + leverageNative( el, "click", returnTrue ); } + + // Return false to allow normal processing in the caller + return false; }, - delegateType: "focusout" - }, - click: { + trigger: function( data ) { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { - this.click(); - return false; + // For mutual compressibility with _default, replace `this` access with a local var. + // `|| data` is dead code meant only to preserve the variable through minification. + var el = this || data; + + // Force setup before triggering a click + if ( rcheckableType.test( el.type ) && + el.click && nodeName( el, "input" ) ) { + + leverageNative( el, "click" ); } + + // Return non-false to allow normal event-path propagation + return true; }, - // For cross-browser consistency, don't fire native .click() on links + // For cross-browser consistency, suppress native .click() on links + // Also prevent it if we're currently inside a leveraged native-event stack _default: function( event ) { - return nodeName( event.target, "a" ); + var target = event.target; + return rcheckableType.test( target.type ) && + target.click && nodeName( target, "input" ) && + dataPriv.get( target, "click" ) || + nodeName( target, "a" ); } }, @@ -5348,6 +5604,99 @@ jQuery.event = { } }; +// Ensure the presence of an event listener that handles manually-triggered +// synthetic events by interrupting progress until reinvoked in response to +// *native* events that it fires directly, ensuring that state changes have +// already occurred before other listeners are invoked. +function leverageNative( el, type, expectSync ) { + + // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add + if ( !expectSync ) { + if ( dataPriv.get( el, type ) === undefined ) { + jQuery.event.add( el, type, returnTrue ); + } + return; + } + + // Register the controller as a special universal handler for all event namespaces + dataPriv.set( el, type, false ); + jQuery.event.add( el, type, { + namespace: false, + handler: function( event ) { + var notAsync, result, + saved = dataPriv.get( this, type ); + + if ( ( event.isTrigger & 1 ) && this[ type ] ) { + + // Interrupt processing of the outer synthetic .trigger()ed event + // Saved data should be false in such cases, but might be a leftover capture object + // from an async native handler (gh-4350) + if ( !saved.length ) { + + // Store arguments for use when handling the inner native event + // There will always be at least one argument (an event object), so this array + // will not be confused with a leftover capture object. + saved = slice.call( arguments ); + dataPriv.set( this, type, saved ); + + // Trigger the native event and capture its result + // Support: IE <=9 - 11+ + // focus() and blur() are asynchronous + notAsync = expectSync( this, type ); + this[ type ](); + result = dataPriv.get( this, type ); + if ( saved !== result || notAsync ) { + dataPriv.set( this, type, false ); + } else { + result = {}; + } + if ( saved !== result ) { + + // Cancel the outer synthetic event + event.stopImmediatePropagation(); + event.preventDefault(); + + // Support: Chrome 86+ + // In Chrome, if an element having a focusout handler is blurred by + // clicking outside of it, it invokes the handler synchronously. If + // that handler calls `.remove()` on the element, the data is cleared, + // leaving `result` undefined. We need to guard against this. + return result && result.value; + } + + // If this is an inner synthetic event for an event with a bubbling surrogate + // (focus or blur), assume that the surrogate already propagated from triggering the + // native event and prevent that from happening again here. + // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the + // bubbling surrogate propagates *after* the non-bubbling base), but that seems + // less bad than duplication. + } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { + event.stopPropagation(); + } + + // If this is a native event triggered above, everything is now in order + // Fire an inner synthetic event with the original arguments + } else if ( saved.length ) { + + // ...and capture the result + dataPriv.set( this, type, { + value: jQuery.event.trigger( + + // Support: IE <=9 - 11+ + // Extend with the prototype to reset the above stopImmediatePropagation() + jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), + saved.slice( 1 ), + this + ) + } ); + + // Abort handling of the native event + event.stopImmediatePropagation(); + } + } + } ); +} + jQuery.removeEvent = function( elem, type, handle ) { // This "if" is needed for plain objects @@ -5460,6 +5809,7 @@ jQuery.each( { shiftKey: true, view: true, "char": true, + code: true, charCode: true, key: true, keyCode: true, @@ -5476,35 +5826,41 @@ jQuery.each( { targetTouches: true, toElement: true, touches: true, + which: true +}, jQuery.event.addProp ); - which: function( event ) { - var button = event.button; +jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { + jQuery.event.special[ type ] = { - // Add which for key events - if ( event.which == null && rkeyEvent.test( event.type ) ) { - return event.charCode != null ? event.charCode : event.keyCode; - } + // Utilize native event if possible so blur/focus sequence is correct + setup: function() { - // Add which for click: 1 === left; 2 === middle; 3 === right - if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { - if ( button & 1 ) { - return 1; - } + // Claim the first handler + // dataPriv.set( this, "focus", ... ) + // dataPriv.set( this, "blur", ... ) + leverageNative( this, type, expectSync ); - if ( button & 2 ) { - return 3; - } + // Return false to allow normal processing in the caller + return false; + }, + trigger: function() { - if ( button & 4 ) { - return 2; - } + // Force setup before trigger + leverageNative( this, type ); - return 0; - } + // Return non-false to allow normal event-path propagation + return true; + }, - return event.which; - } -}, jQuery.event.addProp ); + // Suppress native focus or blur as it's already being fired + // in leverageNative. + _default: function() { + return true; + }, + + delegateType: delegateType + }; +} ); // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. @@ -5591,13 +5947,6 @@ jQuery.fn.extend( { var - /* eslint-disable max-len */ - - // See https://github.com/eslint/eslint/issues/3229 - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, - - /* eslint-enable */ - // Support: IE <=10 - 11, Edge 12 - 13 only // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ @@ -5634,7 +5983,7 @@ function restoreScript( elem ) { } function cloneCopyEvent( src, dest ) { - var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events; + var i, l, type, pdataOld, udataOld, udataCur, events; if ( dest.nodeType !== 1 ) { return; @@ -5642,13 +5991,11 @@ function cloneCopyEvent( src, dest ) { // 1. Copy private data: events, handlers, etc. if ( dataPriv.hasData( src ) ) { - pdataOld = dataPriv.access( src ); - pdataCur = dataPriv.set( dest, pdataOld ); + pdataOld = dataPriv.get( src ); events = pdataOld.events; if ( events ) { - delete pdataCur.handle; - pdataCur.events = {}; + dataPriv.remove( dest, "handle events" ); for ( type in events ) { for ( i = 0, l = events[ type ].length; i < l; i++ ) { @@ -5684,7 +6031,7 @@ function fixInput( src, dest ) { function domManip( collection, args, callback, ignored ) { // Flatten any nested arrays - args = concat.apply( [], args ); + args = flat( args ); var fragment, first, scripts, hasScripts, node, doc, i = 0, @@ -5756,11 +6103,13 @@ function domManip( collection, args, callback, ignored ) { if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); + if ( jQuery._evalUrl && !node.noModule ) { + jQuery._evalUrl( node.src, { + nonce: node.nonce || node.getAttribute( "nonce" ) + }, doc ); } } else { - DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node ); + DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); } } } @@ -5782,7 +6131,7 @@ function remove( elem, selector, keepData ) { } if ( node.parentNode ) { - if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + if ( keepData && isAttached( node ) ) { setGlobalEval( getAll( node, "script" ) ); } node.parentNode.removeChild( node ); @@ -5794,13 +6143,13 @@ function remove( elem, selector, keepData ) { jQuery.extend( { htmlPrefilter: function( html ) { - return html.replace( rxhtmlTag, "<$1>" ); + return html; }, clone: function( elem, dataAndEvents, deepDataAndEvents ) { var i, l, srcElements, destElements, clone = elem.cloneNode( true ), - inPage = jQuery.contains( elem.ownerDocument, elem ); + inPage = isAttached( elem ); // Fix IE cloning issues if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && @@ -6056,6 +6405,27 @@ var getStyles = function( elem ) { return view.getComputedStyle( elem ); }; +var swap = function( elem, options, callback ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.call( elem ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; +}; + + var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); @@ -6096,8 +6466,10 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); // Support: IE 9 only // Detect overflow:scroll screwiness (gh-3699) + // Support: Chrome <=64 + // Don't get tricked when zoom affects offsetWidth (gh-4029) div.style.position = "absolute"; - scrollboxSizeVal = div.offsetWidth === 36 || "absolute"; + scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; documentElement.removeChild( container ); @@ -6111,7 +6483,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); } var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, - reliableMarginLeftVal, + reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement( "div" ), div = document.createElement( "div" ); @@ -6146,6 +6518,54 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); scrollboxSize: function() { computeStyleTests(); return scrollboxSizeVal; + }, + + // Support: IE 9 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Behavior in IE 9 is more subtle than in newer versions & it passes + // some versions of this test; make sure not to make it pass there! + // + // Support: Firefox 70+ + // Only Firefox includes border widths + // in computed dimensions. (gh-4529) + reliableTrDimensions: function() { + var table, tr, trChild, trStyle; + if ( reliableTrDimensionsVal == null ) { + table = document.createElement( "table" ); + tr = document.createElement( "tr" ); + trChild = document.createElement( "div" ); + + table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; + tr.style.cssText = "border:1px solid"; + + // Support: Chrome 86+ + // Height set through cssText does not get applied. + // Computed height then comes back as 0. + tr.style.height = "1px"; + trChild.style.height = "9px"; + + // Support: Android 8 Chrome 86+ + // In our bodyBackground.html iframe, + // display for all div elements is set to "inline", + // which causes a problem only in Android 8 Chrome 86. + // Ensuring the div is display: block + // gets around this issue. + trChild.style.display = "block"; + + documentElement + .appendChild( table ) + .appendChild( tr ) + .appendChild( trChild ); + + trStyle = window.getComputedStyle( tr ); + reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + + parseInt( trStyle.borderTopWidth, 10 ) + + parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; + + documentElement.removeChild( table ); + } + return reliableTrDimensionsVal; } } ); } )(); @@ -6168,7 +6588,7 @@ function curCSS( elem, name, computed ) { if ( computed ) { ret = computed.getPropertyValue( name ) || computed[ name ]; - if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + if ( ret === "" && !isAttached( elem ) ) { ret = jQuery.style( elem, name ); } @@ -6224,30 +6644,13 @@ function addGetHookIf( conditionFn, hookFn ) { } -var - - // Swappable if display is none or starts with table - // except "table", "table-cell", or "table-caption" - // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display - rdisplayswap = /^(none|table(?!-c[ea]).+)/, - rcustomProp = /^--/, - cssShow = { position: "absolute", visibility: "hidden", display: "block" }, - cssNormalTransform = { - letterSpacing: "0", - fontWeight: "400" - }, - - cssPrefixes = [ "Webkit", "Moz", "ms" ], - emptyStyle = document.createElement( "div" ).style; +var cssPrefixes = [ "Webkit", "Moz", "ms" ], + emptyStyle = document.createElement( "div" ).style, + vendorProps = {}; -// Return a css property mapped to a potentially vendor prefixed property +// Return a vendor-prefixed property or undefined function vendorPropName( name ) { - // Shortcut for names that are not vendor prefixed - if ( name in emptyStyle ) { - return name; - } - // Check for vendor prefixed names var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), i = cssPrefixes.length; @@ -6260,17 +6663,34 @@ function vendorPropName( name ) { } } -// Return a property mapped along what jQuery.cssProps suggests or to -// a vendor prefixed property. +// Return a potentially-mapped jQuery.cssProps or vendor prefixed property function finalPropName( name ) { - var ret = jQuery.cssProps[ name ]; - if ( !ret ) { - ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name; + var final = jQuery.cssProps[ name ] || vendorProps[ name ]; + + if ( final ) { + return final; } - return ret; + if ( name in emptyStyle ) { + return name; + } + return vendorProps[ name ] = vendorPropName( name ) || name; } -function setPositiveNumber( elem, value, subtract ) { + +var + + // Swappable if display is none or starts with table + // except "table", "table-cell", or "table-caption" + // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rcustomProp = /^--/, + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: "0", + fontWeight: "400" + }; + +function setPositiveNumber( _elem, value, subtract ) { // Any relative (+/-) values have already been // normalized at this point @@ -6341,7 +6761,10 @@ function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computed delta - extra - 0.5 - ) ); + + // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter + // Use an explicit zero to avoid NaN (gh-3964) + ) ) || 0; } return delta; @@ -6351,9 +6774,16 @@ function getWidthOrHeight( elem, dimension, extra ) { // Start with computed style var styles = getStyles( elem ), + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). + // Fake content-box until we know it's needed to know the true value. + boxSizingNeeded = !support.boxSizingReliable() || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + valueIsBorderBox = isBorderBox, + val = curCSS( elem, dimension, styles ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - valueIsBorderBox = isBorderBox; + offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); // Support: Firefox <=54 // Return a confounding non-pixel value or feign ignorance, as appropriate. @@ -6364,22 +6794,38 @@ function getWidthOrHeight( elem, dimension, extra ) { val = "auto"; } - // Check for style in case a browser which returns unreliable values - // for getComputedStyle silently falls back to the reliable elem.style - valueIsBorderBox = valueIsBorderBox && - ( support.boxSizingReliable() || val === elem.style[ dimension ] ); - // Fall back to offsetWidth/offsetHeight when value is "auto" - // This happens for inline elements with no explicit setting (gh-3571) - // Support: Android <=4.1 - 4.3 only - // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) - if ( val === "auto" || - !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) { + // Support: IE 9 - 11 only + // Use offsetWidth/offsetHeight for when box sizing is unreliable. + // In those cases, the computed value can be trusted to be border-box. + if ( ( !support.boxSizingReliable() && isBorderBox || + + // Support: IE 10 - 11+, Edge 15 - 18+ + // IE/Edge misreport `getComputedStyle` of table rows with width/height + // set in CSS while `offset*` properties report correct values. + // Interestingly, in some cases IE 9 doesn't suffer from this issue. + !support.reliableTrDimensions() && nodeName( elem, "tr" ) || + + // Fall back to offsetWidth/offsetHeight when value is "auto" + // This happens for inline elements with no explicit setting (gh-3571) + val === "auto" || + + // Support: Android <=4.1 - 4.3 only + // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) + !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && - val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ]; + // Make sure the element is visible & connected + elem.getClientRects().length ) { - // offsetWidth/offsetHeight provide border-box values - valueIsBorderBox = true; + isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // Where available, offsetWidth/offsetHeight approximate border box dimensions. + // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the + // retrieved value as a content box dimension. + valueIsBorderBox = offsetProp in elem; + if ( valueIsBorderBox ) { + val = elem[ offsetProp ]; + } } // Normalize "" and auto @@ -6425,6 +6871,13 @@ jQuery.extend( { "flexGrow": true, "flexShrink": true, "fontWeight": true, + "gridArea": true, + "gridColumn": true, + "gridColumnEnd": true, + "gridColumnStart": true, + "gridRow": true, + "gridRowEnd": true, + "gridRowStart": true, "lineHeight": true, "opacity": true, "order": true, @@ -6480,7 +6933,9 @@ jQuery.extend( { } // If a number was passed in, add the unit (except for certain CSS properties) - if ( type === "number" ) { + // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append + // "px" to a few hardcoded values. + if ( type === "number" && !isCustomProp ) { value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); } @@ -6554,7 +7009,7 @@ jQuery.extend( { } } ); -jQuery.each( [ "height", "width" ], function( i, dimension ) { +jQuery.each( [ "height", "width" ], function( _i, dimension ) { jQuery.cssHooks[ dimension ] = { get: function( elem, computed, extra ) { if ( computed ) { @@ -6570,28 +7025,39 @@ jQuery.each( [ "height", "width" ], function( i, dimension ) { // Running getBoundingClientRect on a disconnected node // in IE throws an error. ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? - swap( elem, cssShow, function() { - return getWidthOrHeight( elem, dimension, extra ); - } ) : - getWidthOrHeight( elem, dimension, extra ); + swap( elem, cssShow, function() { + return getWidthOrHeight( elem, dimension, extra ); + } ) : + getWidthOrHeight( elem, dimension, extra ); } }, set: function( elem, value, extra ) { var matches, styles = getStyles( elem ), - isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box", - subtract = extra && boxModelAdjustment( - elem, - dimension, - extra, - isBorderBox, - styles - ); + + // Only read styles.position if the test has a chance to fail + // to avoid forcing a reflow. + scrollboxSizeBuggy = !support.scrollboxSize() && + styles.position === "absolute", + + // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) + boxSizingNeeded = scrollboxSizeBuggy || extra, + isBorderBox = boxSizingNeeded && + jQuery.css( elem, "boxSizing", false, styles ) === "border-box", + subtract = extra ? + boxModelAdjustment( + elem, + dimension, + extra, + isBorderBox, + styles + ) : + 0; // Account for unreliable border-box dimensions by comparing offset* to computed and // faking a content-box to get border and padding (gh-3699) - if ( isBorderBox && support.scrollboxSize() === styles.position ) { + if ( isBorderBox && scrollboxSizeBuggy ) { subtract -= Math.ceil( elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - parseFloat( styles[ dimension ] ) - @@ -6621,7 +7087,7 @@ jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, swap( elem, { marginLeft: 0 }, function() { return elem.getBoundingClientRect().left; } ) - ) + "px"; + ) + "px"; } } ); @@ -6759,9 +7225,9 @@ Tween.propHooks = { // Use .style if available and use plain properties where available. if ( jQuery.fx.step[ tween.prop ] ) { jQuery.fx.step[ tween.prop ]( tween ); - } else if ( tween.elem.nodeType === 1 && - ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || - jQuery.cssHooks[ tween.prop ] ) ) { + } else if ( tween.elem.nodeType === 1 && ( + jQuery.cssHooks[ tween.prop ] || + tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); } else { tween.elem[ tween.prop ] = tween.now; @@ -7005,7 +7471,7 @@ function defaultPrefilter( elem, props, opts ) { anim.done( function() { - /* eslint-enable no-loop-func */ + /* eslint-enable no-loop-func */ // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { @@ -7125,7 +7591,7 @@ function Animation( elem, properties, options ) { tweens: [], createTween: function( prop, end ) { var tween = jQuery.Tween( elem, animation.opts, prop, end, - animation.opts.specialEasing[ prop ] || animation.opts.easing ); + animation.opts.specialEasing[ prop ] || animation.opts.easing ); animation.tweens.push( tween ); return tween; }, @@ -7298,7 +7764,8 @@ jQuery.fn.extend( { anim.stop( true ); } }; - doAnimation.finish = doAnimation; + + doAnimation.finish = doAnimation; return empty || optall.queue === false ? this.each( doAnimation ) : @@ -7316,7 +7783,7 @@ jQuery.fn.extend( { clearQueue = type; type = undefined; } - if ( clearQueue && type !== false ) { + if ( clearQueue ) { this.queue( type || "fx", [] ); } @@ -7399,7 +7866,7 @@ jQuery.fn.extend( { } } ); -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) { +jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { var cssFn = jQuery.fn[ name ]; jQuery.fn[ name ] = function( speed, easing, callback ) { return speed == null || typeof speed === "boolean" ? @@ -7620,7 +8087,7 @@ boolHook = { } }; -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { var getter = attrHandle[ name ] || jQuery.find.attr; attrHandle[ name ] = function( elem, name, isXML ) { @@ -7938,8 +8405,8 @@ jQuery.fn.extend( { if ( this.setAttribute ) { this.setAttribute( "class", className || value === false ? - "" : - dataPriv.get( this, "__className__" ) || "" + "" : + dataPriv.get( this, "__className__" ) || "" ); } } @@ -7954,7 +8421,7 @@ jQuery.fn.extend( { while ( ( elem = this[ i++ ] ) ) { if ( elem.nodeType === 1 && ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { - return true; + return true; } } @@ -8244,7 +8711,7 @@ jQuery.extend( jQuery.event, { special.bindType || type; // jQuery handler - handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] && + handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && dataPriv.get( cur, "handle" ); if ( handle ) { handle.apply( cur, data ); @@ -8355,7 +8822,10 @@ if ( !support.focusin ) { jQuery.event.special[ fix ] = { setup: function() { - var doc = this.ownerDocument || this, + + // Handle: regular nodes (via `this.ownerDocument`), window + // (via `this.document`) & document (via `this`). + var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ); if ( !attaches ) { @@ -8364,7 +8834,7 @@ if ( !support.focusin ) { dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); }, teardown: function() { - var doc = this.ownerDocument || this, + var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access( doc, fix ) - 1; if ( !attaches ) { @@ -8380,7 +8850,7 @@ if ( !support.focusin ) { } var location = window.location; -var nonce = Date.now(); +var nonce = { guid: Date.now() }; var rquery = ( /\?/ ); @@ -8388,7 +8858,7 @@ var rquery = ( /\?/ ); // Cross-browser xml parsing jQuery.parseXML = function( data ) { - var xml; + var xml, parserErrorElem; if ( !data || typeof data !== "string" ) { return null; } @@ -8397,12 +8867,17 @@ jQuery.parseXML = function( data ) { // IE throws on parseFromString with invalid input. try { xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); - } catch ( e ) { - xml = undefined; - } + } catch ( e ) {} - if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) { - jQuery.error( "Invalid XML: " + data ); + parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; + if ( !xml || parserErrorElem ) { + jQuery.error( "Invalid XML: " + ( + parserErrorElem ? + jQuery.map( parserErrorElem.childNodes, function( el ) { + return el.textContent; + } ).join( "\n" ) : + data + ) ); } return xml; }; @@ -8468,6 +8943,10 @@ jQuery.param = function( a, traditional ) { encodeURIComponent( value == null ? "" : value ); }; + if ( a == null ) { + return ""; + } + // If an array was passed in, assume that it is an array of form elements. if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { @@ -8499,16 +8978,14 @@ jQuery.fn.extend( { // Can add propHook for "elements" to filter or add form elements var elements = jQuery.prop( this, "elements" ); return elements ? jQuery.makeArray( elements ) : this; - } ) - .filter( function() { + } ).filter( function() { var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works return this.name && !jQuery( this ).is( ":disabled" ) && rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && ( this.checked || !rcheckableType.test( type ) ); - } ) - .map( function( i, elem ) { + } ).map( function( _i, elem ) { var val = jQuery( this ).val(); if ( val == null ) { @@ -8561,7 +9038,8 @@ var // Anchor tag for parsing the document origin originAnchor = document.createElement( "a" ); - originAnchor.href = location.href; + +originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport function addToPrefiltersOrTransports( structure ) { @@ -8942,8 +9420,8 @@ jQuery.extend( { // Context for global events is callbackContext if it is a DOM node or jQuery collection globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ? - jQuery( callbackContext ) : - jQuery.event, + jQuery( callbackContext ) : + jQuery.event, // Deferreds deferred = jQuery.Deferred(), @@ -8970,12 +9448,14 @@ jQuery.extend( { if ( !responseHeaders ) { responseHeaders = {}; while ( ( match = rheaders.exec( responseHeadersString ) ) ) { - responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ]; + responseHeaders[ match[ 1 ].toLowerCase() + " " ] = + ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) + .concat( match[ 2 ] ); } } - match = responseHeaders[ key.toLowerCase() ]; + match = responseHeaders[ key.toLowerCase() + " " ]; } - return match == null ? null : match; + return match == null ? null : match.join( ", " ); }, // Raw string @@ -9119,7 +9599,8 @@ jQuery.extend( { // Add or update anti-cache param if needed if ( s.cache === false ) { cacheURL = cacheURL.replace( rantiCache, "$1" ); - uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached; + uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + + uncached; } // Put hash and anti-cache on the URL that will be requested (gh-1732) @@ -9252,6 +9733,13 @@ jQuery.extend( { response = ajaxHandleResponses( s, jqXHR, responses ); } + // Use a noop converter for missing script but not if jsonp + if ( !isSuccess && + jQuery.inArray( "script", s.dataTypes ) > -1 && + jQuery.inArray( "json", s.dataTypes ) < 0 ) { + s.converters[ "text script" ] = function() {}; + } + // Convert no matter what (that way responseXXX fields are always set) response = ajaxConvert( s, response, jqXHR, isSuccess ); @@ -9342,7 +9830,7 @@ jQuery.extend( { } } ); -jQuery.each( [ "get", "post" ], function( i, method ) { +jQuery.each( [ "get", "post" ], function( _i, method ) { jQuery[ method ] = function( url, data, callback, type ) { // Shift arguments if data argument was omitted @@ -9363,8 +9851,17 @@ jQuery.each( [ "get", "post" ], function( i, method ) { }; } ); +jQuery.ajaxPrefilter( function( s ) { + var i; + for ( i in s.headers ) { + if ( i.toLowerCase() === "content-type" ) { + s.contentType = s.headers[ i ] || ""; + } + } +} ); + -jQuery._evalUrl = function( url ) { +jQuery._evalUrl = function( url, options, doc ) { return jQuery.ajax( { url: url, @@ -9374,7 +9871,16 @@ jQuery._evalUrl = function( url ) { cache: true, async: false, global: false, - "throws": true + + // Only evaluate the response if it is successful (gh-4126) + // dataFilter is not invoked for failure responses, so using it instead + // of the default converter is kludgy but it works. + converters: { + "text script": function() {} + }, + dataFilter: function( response ) { + jQuery.globalEval( response, options, doc ); + } } ); }; @@ -9657,24 +10163,21 @@ jQuery.ajaxPrefilter( "script", function( s ) { // Bind script tag hack transport jQuery.ajaxTransport( "script", function( s ) { - // This transport only deals with cross domain requests - if ( s.crossDomain ) { + // This transport only deals with cross domain or forced-by-attrs requests + if ( s.crossDomain || s.scriptAttrs ) { var script, callback; return { send: function( _, complete ) { - script = jQuery( " - - - - + + + + About Eggdrop — Eggdrop 1.9.5 documentation + + + + + - + + +
@@ -164,7 +162,7 @@

About Eggdrop
- previous | next @@ -176,9 +174,9 @@

About Eggdrop

diff --git a/doc/html/about/legal.html b/doc/html/about/legal.html index 29a4e2838..118cf44cf 100644 --- a/doc/html/about/legal.html +++ b/doc/html/about/legal.html @@ -1,29 +1,24 @@ - + - + - - - Boring legal stuff — Eggdrop 1.9.4 documentation - - - - - - - + + + + Boring legal stuff — Eggdrop 1.9.5 documentation + + + + +
@@ -374,9 +393,9 @@

Where to find more help
@@ -384,4 +403,4 @@

Where to find more help - \ No newline at end of file + diff --git a/doc/html/install/install.html b/doc/html/install/install.html index d6ce5d245..ced86fd5e 100644 --- a/doc/html/install/install.html +++ b/doc/html/install/install.html @@ -1,30 +1,25 @@ - + - + - - - Installing Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Installing Eggdrop — Eggdrop 1.9.5 documentation + + + + + +Copyright (C) 1999 - 2023 Eggheads Development Team

+ + +
@@ -326,9 +339,9 @@

Obtaining Help
diff --git a/doc/html/install/upgrading.html b/doc/html/install/upgrading.html index 7a2842f4b..165962f46 100644 --- a/doc/html/install/upgrading.html +++ b/doc/html/install/upgrading.html @@ -1,30 +1,25 @@ - + - + - - - Upgrading Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Upgrading Eggdrop — Eggdrop 1.9.5 documentation + + + + + @@ -190,9 +186,9 @@

Documentation
diff --git a/doc/html/modules/assoc.html b/doc/html/modules/assoc.html index 913d65c1f..e00b9a19d 100644 --- a/doc/html/modules/assoc.html +++ b/doc/html/modules/assoc.html @@ -102,7 +102,7 @@

Search

loadmodule assoc
 
-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/blowfish.html b/doc/html/modules/blowfish.html index 380aaeb33..cc7a9c8da 100644 --- a/doc/html/modules/blowfish.html +++ b/doc/html/modules/blowfish.html @@ -128,7 +128,7 @@

Search

loadmodule blowfish
 
-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/channels.html b/doc/html/modules/channels.html index aa81acf05..bc267dc1e 100644 --- a/doc/html/modules/channels.html +++ b/doc/html/modules/channels.html @@ -504,7 +504,7 @@

Search

}

-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/compress.html b/doc/html/modules/compress.html index 81954ac85..f73333233 100644 --- a/doc/html/modules/compress.html +++ b/doc/html/modules/compress.html @@ -137,7 +137,7 @@

Search

as those used by GNU gzip. -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/console.html b/doc/html/modules/console.html index 1a7aa30e5..fea12a5fd 100644 --- a/doc/html/modules/console.html +++ b/doc/html/modules/console.html @@ -139,7 +139,7 @@

Search

when they join a botnet channel. -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/ctcp.html b/doc/html/modules/ctcp.html index d4616277a..1f1926884 100644 --- a/doc/html/modules/ctcp.html +++ b/doc/html/modules/ctcp.html @@ -156,7 +156,7 @@

Search

There are also several variables to help make your bot less noticeable. They are: ctcp-version, ctcp-finger, and ctcp-userinfo. You can use set to set them to values you’d like.

-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/dns.html b/doc/html/modules/dns.html index a772c22c2..6450379bc 100644 --- a/doc/html/modules/dns.html +++ b/doc/html/modules/dns.html @@ -152,7 +152,7 @@

Search

the query. The value must be in seconds. -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/filesys.html b/doc/html/modules/filesys.html index 11096914d..9574e8bcc 100644 --- a/doc/html/modules/filesys.html +++ b/doc/html/modules/filesys.html @@ -309,7 +309,7 @@

.optimize

.unhide

@@ -332,7 +332,7 @@

.filesys moduleSearch

for potential ways to implement this setting. -

Copyright (C) 2019 - 2022 Eggheads Development Team

+

Copyright (C) 2019 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/included.html b/doc/html/modules/included.html index edffbdbbc..4af3d9154 100644 --- a/doc/html/modules/included.html +++ b/doc/html/modules/included.html @@ -1,30 +1,25 @@ - + - + - - - Modules included with Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Modules included with Eggdrop — Eggdrop 1.9.5 documentation + + + + +
diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index 473290a3f..a52851467 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -1,30 +1,25 @@ - + - + - - - Assoc Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Assoc Module — Eggdrop 1.9.5 documentation + + + + + +

Copyright (C) 2000 - 2023 Eggheads Development Team

+ + + +
@@ -364,9 +381,9 @@

.filesys module
diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 5cfcd7cad..854645660 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -1,30 +1,25 @@ - + - + - - - Ident Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Ident Module — Eggdrop 1.9.5 documentation + + + + + @@ -289,9 +292,9 @@

Search

diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index f27bedad9..55227968f 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -1,30 +1,25 @@ - + - + - - - Notes Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Notes Module — Eggdrop 1.9.5 documentation + + + + + @@ -181,9 +179,9 @@

Search

diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index b02d7e06e..7ca50bc9d 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -1,30 +1,25 @@ - + - + - - - PBKDF2 Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + PBKDF2 Module — Eggdrop 1.9.5 documentation + + + + +
diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index 45993ea2a..971d5676d 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -1,34 +1,29 @@ - + - + - - - Uptime Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Uptime Module — Eggdrop 1.9.5 documentation + + + + + - + @@ -39,13 +34,13 @@ @@ -156,7 +154,7 @@

Search

@@ -166,9 +164,9 @@

Search

diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index b9b05d0a4..53d098b1a 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -1,30 +1,25 @@ - + - + - - - Woobie Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Woobie Module — Eggdrop 1.9.5 documentation + + + + + -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/pbkdf2.html b/doc/html/modules/pbkdf2.html index b3fc92f1c..7cbf42856 100644 --- a/doc/html/modules/pbkdf2.html +++ b/doc/html/modules/pbkdf2.html @@ -145,7 +145,7 @@

Search

Number of rounds. The higher the number, the longer hashing takes; but also generally the higher the protection against brute force attacks.

This module requires: none

-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/seen.html b/doc/html/modules/seen.html index b0193ec2c..3ba76754a 100644 --- a/doc/html/modules/seen.html +++ b/doc/html/modules/seen.html @@ -126,7 +126,7 @@

Search

loadmodule seen
 
-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/server.html b/doc/html/modules/server.html index c5c67c42d..5a9c69c01 100644 --- a/doc/html/modules/server.html +++ b/doc/html/modules/server.html @@ -344,7 +344,7 @@

Search

Eggdrop is 32. -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/share.html b/doc/html/modules/share.html index 4afc6f660..593929171 100644 --- a/doc/html/modules/share.html +++ b/doc/html/modules/share.html @@ -156,7 +156,7 @@

Search

are v1.5.1 or higher. -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/transfer.html b/doc/html/modules/transfer.html index 19d88ea4f..325d7a271 100644 --- a/doc/html/modules/transfer.html +++ b/doc/html/modules/transfer.html @@ -151,7 +151,7 @@

Search

be v1.9.0 or higher). -

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/twitch.html b/doc/html/modules/twitch.html index f8dfb3c13..bc21cddcf 100644 --- a/doc/html/modules/twitch.html +++ b/doc/html/modules/twitch.html @@ -163,7 +163,7 @@

Partyline commandsSearch

loadmodule uptime
 
-

Copyright (C) 2001 - 2022 Eggheads Development Team

+

Copyright (C) 2001 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/woobie.html b/doc/html/modules/woobie.html index 1076d3c2b..02f5b6c8b 100644 --- a/doc/html/modules/woobie.html +++ b/doc/html/modules/woobie.html @@ -125,7 +125,7 @@

Search

loadmodule woobie
 
-

Copyright (C) 2000 - 2022 Eggheads Development Team

+

Copyright (C) 2000 - 2023 Eggheads Development Team

diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index db0584e67..7789198fa 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -1,34 +1,29 @@ - + - + - - - Writing an Eggdrop Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + How to Write an Eggdrop Module — Eggdrop 1.9.5 documentation + + + + + - +
@@ -39,13 +34,13 @@ + + +
@@ -417,7 +413,7 @@

What to do with a module? previous | - next
@@ -427,9 +423,9 @@

What to do with a module?

diff --git a/doc/html/objects.inv b/doc/html/objects.inv index 769b0721e..e31c384a3 100644 Binary files a/doc/html/objects.inv and b/doc/html/objects.inv differ diff --git a/doc/html/search.html b/doc/html/search.html index abcccf546..8eb843f1b 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -1,37 +1,28 @@ - + - + - - - Search — Eggdrop 1.9.4 documentation - - + + + Search — Eggdrop 1.9.5 documentation + + - - - - - - + + + + + - - - + @@ -42,13 +33,13 @@ @@ -146,9 +147,9 @@

Search

diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 4857dc0ce..c047bfa80 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about/about","about/legal","index","install/install","install/readme","install/upgrading","modules/included","modules/index","modules/mod/assoc","modules/mod/blowfish","modules/mod/channels","modules/mod/compress","modules/mod/console","modules/mod/ctcp","modules/mod/dns","modules/mod/filesys","modules/mod/ident","modules/mod/irc","modules/mod/notes","modules/mod/pbkdf2","modules/mod/seen","modules/mod/server","modules/mod/share","modules/mod/transfer","modules/mod/twitch","modules/mod/uptime","modules/mod/woobie","modules/writing","tutorials/firstscript","tutorials/firststeps","tutorials/setup","tutorials/tlssetup","using/accounts","using/bans","using/botnet","using/core","using/features","using/ipv6","using/ircv3","using/partyline","using/patch","using/pbkdf2info","using/tcl-commands","using/text-sub","using/tls","using/tricks","using/twitch-tcl-commands","using/twitchinfo","using/users"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["about/about.rst","about/legal.rst","index.rst","install/install.rst","install/readme.rst","install/upgrading.rst","modules/included.rst","modules/index.rst","modules/mod/assoc.rst","modules/mod/blowfish.rst","modules/mod/channels.rst","modules/mod/compress.rst","modules/mod/console.rst","modules/mod/ctcp.rst","modules/mod/dns.rst","modules/mod/filesys.rst","modules/mod/ident.rst","modules/mod/irc.rst","modules/mod/notes.rst","modules/mod/pbkdf2.rst","modules/mod/seen.rst","modules/mod/server.rst","modules/mod/share.rst","modules/mod/transfer.rst","modules/mod/twitch.rst","modules/mod/uptime.rst","modules/mod/woobie.rst","modules/writing.rst","tutorials/firstscript.rst","tutorials/firststeps.rst","tutorials/setup.rst","tutorials/tlssetup.rst","using/accounts.rst","using/bans.rst","using/botnet.rst","using/core.rst","using/features.rst","using/ipv6.rst","using/ircv3.rst","using/partyline.rst","using/patch.rst","using/pbkdf2info.rst","using/tcl-commands.rst","using/text-sub.rst","using/tls.rst","using/tricks.rst","using/twitch-tcl-commands.rst","using/twitchinfo.rst","using/users.rst"],objects:{},objnames:{},objtypes:{},terms:{"04may2000":35,"3rd":5,"5c0":[21,30,35],"break":[15,42],"byte":[17,21,23,27,42],"case":[14,19,21,28,30,32,35,42],"catch":42,"char":[27,35,42],"const":27,"default":[2,3,4,10,11,14,15,17,21,23,29,30,31,32,33,35,41,42,44],"export":45,"final":[0,4,28,29,30,35,41],"function":[0,1,2,4,6,7,19,24,30,34,35,37,41,42,45,46],"import":[27,28,29,30,32,35,39,42],"int":27,"long":[6,10,14,18,21,22,33,35,42,43,46],"new":[4,5,7,19,24,28,29,30,32,35,36,37,38,39,40,41,44,45,47],"null":27,"public":[0,1,4,28,29,31,35,42,44,45,48],"return":[17,27,32,41,46],"short":[2,27,29,37,44],"static":[2,3,10,27,29,42],"super":2,"switch":[5,27,30,32,35,42,44,45],"throw":42,"true":28,"try":[3,4,6,7,20,21,25,27,28,29,30,32,35,46],"var":42,"void":27,"while":[0,4,5,10,16,24,30,32,33,35,39,41,42,47],AND:[19,30,42],ARE:28,Adding:[2,24,47],And:28,CVS:4,DNS:[2,6,42],DOING:28,For:[1,2,3,5,7,15,21,30,31,34,35,37,38,39,41,42,44,45,46,47],IPs:[29,31,37],NFS:23,NOT:[5,28,30,32,34,35,42,46],Not:[6,21,29,38],One:[0,4,28,32,42],THE:3,TLS:[2,3,4,5,29,30,35,42],That:[24,28,30,34,42,48],The:[0,1,2,3,4,5,6,10,11,13,14,15,16,19,21,22,23,24,25,27,28,29,31,32,33,34,35,36,38,41,42,44,45,46,47,48],Their:37,Then:[5,29,30,44],There:[1,3,4,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,29,31,32,33,35,37,41,43,44,47,48],These:[5,11,17,27,30,32,33,34,35,37,43,44,46,48],Use:[16,17,19,21,27,30,35,42],Used:42,Useful:42,Using:[2,4,27,42],WILL:46,With:[0,4,6,15,34,35,41,42,44],YES:7,Yes:7,aaa:[],abcdechannel:42,abil:[2,7,16,31,32,36,42],abl:[3,6,10,15,17,21,30,32,35,39,41,42],abort:[23,30,42,44],about:[2,4,6,24,25,27,28,29,35,42,45,47],abov:[1,4,10,17,19,27,28,29,36,42,43],absolut:[0,31,42,48],abus:[0,2,4],accept:[15,22,24,31,34,35,42,44,47],access:[0,4,16,21,27,28,29,30,36,39,41,42,44,46,47,48],accomplish:3,accord:[1,42,48],accordingli:21,account:[0,2,4,16,18,27,29,30,36,38,40,41,47],accur:[32,42,46],accuraci:32,across:[0,4,34,38,40,42,45],act:[16,27,35,36,42,44],action:[28,29,31,35,42],activ:[2,10,16,30,32,33,39,42,44],actual:[0,4,15,27,28,31,35,39,42],acut:[],add:[3,4,5,7,10,16,17,24,27,28,30,31,32,34,35,36,41,47],add_builtin:27,add_hook:27,add_tcl_command:27,add_tcl_int:27,add_tcl_str:27,added:[0,3,4,5,19,22,24,28,30,32,34,35,36,37,38,41,42,44,46],addhost:17,adding:[4,7,21,27,35,36,38,42],addit:[2,4,5,16,21,30,35,42,44,46],addition:[16,30,32,42],addlang:[35,42],address:[18,22,25,30,34,35,37,44],addus:30,adh:35,adjust:[0,4,17],admin:[35,43],admit:23,advanc:[0,2,4,6,20,28,36],advantag:[5,30,45],advertis:[0,4,42],advis:[3,21,23],affect:[5,10,24,35,36,37,42,47],affet:42,affili:[1,47],after:[3,4,10,16,17,21,27,28,29,32,33,35,42,44,45,47],afterward:[17,35],again:[6,15,25,27,33,34,35,41,42,46],against:[10,15,19,21,28,30,41,42,46],age:42,aggress:34,aka:35,alarm:42,alert:[32,47],algorithm:[19,41],all:[1,5,6,7,10,13,14,15,17,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,44,45,46,47,48],alloc:[27,42],allow:[0,3,4,5,6,7,10,11,15,16,17,18,19,21,22,23,24,27,28,29,30,32,34,35,36,41,42,44,45,47],alltool:35,almost:[0,4,30,33,48],along:[4,15],alphabet:35,alphanumer:47,alreadi:[10,21,27,28,30,31,32,34,35,41,42,47],also:[0,2,3,4,7,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,29,30,33,34,35,36,39,41,42,43,44,45,46,47,48],alt:[21,35],alter:[15,36,42,47],altern:[2,4,16,21,30,31,34,35,42,44],although:[17,30,35,42],altnick:[21,30],altogeth:19,alwai:[0,3,4,10,30,32,33,35,42],amount:[6,35],anachron:31,ani:[0,1,3,4,5,7,12,15,16,17,18,21,22,24,27,28,29,30,33,35,36,39,41,42,44,46,47,48],annoi:28,announc:32,anonym:35,anoth:[0,10,15,17,18,21,22,27,30,34,35,42,43,46],another:5,ansi:42,answer:[0,7,13,16,21,28],any_other_funct:27,anymor:[6,9,19,35],anyon:[10,33,42],anyth:[0,4,15,28,29,30,34,35,39,42,46],anywai:35,anywher:[39,42],aol:[28,41],aop:10,apart:[27,35],api:6,apostroph:39,appear:[29,30,34,35,42,46],append:[27,42],appli:[30,33,35,41,48],applic:[1,35,42],appreci:31,appropri:[3,5,30,35,38,40,41],april:[24,46],apt:[30,31],arbitrari:42,arbitrarili:46,archiv:4,area:[6,15,35,42,45,48],aren:[30,35,42,45,46],arg:27,argument:[15,17,28,29,37,42,46],around:[0,4,24,31,37,42,47],arriv:42,ascii:42,ask:[4,17,29,30,39,42,44],assign:[34,35,42],assist:[2,30,32,44],assoc:[2,6],associ:[24,32,42,47],assum:[21,28,30,31,32,33,35,42],assumpt:38,assur:46,asynchron:[6,14,42],attach:[32,42,46],attack:[10,19,41],attempt:[5,10,16,17,21,24,31,32,33,34,35,42,44,47],attent:[5,21,32,42],attribut:[33,34,42,48],auch:27,aug:42,august:17,auth:[35,44],authent:[2,32,41,42,47],author:[28,31,35,44],auto:[34,48],autobotchk:[3,4,29],autoconf:3,autoconfigur:3,autodetect:44,autohalfop:10,autom:[0,2,4],automat:[2,3,4,5,12,16,21,30,32,33,34,35,36,37,41,42,44,47,48],autoop:10,autosav:12,autovoic:[10,48],avail:[4,10,15,19,25,27,29,30,31,35,36,37,39,42,47],avoid:[6,14,29],awai:[36,38,42],awar:42,awesom:28,b33f:30,baa:42,back:[21,28,30,35,37,40,41,42,45],background:[2,4,28],backslash:30,backup:[5,27],backward:[5,38],bad:[10,42,48],badg:48,badgui:46,ban:[0,2,4,10,17,24,34,35,36,47,48],bandwidth:[6,11],banner:[35,43],bar:42,barr:35,base64:29,base:[4,30,32,35,41,42],basi:30,basic:[2,4,6,7,20,28,30],bask:40,bbb:[],bcst:42,bear:1,becaus:[0,4,16,21,27,28,35,42,45,46,47],becom:[29,30,35,42],been:[0,1,4,5,15,17,21,27,33,35,36,42,46],beerbot:32,befor:[0,4,10,14,16,17,18,21,22,23,27,29,30,32,34,35,42,47],began:38,begin:[16,28,37,42],behalf:42,behav:42,behavior:[13,17,33,35,37,42],behind:35,being:[0,4,10,15,17,21,31,32,36,37,42,46],beldin:34,bell:42,belong:35,below:[10,15,16,22,24,27,28,30,35,41,42,46],best:[2,3,6,16,30,34,42,46],better:[3,4,6,20,30,35],between:[3,6,10,15,18,21,22,31,32,34,35,37,42],beverag:41,big:[5,23,42,45],binari:[3,31],bind:[2,16,17,21,24,27,28,32,35,45,47],birthdai:35,bit:[3,15,24,28,30,31,35,42,44,47],bitch:10,bitchx:42,blank:42,bless:1,blindli:17,bloat:7,block:[23,24,27,30,43,47],blowfish:[1,2,5,6,19,27,35,41,42],bodi:28,bogu:35,bold:[4,42,43,48],boldfac:42,boot:35,bore:[2,4],boston:1,bot:[0,1,3,4,5,6,7,10,12,13,14,16,17,18,19,20,21,22,23,25,27,28,29,30,31,33,35,36,37,38,39,41,43,44,45,46,47,48],bota:34,botaddr:42,botaddress:42,botattr:34,botb:34,botc:34,botchk:[4,29,30],botdir:30,botfl:42,botflag:[2,22],both:[0,4,10,21,23,31,32,34,37,41,42,44],botnam:34,botnet:[0,2,3,4,6,8,10,12,15,21,25,30,36,37,39,41,42,45,48],botnetcentr:43,botnetnick:42,botnetop:10,botnick:[21,28,29,30,35],bottom:28,bottre:2,bounc:17,bound:[16,35,42],boundari:14,box:[30,35],brace:10,bracket:37,branch:[4,40],breach:42,brief:30,broadcast:[24,39,42,46,47],broken:[15,28,35,42],brows:15,brute:19,buf:17,buffer:22,bug:[0,3,4,28,30,40],build:42,built:[2,16,42,45],builtin:[16,42],busi:28,button:[40,47],bypass:42,bywho:42,cach:[14,42],cafil:[35,44],calcul:21,call:[0,3,4,27,28,29,34,35,42,46],callback:32,can:[0,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],cancel:[6,42],cannot:[0,27,30,32,41,42,48],cap:[2,27,32,36,47],cap_net_bind_servic:16,capabl:[2,35,36,42,45,47],capac:47,capath:[35,44],capit:[4,48],caption:[],captur:[30,42,45],care:[35,42,47],carefulli:[30,42],carelessli:5,categori:42,caught:42,caus:[16,30,34,42,45],caution:42,cbc:42,ccht:46,center:43,central:[15,35],cerfif:[],cert:[29,35,44],certain:[33,35,36,37,42,43,46,48],certainli:[24,30,47],certif:[2,3,21,29,31,35,42],certifict:44,cet:35,chaddr:[5,34],chain:[35,44],challeng:[28,29],chan:[5,10,17,28,29,30,45],chanc:30,chanfil:[10,30,45],chang:[1,2,6,9,10,15,17,19,21,22,24,28,30,31,34,35,36,38,39,40,44,46,47],chaninfo:[29,34],chanmod:[10,29],channel:[0,2,4,5,6,8,12,17,20,21,22,24,27,28,30,32,33,34,35,36,39,43,45,47,48],channelflag:42,chanrec:[17,42],chanserv:10,chanset:[10,29,34],charact:[2,10,15,21,30,34,35,37,41],chase:[0,4],chat4:2,chat6:2,chat:[0,2,4,6,13,21,29,30,34,35,36,39,42,44,46,47],chatter:35,chattr:[29,48],check:[2,4,5,10,21,27,28,29,31,35,41,42,44,46],checkout:[30,40],chfinger:35,chghost:[36,38],chjn:42,chmod:[3,35],chof:42,choic:[1,21,28],chon:42,choos:[3,7,29,30,35,36,47],chpass:41,chpt:42,chri:1,chunk:21,cidr:[35,42],cipher:[35,42,44],claim:[24,47],clarifi:33,clean:15,clear:[4,6,40,42,44,46,47],clearchat:[24,46],clearmsg:[24,46],cleartext:42,clemson:48,click:[40,47],client:[15,16,21,24,29,30,32,35,38,42,44,47],cloak:29,clone:[2,4,10,30],close:[27,42],cmd:[35,42],cmd_t:27,cmsg:46,code:[1,2,3,4,7,27,28,42],coder:[],col:43,cold:[40,41],colon:[35,37],color:[4,42],column:43,com:[2,4,5,6,20,21,28,29,30,34,35,41,42,44],combin:[36,42],combo:29,come:[4,6,17,21,30,40,42],comfort:30,comma:[35,39,42],commadlin:30,command:[2,3,6,10,12,15,16,17,20,21,27,28,29,30,31,32,33,34,35,36,37,39,41,44,47,48],commandlin:30,comment:[15,17,25,28,30,35,41],commerci:30,common:[2,21,30,31,34,35,38,44,48],commonli:[29,31,35,42],commun:[2,27,34,39,40,42],compat:[3,5,38,42,46,47],compil:[0,2,3,4,27,30,31,35,37,42,44],complet:[3,4,10,15,22,30,36,42,44,48],compliant:[17,21,42],compon:42,comprehens:46,compress:[2,6,29],compris:38,concurr:[35,41],conf:[3,7,16,29,30,38,42,44],config:[2,3,4,6,7,10,11,12,13,14,16,17,18,19,21,22,23,24,25,27,28,29,31,32,33,34,35,37,41,43,44],configfil:42,configur:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,35,37,40,42,44],confirm:[40,42],conflict:16,confus:42,connect:[2,4,5,6,14,15,16,21,24,27,29,30,34,35,37,39,44,47,48],connet:[],consequ:46,consid:[4,30,32,33,35,39,42],consider:41,consist:[34,36,39,42],consol:[2,4,6,10,27,36,39],constantli:27,constitut:[10,21,35],consult:[37,38,44],contact:[28,35],contain:[1,3,4,5,28,30,32,34,35,37,42,44,46],content:[41,42,46],contest:6,context:27,continu:[30,42],contribut:40,control:[0,2,4,17,21,28,29,34,35,36,44,47,48],conv_form:29,conveni:35,convers:[27,39,44],convert:42,cooldud:30,coordin:35,copi:[1,2,5,7,15,23,27,30,42],copyright:[0,1,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],core:[2,3,6,7,17,18,21,27,28,42,45],correct:[3,31,35,41],correctli:[3,42],correspond:[10,29,33,42],cos:10,could:[1,21,28,34,35,37,40,41,42,44,47],couldn:42,count:21,counterpart:42,coupl:42,cours:[3,28,34,35,42],cover:[32,33,34],cpu:[21,35,42],crappi:42,crash:[3,42],creat:[0,3,4,15,16,22,27,28,29,30,33,35,40,41,42,44,45,47],creation:[29,32],credit:[28,42],cron:42,crontab:[2,3,29,42],cross:30,crotab:[],crt:[29,35,44],crypto:41,cryptograph:[19,41,42],crytopgraphi:41,ctcp:[2,6,10,21,29,30,35,42,44],ctcr:42,ctrl:42,curl:30,current:[2,4,6,7,9,15,17,18,19,24,27,29,30,32,35,36,39,42,43,44,46],custom:[16,21,28,29,32,36,42,44],cut:29,cycl:[10,21,35],cygwin:[2,37],daemon:[16,29,35],dai:[18,23,35,42,45],daili:[30,42],dalnet:[4,17,21],danc:42,danger:42,danish:35,data:[4,10,22,27,31,41,42],databas:[15,42],date:[1,4,30,32,35,42],db8:[21,30,35],dcc:[0,2,4,6,15,20,21,23,27,29,30,34,36,37,39,41,45],dead:30,deal:[35,42,48],dealloc:27,deauthent:32,debian:[30,31],debug:[3,25,27,28,35,42,44,46],dec:[15,42],decemb:[0,26,36,39],decent:27,decid:[38,41],decis:47,declar:[28,42],decreas:35,defens:28,defin:[4,6,10,11,13,17,21,27,28,30,32,33,34,35,38,42,48],definit:[28,30,31,41],degrad:47,dehalfop:[10,42,48],del_hook:27,delai:[10,15,17,28],delet:[30,42,45],deliber:44,delimit:42,deliv:42,demand:[0,4],demonstr:[6,26,42],denot:[31,42],deop:[10,42,48],depend:[27,32,33,40,42,44,48],deprec:[5,31,42],deprici:21,depth:[35,44],der:29,deriv:41,desc:[6,27],describ:[27,28,30,31,34,35],descript:[6,27,28,29,35,42,46,48],descriptivebranchnam:40,deserv:28,design:[0,2,4,19,38,46],desir:[7,27,29,30,41],despit:31,dest:[3,6,30,31,35,42,44],destin:[16,27],destroi:[0,4],detail:[3,4,6,27,30,32,42,44,46],detect:[7,21,31,37,42,44],determin:[2,3,16,27,29,30,34,37,42,44],dev:[4,30,31],devel:3,develop:[0,1,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],devleop:[],dict:[42,46],dictionari:42,did:[1,41],didn:[28,30,42],die:[27,29,30],died:21,differ:[1,3,4,5,10,15,21,28,31,32,35,41,42,45,46],differenti:42,diffutil:3,digest:[19,42],digit:[35,44],dinner:41,dir:[6,29],direct:[7,31,34,40,42],directli:[5,6,10,16,22,30,42],directori:[2,3,4,6,7,23,27,29,30,31,36,40,44,45],disabl:[10,17,21,35,37,42,44],disc:42,discard:[22,42],disclaim:[2,42],disconnect:[21,22,35,42],discontinu:47,discourag:17,discuss:[4,40],disk:[0,23,30,35,36,42],displai:[12,15,17,21,29,30,35,42,43,46],displaynam:27,dispos:42,dissect:28,distinguish:42,distribut:[0,1,4,30],distro:31,dload:23,dns:[6,14,35,42],doc:[0,3,4,5,6,21,28,31,35,39,42,46,47],document:[2,16,28,30,31,34,37,38,40,44,45],doe:[10,24,28,29,32,33,35,38,39,42,46,47,48],doesn:[12,14,17,30,39,42,45,46],doing:[19,21,28,35,42,43],domain:[1,14,34],don:[4,7,10,14,15,17,21,22,24,27,28,29,30,34,35,39,42,44,45],donat:[24,47],done:[5,22,27,29,30,31,34,40,41,42,47],donkei:30,dontkickop:10,dot:39,doubl:21,doubt:37,down:[0,3,4,15,34,42],downer:24,download:[3,4,5,7,15,23,35,36,42],dozen:28,dp_help:27,dp_log:27,dp_mode:27,dp_server:27,dp_stdout:27,dport:16,dprintf:27,drastic:[27,42],driven:42,dronepup:42,drop:[3,4,35,42],dropp:[],dst:6,due:[17,21,28,35,42,46],dump:[21,35,42],duplic:42,dupwait:35,dure:[3,11,22,27,29,30],dynam:[2,3,10,29,30,33,42],dynamicban:[10,42],dynamicexempt:[10,42],dynamicinvit:[10,42],each:[0,4,6,10,15,18,23,28,29,30,32,34,35,36,39,42,45,46,48],earlier:19,easi:[5,28,30,42,44],easier:[3,19],easiest:42,easili:[0,1,2,4,28,36,42],east:35,ebai:35,ecb:42,ecdsa:29,echo:[36,38,45],ecparam:29,eden:42,edit:[2,3,28,45],editor:[29,30],editplu:30,edu:[42,48],effect:[15,33,35,42],effici:[0,4,30,34,35,36],effort:[0,2,4,42],efnet:[4,17,21],egg_lang:35,eggdrop1:7,eggdrop:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,37,38,41,43,44,45,47,48],eggdroptest:[32,46],egggdrop:2,egghead:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,33,34,35,36,37,38,39,40,41,42,43,44,45,48],egghelp:[4,30],eight:[35,42],either:[3,4,15,16,29,30,31,32,33,34,35,37,42,44,46],element:42,elimin:29,els:[28,39,42],email:[4,29,35,42],embed:42,emerg:38,emot:46,empti:[42,46],enabl:[0,2,4,7,10,12,15,17,21,23,27,28,30,34,35,36,37,38,44,45,47],enclos:[10,37,42,46],encod:[42,43],encount:[30,47],encourag:[2,30,41],encpass2:41,encrypt:[2,5,6,9,19,29,31,34,36,44],end:[3,27,35,41,42,43],endless:10,enforc:[10,29,32,35],enforceban:10,english:[35,45],enhanc:7,enjoi:41,enlarg:3,enough:35,ensur:[27,29,30,34,41,42],enter:[3,10,15,29,31,35,39,40,41,42,44,46],entir:[30,42,46,47],entitl:48,entri:[3,4,29,30,35],env:35,environ:[16,35,36,44],eof:42,equal:42,equival:[6,21,31],equivil:[],eras:[15,42],error:[4,21,27,30,35,42,47],escap:42,especi:28,essenti:41,est:35,establish:[37,42,44],etc:[0,2,4,10,17,24,27,30,32,34,35,36,42,45,48],eth0:16,ethic:35,etiquett:4,european:35,evalu:42,even:[0,4,7,15,17,27,30,33,34,35,36,39,42,47],event:[0,4,24,27,32,34,35,46,47],eventu:19,ever:[29,30,35,42,44],everi:[0,3,4,10,15,17,21,23,27,28,29,32,33,35,37,41,42,48],everydai:35,everyon:[39,42],everyth:[3,28,42],everywher:[35,37,42],evnt:[21,42],exact:42,exactli:[15,17,27,28,42],examin:27,exampl:[2,3,4,5,7,15,16,21,27,28,29,30,31,35,39,42,44,45,46,47],exceed:35,except:[4,13,21,27,35,42,44],excess:[4,10,21],exchang:29,exclud:42,exclus:[21,42],execut:[2,3,7,27,28,32,42],exempt:[0,1,2,4,10,17,24,34,36,47,48],exhaust:[42,46],exist:[0,4,15,21,27,32,41,42,46,47,48],exit:[4,6,12,15,21,42],expand:[0,2,4],expans:42,expect:[6,13,35,42],experi:[3,15,28,30],experienc:3,expir:[10,17,18,21,33,35,42,44],explain:[10,42],explan:[10,30,31,42,46],explicit:38,explicitli:[5,42,44],express:42,extend:[24,36,38,42],extens:[3,30,32],extern:[16,29,35],extra:[7,35,38],extract:[30,42],f270:30,face:47,fact:[0,4,46],fail:[14,23,35,42,44],failur:[42,46],fake:42,fals:42,famili:35,familiar:[4,28],fanci:41,fancyp:28,far:15,fast:30,faster:42,fastest:4,fatal:42,fault:27,favor:[5,22],featur:[0,2,4,7,10,17,21,22,29,30,32,35,37,38,40,42,44,47,48],februari:13,feel:[4,5,27,40],few:[24,28,30,31,35,42,47],field:[21,32,35,42,44],fifth:1,fight:10,figur:[3,30],fil:42,file:[1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,36,37,41,43,44,48],file_receiv:42,file_send:42,file_send_pend:42,filearea:42,filedb:[15,42],filemask:6,filenam:[6,10,18,30,35,44],filepath:6,files:15,filesi:[2,6,35],filestat:6,filesystem:[15,42,48],fill:[35,40,44],filt:[27,42],find:[3,6,14,17,20,27,28,29,30,39,40,42,47],fine:[17,21,35,46],finger:[13,30],fingerprint:[29,35,44],finish:[4,15,30,42],finnish:35,firewal:35,first:[0,2,4,5,15,19,21,27,28,30,31,34,35,41,42,44,45,46],five:42,fix:[0,3,4,27,35,42],flag:[2,5,6,10,13,17,22,27,28,30,35,36,43],flagmask:46,flash:43,flat:42,flexibl:[42,44],flood:[0,4,10,13,18,21,34,35,36,42,48],floor:1,flud:42,flush:22,focus:[24,47],folder:7,follow:[3,4,5,10,15,17,21,24,27,30,31,34,35,36,38,40,41,42,43,44,45,46,47],foo:[28,29,42],forbid:3,forc:[3,10,12,15,19,22,28,35,37,42],forcefulli:44,forev:35,forget:42,fork:[31,40],form:[0,4,27,28,42,43],format:[7,21,27,29,30,31,35,41,42,43,46],forward:18,found:[2,4,27,35,42,46],foundat:1,four:[10,28,32,35,37,42,43],fourth:28,fprint:[35,44],fragil:42,franklin:1,free:[1,2,5,27],freebsd:37,freeli:[0,4],freenod:21,french:35,frequent:[4,30],fresh:35,fri:42,friend:[10,48],frim:27,from:[0,1,2,3,4,5,6,7,10,15,16,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,37,39,41,43,44,45,46,47,48],front:[10,28,30,31,42,47],ftp:[5,30],full:[3,4,5,24,30,37,42,44,46,47],fuller:1,fulli:[5,35,42,47],fun:[3,47],func:27,func_nam:27,func_tabl:27,function_to_cal:27,further:[29,42],futur:[3,17,30,41,42],fwd:18,gain:[0,4,41,48],game:[0,2,4,24,47],garbag:27,gatewai:[24,46,47],gave:30,gayteen:0,gcc:3,gener:[0,1,3,4,19,24,28,29,30,38,41,42,44,47],genkei:29,genrsa:35,geo:28,german:35,get:[6,7,10,21,22,23,27,28,31,32,35,39,48],geteggdrop:[2,4,30],getinfo:42,getop:10,gif:15,git:[2,3,30,40],github:[2,4,30],give:[3,4,10,15,21,28,30,34,35,36,39,41,42,48],given:[4,14,15,16,30,42,46],global:[2,12,16,17,21,22,27,28,33,34,46,48],globalflag:42,gmt:[35,42],gnu:[0,1,3,4,11],goe:[3,10,29,33,34,39,42,44],going:[0,4,15,21,28,31,32,42],gone:[17,42],goober:42,good:[0,15,21,24,28,30,35,42,47,48],got:42,gpl:[0,4],grab:42,grain:28,grant:[29,36,44,47],graphic:44,greater:42,gree:28,greet:[0,2,4,10,28,32],greetmsg:28,greetscript:28,grep:29,ground:35,group:[15,16,35,38,42],grown:0,gseen:[6,20],guarante:[17,32],guess:17,gui:46,guid:[2,3,28,30,31],gunzip:30,guppi:42,gzip:[11,42],had:[3,5,10,34,35,42,47],haha:4,halfop:[10,42,48],hand:[28,35,42],handi:30,handl:[28,29,33,35,41,44,46],handshak:42,hang:[6,14],happen:[28,30,33,35,42],hard:[28,35],harder:28,hardwar:[0,4],has:[0,1,2,4,5,10,14,15,17,21,28,30,31,32,33,34,35,36,37,41,42,44,46,47,48],hash:[2,5,19,30],hasn:21,hate:48,have:[0,1,3,4,5,6,9,10,12,15,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,36,37,39,41,42,44,45,46,47,48],haven:30,head:35,header:[2,4,27,28,31,44],heaven:3,held:46,hello:[17,21,29,30,35,36,42],help:[0,3,13,21,27,28,29,30,33,34,35,37,39,42,43,48],helper:3,henc:[7,27,42],here:[2,4,10,13,14,15,17,18,21,23,28,29,30,33,34,35,42,45,46],herself:4,hidden:[15,30,36],hide:[6,37,42],high:45,higher:[17,19,22,23,30,44],highest:42,highli:[3,21,30],highlight:48,him:1,himself:4,hint:28,his:[21,30],histor:42,histori:46,hit:42,hold:[22,42],hole:35,home:[3,15,16,29,30,44],hook:27,hook_5minut:27,hook_backup:27,hook_daili:27,hook_di:27,hook_hourli:27,hook_idl:27,hook_load:27,hook_minut:27,hook_num:27,hook_pre_rehash:27,hook_read_userfil:27,hook_rehash:27,hook_secondli:27,hook_userfil:27,hope:[30,47],hopefulli:[3,42],hors:30,host:[0,2,4,10,16,21,24,28,33,34,35,44,46,48],hostmask:[28,29,33,34,36,41],hostnam:[6,10,14,29,35,37],hosttarget:[24,46],hour:[6,25,27,33,35,42],hourli:[18,27,35],how:[0,3,6,10,13,14,15,18,21,22,24,28,29,30,31,33,34,35,42,44,45,46,47],howev:[4,7,13,21,29,31,32,35,41,42,44,45],htgt:46,html:[4,37],http:[2,4,6,20,25,30,32,38],hub:[4,22,30,34,35,41,44],hubbot:31,hubcap:48,humor:29,hup:42,hurt:5,iconfig:[3,7,30],idea:[28,30,40],ideal:[41,47],ident:[2,6,7,17,21,29,35,37,41,42],identd:[16,30],identifi:[29,35,41,42,48],idl:[10,27,42],idx:27,ignor:[0,4,13,21,22,28,34,35,36,42,46],ill:42,imag:4,immedi:[21,30,32,41,42],imperson:16,implement:[6,7,16,31,32,35,38,40,41,42,47],implementatino:31,impli:[1,27],importantli:28,improv:[0,4],inact:[10,23],inc:1,incess:0,includ:[0,2,3,4,7,17,25,27,29,30,31,33,35,36,37,41,42,44,46,47],incom:[15,35,42],increas:[32,35,41],incred:[30,42],independ:7,indic:[21,27,30,42,46],infeas:[24,47],infin:35,infinit:15,info:[3,4,10,12,17,27,30,35],inform:[0,2,3,4,5,6,10,15,25,27,28,29,30,32,34,35,37,38,42,44],infrastructur:44,ing:[17,24,47],init:[21,35,42],init_serv:21,initi:[27,28,30,37,38,42,44],input:42,insecur:10,insensit:42,insert:[10,43],insid:[28,35],instal:[0,4,5,28,29,31,35],instanc:[10,32],instantli:21,instead:[1,4,5,10,15,16,17,22,24,30,35,41,42,44,45,47,48],instruct:[7,30,41],integ:[10,42],integr:2,intend:[3,33,42],intens:21,intent:[24,47],intention:28,interact:[3,4,6,16,17,35,42,44,47],intercept:42,interchang:[31,37],interest:4,interfac:[2,24,42,47],intern:[21,32,35,42,46],internet:[0,4,42,44],interpret:[3,37,42,43],interv:42,introduc:[4,30,42],invalid:42,invers:43,invit:[0,2,4,10,17,24,34,36,38,47],invite:42,invok:42,involv:29,invt:42,ipaddress:42,iptabl:16,ipv4:[30,35,37],ipv4address:42,ipv6:[2,30,35,36,42],ipv6address:42,irc:[0,4,6,15,16,21,24,28,29,30,32,33,34,35,36,37,38,39,42,43,45,46,48],ircawai:42,ircd:[17,21,42],ircii:[23,42],ircnet:[4,10,17,21],ircop:[10,17],ircu2:17,ircv3:[2,32,36,42,45],isn:[6,15,21,22,25,30,33,42],isol:34,isop:10,isoptest:10,isp:30,isset:32,issu:[4,5,16,24,30,32,35,40,42,44,46,47],issuer:44,issupport:32,istn:10,isupport:32,ital:42,item:42,its:[1,2,4,7,10,15,16,17,19,21,22,24,28,30,32,34,35,36,40,42,45,47],itself:[15,27,28,29,35,42],itsself:[],j9irk4vs28b0obz9easys4w2ystji3u:47,jan:[42,44],janitor:[15,48],januari:[1,8,9,12,18,20,23,25,42],jkp:30,job:44,john:1,join:[2,6,10,12,17,18,24,28,30,31,33,35,36,38,39,42,46,47,48],jpk:35,jul:7,juli:0,jump:[21,34,44],jun:45,june:16,jupe:42,just:[0,3,4,5,6,14,15,17,19,22,27,29,30,32,34,35,39,41,42,45,46,47],karma:40,keep:[2,4,10,15,21,23,30,35,47],kei:[2,3,10,17,24,28,29,35,41,46,47],kept:[33,35],keyout:[29,44],keypair:[29,31],kick:[10,17,21,32,35,42,45,48],kicker:42,kiddi:35,kill:[30,42],killer:5,kilobyt:[15,35],kind:42,know:[17,18,21,24,27,28,32,33,34,35,42,45,47],knowledg:0,known:[21,29,35,41,42],kreativrauschen:[6,20],kvirc:44,lag:[35,39],lame:[10,17,34,35,42],lamer:35,lameshar:34,lamest:[10,30,34,35,43],lamestbot:[3,10,18,21,30,34,35,42,43],lang:45,languag:[28,35,36,45],larg:[2,15,17,21,35],larger:[28,41],last:[0,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,30,33,34,35,37,38,39,42,43,44,45,46,48],lastli:42,laston:42,late:42,later:[1,3,6,9,18,19,25,28,30,35,42,44],latest:[4,5,30],launch:30,layer:[29,31],lazi:17,leaf:[34,35,41,44],learn:[17,29,30,35,36,42],least:[4,17,27,30,33,35],leav:[10,21,30,35,39,42,47],left:[17,42],legal:[2,4],len:21,length:[17,21,27,41,42,44],less:[13,39,42],let:[4,6,10,14,18,27,28,30,34,35,36,42],letter:[4,35,48],level:[11,16,29,32,35,48],libera:[2,4,5,21,27,28,29,30],librari:[28,41,44],libssl:[4,30,31],licens:[0,1,4],lieu:42,life:[18,30],light:47,like:[0,1,4,6,9,10,13,15,17,19,27,28,29,30,35,36,37,39,40,41,42,44,46,47,48],limbo:35,limit:[2,6,10,15,17,21,34,37],lindex:42,line:[2,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,34,35,36,41,42,44,45,46,47],link:[0,2,3,4,5,6,7,15,22,23,27,35,36,38,41,44,45],linux:37,list:[0,4,6,10,14,15,19,21,22,24,25,27,28,29,30,31,32,34,35,36,38,39,44,46,47],listen:[29,30,34,35,37,44],liter:[27,42],littl:[3,5,15,24,30,34,45],llama:34,llamabot:[30,35],load:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,34,35,41,42,47],loadmodul:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,35,41,47],lobster:41,local:[15,28,30,35,39,40,42,44],localfil:6,locat:[2,4,23,28,29,31,35,44],log:[0,2,4,10,19,24,27,30,32,40,41,42,47],logfil:[25,27,30,35,45],logfilenam:35,logflag:35,logic:42,login:[30,35,41,46],logmod:27,logsiz:35,longer:[3,5,15,17,19,27,30,31,42],look:[0,4,5,6,10,20,25,26,28,29,31,32,35,36,41,42,44,47],lookup:[14,35,37,42],lose:10,lost:42,lot:[5,17,28,30,32],low:[21,23],lower:21,lowercas:21,lsa:15,luck:[30,47],lurk:2,mac:37,machin:[3,16,30,35],macro:27,made:[0,1,3,4,5,10,22,40,42,44,47],magic:28,mai:[1,4,5,10,11,15,16,17,23,28,30,34,35,37,38,42,45,46,47],main:[7,28,30,31,32,39],maintain:[2,16,30,32,45,46],mainten:48,major:[27,30,42],make:[0,2,3,4,5,6,7,10,13,15,19,21,22,24,27,28,29,30,31,35,37,38,40,42,44,45,47],makefil:[3,27],making_modulenam:27,man:35,manag:[2,4,6,15,24,31,47],mandatori:42,mani:[4,5,10,14,15,17,21,27,29,30,31,34,35,42],manipul:[2,35],manpag:35,manual:[4,29,34,35,37,42,44,46],mar:37,march:[33,43,48],mark:[15,36,42,48],mask:[15,21,28,35,46],masquerad:35,master:[15,29,30,33,34,35,42,43,48],match:[1,2,10,15,17,27,28,33,35,41,44,46],math:42,matter:[1,14,28,29],max:[15,17,18,21,23,35],maxdepth:[],maxim:35,maximum:[10,14,15,17,18,21,23,35,41,42,44],maxsend:14,mayb:[28,35],mco:[35,42],mcobx:30,md5:[6,9],mean:[15,17,21,28,29,32,33,34,35,36,37,41,42,44,46],meaning:[24,42,47],meaningless:48,measur:21,mechan:29,meet:44,mem:42,member:[10,27,32],memberlist:42,memori:[27,42],mention:27,meridian:35,messag:[4,10,21,27,28,30,32,35,36,38,39,41,43,45,46],method:[4,6,9,16,17,19,24,28,29,30,31,41,45,47],midnight:35,might:[4,17,23,27,35,42,44],migrat:5,militari:35,milk:48,min:35,miniatur:39,minimum:[0,10,42,46],minor:[27,42],minu:10,minut:[4,10,17,23,27,29,30,33,35],mirc:[21,42],misc:[35,42],miscellan:2,misnom:42,miss:[4,30,32,42],mix:[10,17],mkcoblx:35,mkdir:6,mnnrrpp:42,mnot:22,mnt:30,moc:42,mod:[3,6,7,20,24,27,35,42,46],mode:[4,5,10,13,17,21,24,27,29,32,33,35,36,38,47],mode_proc:42,mode_proc_fix:42,modechang:42,moder:[24,29,46,47],modern:[16,41],modes_per_line_max:17,modif:[5,30,42],modifi:[2,6,14,17,28,32,35,42],modul:[0,2,4,30,32,34,36,41,47],modular:2,module_clos:[],module_depend:27,module_entri:27,module_expmem:[],module_find:27,module_load:27,module_nam:27,module_regist:27,module_renam:27,module_report:[],module_start:[],module_t:[],module_undepend:27,module_unload:27,modulenam:[7,27],moment:[17,30,31],monitor:[33,36,38],month:[35,42],moo:42,more:[3,4,5,6,13,15,17,20,27,28,29,30,31,34,35,36,38,40,41,42,44],moreov:35,most:[0,2,4,5,16,17,21,27,28,29,30,31,35,36,39,42,46,47],mostli:[24,42,47],motd:[35,43],mount:23,move:[3,4,15,21,30,42,47],mpj:42,mrlame:[30,35],mrslame:[30,35],msg:[4,6,17,20,21,29,30,35,36,39,41,46],msgid:46,msgm:[21,42],much:[2,3,24,27,30,39,42],multi:30,multipl:[0,2,4,16,28,30,34,35,36,42,46],must:[1,2,3,4,10,14,16,17,21,23,27,29,30,31,32,34,35,41,42,44,46],mydir:15,myownevent123:42,myproc:42,mytag:42,myvar:45,myword:17,name:[3,4,6,8,15,21,27,28,29,30,31,32,35,46],nano:30,nat:[16,35,37],natur:46,nearli:7,necessari:[10,31],necessarili:42,need:[0,3,4,10,14,16,17,21,27,28,29,30,31,32,34,35,37,41,42,44,46,47,48],needal:42,needop:42,neg:[14,35,42],negcach:14,negoti:[42,44],net:[1,3,17,21,24,30,32,38],netbsd:37,nethack:48,netsplit:[16,17,35,36,42],network:[0,2,4,17,21,35,42,43],never:[4,5,10,35,42],new_module_nam:27,newer:[5,30],newhandl:42,newidx:42,newnick:42,newus:[30,35],next:[5,10,15,21,27,28,30,31,35,42],nfree:27,nice:27,nicebot:30,nick:[10,17,21,25,28,29,30,35,48],nicknam:[6,21,28,29,30,32,35,43,45,46,48],nickserv:[2,44],nist256p:29,nkch:42,nmalloc:27,no_irc:[6,21],nobodi:[15,28],node:[29,44],nodesynch:10,noemail:4,non:[3,10,14,16,17,21,27,29,33,34,42,44,47],none:[8,9,10,12,14,18,19,20,21,23,26,42],noout:29,noqueu:42,nor:16,normal:[0,4,6,13,14,15,16,21,27,28,31,35,42,44,45,46,47],notabl:47,notat:35,notc:42,notcproc:42,note:[2,3,6,7,9,10,14,17,19,21,22,27,29,30,32,34,35,41,44,46,47],notebox:42,notefil:[18,42],notepad:30,noth:[27,35,42,47],notic:[2,13,15,28,34,35,42,47],notif:42,notifi:[18,21,30,35,36,38,42],nots:1,nov:34,novemb:[22,38],novic:[0,4],now:[3,5,15,16,17,28,29,30,31,34,35,37,41,42,46,48],ntik:42,number:[2,10,15,17,18,19,21,23,24,27,30,31,34,35,41,42,44,46,47,48],numer:[29,31,42],nxdomain:14,oauth:47,obtain:[2,31,44],obvious:[33,42],occur:[17,28,42],occurr:27,octal:35,octob:[10,19,21,35],off:[10,16,17,21,30,34,35,39,42],offer:[30,31,32,46,47],offici:[2,4],offlin:42,offset:35,often:[4,6,14,29,35,46],oident:16,oidentd:16,okai:35,old:[6,19,21,30],old_module_nam:27,older:[4,37,42],oldest:[2,42],oldhandl:42,omin:28,omit:[42,44],onc:[4,10,15,17,19,21,28,29,30,40,42],one:[4,10,15,16,17,21,27,28,29,30,31,33,34,35,36,39,40,41,42,44,45],ones:[14,22,34,37,42],onjoin:18,onli:[3,4,5,6,7,10,15,16,17,18,20,21,22,25,26,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],onlin:[6,15,18,29,32],opchar:17,open:[16,29,35,39,40,42,44],openbsd:37,openssl:[2,3,4,19,29,30,31,35,44],oper:[13,21,28,35,37,42,43],opped:[10,42,48],opping:[0,4],oppos:42,ops:[10,32,42,48],optim:[6,21],optino:38,option:[1,3,4,7,10,15,16,19,21,29,30,35,44,47],order:[4,14,28,32,35,41,42,44,46],ordinari:[42,44],org:[2,4,5,6,25,28,30,31,34,35,42],origin:[1,21,30,40,42],oss:16,other:[0,1,4,6,9,10,14,15,16,17,18,19,21,22,27,28,29,30,31,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48],otherdir:3,otherwis:[3,4,12,15,28,32,33,34,35,37,41,42,44,46],our:[30,34,42],ousterhout:1,out:[0,3,4,23,25,28,29,30,34,35,39,41,42,44],outform:29,outgo:[35,42,45],output:[2,3,27,29,31,41,43,45,46],outsid:[19,31,35],over:[15,21,24,27,28,30,35,37,42,44,45,47],overal:32,overhead:7,overrid:[22,37,44],overridden:17,overwrit:[16,30,42],overwritten:[5,35,42],own:[1,7,15,16,21,22,28,29,30,31,38,42,44,45,47],owner:[4,10,30,35,39,42,48],p_tcl_hash_list:27,packag:[1,3,4,30,31],pad:42,page:[30,40],pai:[5,32,42],pain:[23,30],pair:[29,31,32,42,44,46],paragraph:3,paramet:42,paranoid:[22,35],pars:42,part:[0,4,21,24,28,35,36,42,44,45,47],parti:[2,5,12,30,34,35,36,42,44,48],particular:[5,29,35],partproc:42,partylin:[2,4,6,12,30,31,32,34,35,37,41,42,44,45,46,47,48],pass:[28,29,30,32,37,39,41,46],passiv:34,passthru:35,password:[5,6,9,17,19,21,22,29,30,34,35,36,39,41,44,47],past:[1,4,27,35],patch:[2,37,42],path:[2,3,15,16,30,31,42,44],pathnam:42,patient:15,pbk:41,pbkdf2:[2,5,6,41],peer:[21,35,44],pem:[29,35],penalti:21,pend:[6,10],peopl:[4,10,15,16,17,18,21,22,28,30,35,36,39,42,43,48],per:[17,42,46],percent:43,perfect:32,perform:[0,3,4,5,10,30,42,48],perhap:30,period:[6,14,30,42],perm:35,perman:[10,33,35,42],permiss:[4,35,41],permit:42,perorm:2,persist:30,person:[4,28,30,35,42],phew:30,phrase:42,physic:34,pick:42,pictur:5,pid:[30,35,42],pidfil:35,piec:[3,28],ping:13,pipe:34,pl1:42,place:[1,3,5,7,10,15,17,28,30,33,35,42,44,47],plain:[29,35,44],plaintext:[29,42,44],plan:[4,28,42],platform:[0,4,24,42,47],pleas:[4,5,6,7,9,10,16,19,21,31,35,38,42],plu:[10,21,35,42,44],pmsg:28,point:[3,6,21,26,30,34,35,42],pointer:[1,3,4,36,43],popul:46,popular:[0,4,5,30,35],port:[1,5,14,16,21,22,29,30,31,34,35,37,44],portabl:42,portion:[3,7,10,42],portrang:35,posit:[27,35],posix:42,possibl:[3,10,13,15,21,29,31,35,37,38,39,42,44,46],potenti:[5,16,28,42,46],pour:40,power:[4,36],practic:[41,42],pre:[42,44],preced:[30,42,44],prefer:[35,37,44],prefix:[5,17,21,28,31,35,39,44,46,47],preinit:42,prematur:30,prepar:34,prepend:35,prerehash:42,prerequisit:2,prerestart:42,prerout:16,present:[2,6,28,29,32,37,42,46,47],preserv:30,pretend:47,pretendnet:31,pretti:[0,39],preval:29,prevent:[0,4,10,17,18,24,30,34,37,42,47],previou:[1,3,4,5,19,30,42,47],previous:[5,30,42],primari:[21,35],prime256v1:29,prime:35,printf:27,prior:[3,29,30,32,41,44],prioriti:42,privat:[18,22,28,29,30,31,35,39,42,44],privatekei:[29,31,35,44],privileg:[0,4,16,48],privmsg:[10,28,29,42],probabl:[4,21,29,30,31,42],problem:[30,35,37],proc:[21,27,28,46],proce:42,procedur:[2,22,32,46,48],process:[0,3,4,5,11,15,16,23,29,30,34,41,42,44],procnam:[28,42,46],produc:[35,42],program:[0,2,4,16,29,30],progress:15,prohibit:35,project:[2,40,47],prompt:[3,4,32],promptli:30,proper:[3,37,42],properli:[5,30,31,34,35],protect:[0,2,3,4,10,19,21,29,30,33,35,41,42,44,48],protectfriend:10,protecthalfop:10,protectop:10,protocol:[31,35,38,42,44],prove:30,provid:[0,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,27,29,30,35,37,38,40,42,44,46,47],pseudo:42,pub:[4,5,21,29,32,42],pubkei:29,publicli:25,publish:35,pubm:[21,42],pull:[4,40,41],punish:[10,42,48],purpos:[0,1,6,25,26,34,35,42],push:[40,42],put:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,35,42,44],putlog:[21,27,28],putquick:21,putserv:[10,28,29],putti:29,pwd:[6,30],quakenet:[4,21],qualifi:35,quann:[6,20],queri:[14,16,32,37],question:[4,29],queu:[15,21,42],queue:[21,27],quick:[2,27,30,35],quicker:30,quickli:[2,35],quiet:[21,35,48],quit:[4,6,21,30,35,42],quot:[42,46],quota:35,raid:[24,47],rais:[10,21],ram:35,rand_max:42,random:[10,21,34,42],rang:[30,35],rate:21,rather:[5,42,44],raw:[32,35,44],rawt:42,rcvd:42,reach:[17,21,35],react:[28,32],read:[0,2,3,4,6,7,16,27,28,29,30,31,35,42,43,47],readabl:42,readm:[2,3],readonli:27,real:[21,27,42],realli:[28,30,35,45],realnam:[21,42],reason:[4,27,29,30,34,35],reboot:[16,29],receiv:[14,15,21,23,29,34,42,46],recent:[4,30,42,44],recev:[],recipi:42,recogn:[17,21,29,48],recom:[],recommend:[4,5,10,23,27,30,41,42,45,46],recompil:[17,30],reconnect:[22,42],record:[2,22,27,32,36,48],redirect:16,reduc:[27,46],refer:[27,28,31,35,42],refin:28,reflect:[5,42],refresh:[42,46],regardless:42,regist:[2,10,29],regular:[10,42,44],regularli:36,rehash:[7,27,28,35],reiniti:42,reject:[21,34,35],rejn:42,rejoin:[30,42],rel:[14,27,30,42],relai:[0,4,34,35],relat:[1,6,10,28,37,42],releas:[0,1,30,41,42],relev:[4,27,30],reli:42,reliabl:[32,42,46],relink:34,relinquish:42,rem_builtin:27,rem_tcl_command:27,rem_tcl_int:27,rem_tcl_str:27,remain:[10,33,42],remaind:[15,46],rememb:[10,28,29,30],remind:35,remot:[15,34,35,42,43],remotebotnam:42,remov:[5,10,15,19,27,29,30,33,36,37,41,45,46,47],renam:[2,15,27,30,35,42],render:[5,24,47],repeat:[4,32,42],replac:[10,21,27,29,35,42,43,47],repli:[6,13,14,16,17,32,35,42],replic:[46,47],repo:40,report:[6,15,25,27,30,45],repositori:[4,30],repres:[42,46],req:[29,35,44],request:[0,4,5,7,10,13,15,17,21,30,32,33,35,37,38,40,42,44,45,47],requir:[2,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,35,41,44,46],reread:42,resend:[14,42],reserv:[30,35,39],reset:42,resolut:35,resolv:[6,14,35,42],resourc:27,respect:[14,37,42,43],respond:[10,30,42],respons:[21,32,42],rest:[3,27,34,35,41,42,46],restart:[2,3,4,5,7,28,30,35],restrict:[1,15,16,21,35,42,43,47],result:[21,32,33,35,37,42],resum:42,resync:22,retain:42,retri:23,retriev:[6,18],retrydelai:14,reus:[5,42],reveng:10,revengebot:10,revers:[41,42],revert:42,review:[29,31],revis:[0,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,35,37,38,39,42,43,44,45,46,48],revok:[21,35],rfc1459:[38,42],rfc2812:38,rfc:[17,21,24,42,47],rfc_compliant:42,rich:[0,4,30],right:[6,15,16,26,28,30,42],rijndael:19,risk:[1,21],rizon:21,rmdir:6,rmst:46,robei:[1,3,4,36,43,48],robot:36,roomsstat:24,roomstat:[24,47],root:[15,16],round:[19,41],rout:[16,42],routin:[17,35,42],rsa:35,rule:30,run:[2,3,4,5,7,10,16,21,27,28,29,30,31,32,34,35,41,43,44,46],s_client:44,safe:[19,29,30,31,41,47],sai:[4,10,15,28,31,34,42],said:[28,34,42],sake:47,salt:[28,41],same:[0,3,4,5,7,10,11,16,17,27,28,30,32,34,35,38,41,42,43,44,45,46],sampl:[10,30,47],sane:21,sanitycheck:35,sasl:[2,30,36,38],save:[5,6,10,11,12,22,34,35,36,41],scan:30,scenario:[31,32,34],schat:[35,44],schedul:42,scheme:1,scope:31,screen:[4,40,43],script:[0,2,3,4,7,10,21,29,30,33,36,37,42,45,46,47,48],scripter:34,sdcc:44,sdebug:3,seamless:41,seamlessli:19,search:[27,29,42],sec:35,second:[4,10,13,14,17,21,23,27,28,35,45],secondli:42,secret:10,section:[5,10,17,21,24,28,30,34,35,42,47],secur:[0,2,4,6,9,19,29,30,34,35,36,41,42],see:[0,2,3,4,5,6,10,15,17,21,24,25,27,28,29,30,31,32,34,35,37,39,40,41,42,43,46],seen:[2,6,10,32,35,42],selecet:42,select:[4,30,35,36,40,42],self:[2,21,31,35,44],send:[4,6,11,15,17,18,21,22,23,27,28,30,32,34,37,42,45,46],sender:42,sens:[0,4],sensit:41,sent:[6,15,17,22,25,29,32,35,38,39,42,44,46,48],separ:[3,7,21,30,34,35,36,37,38,42,45,46],septemb:14,seri:[30,42,44],serv:35,server:[2,5,6,7,10,13,14,15,16,17,19,24,25,27,29,30,35,36,37,38,44,45,46,47],serverlist:42,serverop:10,serverror:21,servic:[6,10,16,24,29,32,42,44,47],servivc:42,session:[4,37,38],set:[0,1,2,3,5,6,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,31,32,33,34,36,38,39,41,43,45,46,47,48],setcap:16,setnam:[36,38],setup:[4,6,7,30,35],seven:[10,42],sever:[0,4,13,27,30,31,38,42,45],sexystuff:28,sha1:44,sha1sum:29,sha256:19,shall:35,share:[0,2,4,6,10,11,23,27,35,36,42],sharebot:[34,35,42],sharefail:23,she:42,shell:[0,3,4,16,29,30,35,42],shorter:10,should:[1,3,4,5,10,12,13,14,15,17,19,21,22,24,27,28,29,30,34,35,37,39,41,42,44,46,47],shouldn:16,show:[4,6,10,15,25,28,34,35,42],shown:[15,30,35],shutdown:42,shutdownreason:42,side:[35,42,44,47],sidenot:31,sighup:42,sigil:42,sigkil:42,sign:[21,29,31,35,42,43,44,47],signal:42,signific:[4,6],significantli:[32,46],signoff:42,sigquit:42,sigterm:42,silent:35,simialar:[],similar:[4,10,29,30,35,39,40,42,45],similarli:46,simpl:[4,27,28,29,30,42],simpli:[4,5,29,30,31,38,42,47],simplifi:42,simul:[35,42],simultan:[15,23,42],sinc:[0,3,5,17,30,34,35,36,37,42,44,45],singl:[16,17,29,42,46],sit:[0,4,10,35,41],site:[6,48],situat:[32,34],six:42,size:[15,23,27,35,42],skim:4,skip:[30,42],slash:[30,39],slave:34,slennox:30,slow:[15,30,35],slower:35,small:[3,23,34,45],smaller:3,smile:3,snapshot:[2,30],snowbot:15,snt:29,sock:[27,35],socket:[16,27,31,42,44],softwar:[0,1,2,4],solut:41,some:[0,4,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,30,32,33,34,35,36,37,38,42,44,45,47,48],someircnetwork:35,someon:[4,10,17,28,30,31,42,46],someth:[4,28,30,40,42,47],sometim:[4,21,30],somewher:[3,35],song:42,soon:[10,42],sort:[0,4,33],sound:28,sourc:[1,3,4,5,6,7,27,28,31,35,40,42,44,45],space:[0,23,35,38,42],spawn:0,spec:32,special:[34,42],specif:[6,10,14,16,17,19,21,24,30,34,37,38,42,44,46,47,48],specifi:[10,14,15,16,18,21,22,27,29,30,33,35,36,37,41,42,44,46],spectrum:[24,47],spent:[30,42],split:[10,17,37,39,42,43],splt:42,spoiler:47,spoken:42,spoof:16,spread:35,squar:37,squelch:21,src:[3,7,17,27],ssh:30,ssl:[2,3,4,5,21,29,30,31,36,42],sslcert:[3,31,35,44],sslinc:44,ssllib:44,sslport:44,sslsilent:[3,44],sssss:[],stabil:23,stabl:[2,4,30],stack:[17,37,42],stackabl:[],stage:27,stai:42,stall:42,stand:[0,4,30],standard:[14,16,17,23,27,28,38,42,44,47,48],start:[2,3,4,5,6,9,16,19,21,26,28,29,34,35,38,39,41,42,43,46,47],starttl:44,startup:[2,41,42],stat:6,state:[4,42],statement:42,statist:[6,15,25],statu:[0,2,4,10,24,27,31,35,45,46,47],status:32,statuslog:10,stb:21,stdio:27,stdlib:27,stdout:27,stealth:[30,35],step:[2,3,5,27,30,47],stick:33,sticki:[33,42],still:[1,4,5,10,15,22,30,31,32,35,36,42,47],stone:21,stop:[0,10,15,17,27,42,46],stopnethack:[10,48],storag:[6,12,41],store:[5,6,10,12,15,18,24,25,28,30,32,34,41,42,46,47],str_dir:27,str_protect:27,stream:[24,47],street:1,strftime:35,string:[2,17,27,28,29,35,41,46,47],strong:35,strongli:[2,4,30],stuff:[2,4,27,28,30,35,42],style:[33,42],sub:[15,42],subdirectori:[15,42],subject:44,sublist:42,submit:[2,42],subscrib:[46,47],subsequ:42,substitut:[2,35],succeed:42,success:[27,30,42],successfulli:[4,27,42,46],sudo:[16,30],suffic:28,suffici:31,suffix:[7,35],suggest:[5,27],suit:[16,30],suitabl:46,sum:28,summar:21,sun:35,sundai:42,supplant:42,supplementari:32,suppli:35,support:[0,2,3,4,5,6,8,10,11,14,16,17,18,21,22,23,29,30,31,33,35,36,42,45,47],sure:[4,10,27,28,30,31,34,35,42,47],symbol:[31,42],synchron:44,syntax:[5,29,35,44,48],sys:27,system:[2,3,7,14,15,16,27,29,30,35,36,37,42,43,44],tab:27,tabl:[27,38,42],tag:[15,36,38,46],tail:29,take:[3,4,5,6,15,19,21,25,28,30,35,41,42,44],taken:[27,42],takeov:17,talk:[28,31,32,36,39],talli:27,tar:[4,7,30],tarbal:[0,30],target:46,task:[0,2,4,34],tcl:[0,1,2,3,4,6,10,11,21,27,28,30,33,35,36,37,44,45,47],tcl_cmd:27,tcl_int:27,tcl_string:27,tclsh:4,tcltk:4,tcp:[2,16,37],team:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],technic:47,techniqu:45,tell:[15,28,29,30,31,32,34,35,42,47],telnet:[2,29,30,34,36,37,39,41,42,43,44],temp:42,templat:40,temporari:[10,23,25,33,35],ten:29,term:[2,28,31,42],termin:[4,5,42],test:[28,30,48],text:[4,10,21,27,29,35,43,44,45,46,48],textfil:2,than:[4,10,13,15,17,30,31,35,41,42,44],thank:4,thee:42,thei:[0,3,4,5,7,10,12,13,17,18,21,22,27,28,29,30,31,32,33,34,35,41,42,44,46],them:[0,1,3,4,5,7,10,12,13,14,15,17,18,21,22,23,27,28,29,30,31,34,35,36,37,38,41,42,45,47,48],themselv:[17,30,34,42,45],therebi:[45,47],therefor:[6,17,30,35,42],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47,48],thing:[3,4,6,24,26,27,28,29,34,35,42,47],think:[40,48],third:[28,34],thorough:[27,29,31,47],those:[1,3,7,11,15,21,27,28,29,30,42,45,46,47],though:[15,21,28,30,42,44],thr:35,three:[21,29,32,33,34,35,42],through:[4,10,15,21,24,28,31,36,37,38,39,42,47,48],throughout:27,thse:[],thu:[16,28,32,37,41,42],tidi:27,ties:42,till:[],time:[0,3,4,10,14,15,16,17,19,22,23,28,29,30,31,32,33,34,35,36,38,39,41,43,44,45,47],timeout:[6,14,21,23,35,46],timestamp:[35,42],timezon:35,tip:[2,42],titl:48,tiwtch:6,tls:[42,44],tmi:46,tmp:[23,42],toctre:[],todai:42,togeth:[0,2,4,21,28,34,35,36,38,42],token:47,told:28,ton:24,too:[15,17,21,23,27,35,42],tool:[3,30],top:[3,4,28,40,42],topc:42,topic:47,total:[10,27,36,42],tout:42,toward:28,trace:21,track:[2,3,15,24,27,29,42,47],tradit:[24,37,45,46,47],tradition:16,traffic:[3,35,45],trail:27,transfer:[2,6,7,11,15,22,30,34,35,37,42,44,48],transit:[19,41,42],transmit:21,transpar:35,transport:31,treat:[42,47],tree:[0,4,30],tri:[27,35,42],trick:[28,45],trigger:[10,21,27,28,32,42,46],troubl:[14,35],troubleshoot:[4,30],truncat:46,trust:[4,35,48],ttl:14,turbo:[23,30],turn:[10,16,21,35,42],tutori:[2,31],twcmd:[24,47],twice:42,twitch:[2,6,36],twith:46,two:[4,6,17,22,28,30,32,33,34,35,41,42,44,45],type:[3,4,6,7,10,12,17,21,24,27,28,29,30,31,32,33,34,35,36,37,38,39,44],typic:[15,24,35,36,39,42,47],typo:42,ubuntu:31,ufl:42,ugli:15,uglyman:15,uhost:[28,42],uid:[35,44],umod:21,unabl:[17,30,34,37,42,47],unaccess:36,unavail:[21,35],unban:[10,35,42],unbind:[17,35,45,46],uncertainti:46,uncom:[29,31,35,41],under:[0,4,30,36,42],underli:42,underlin:[42,43],undernet:[4,17,21,42],understand:[35,42],understood:21,unexpect:42,unhid:6,unimport:35,unintend:46,uniqu:[35,42,46],univers:35,unix:[0,3,15,16,30,36],unknown:42,unld:42,unless:[17,21,28,30,33,35,42],unlik:[3,36],unlimit:34,unlink:[23,35],unload:[27,42],unoffici:37,unpack:0,unreach:34,unrealircd:[17,42],unreli:[24,46,47],unrest:0,unset:42,unshar:[6,48],unstick:33,unsticki:33,unstuck:42,unsur:30,untar:5,until:[7,10,15,33,35,42],unzip:[5,30],updat:[4,5,19,27,30,32,35,36,41,42,46],upgrad:[2,41,44],uplink:42,upload:[15,30,36,42,45],upon:[0,4,46,48],upper:14,uptim:[2,6],url:[35,42],usa:1,usabl:[6,15,35],usag:[2,4,6,27,35,42],use:[0,1,3,4,5,6,7,9,10,12,13,14,15,16,17,19,21,22,23,27,28,29,30,31,33,34,35,37,39,41,42,43,44,45,46,47,48],used:[0,2,4,10,11,13,15,19,21,27,28,29,30,31,33,34,35,36,37,39,41,42,43,44,45,46,47,48],useful:[1,4,10,23,30,34,42,44,45],useless:[5,24,47],user:[0,2,3,4,5,6,7,9,10,11,12,13,16,17,18,19,20,21,22,23,24,27,28,30,31,32,33,35,36,37,39,40,41,43,44,45,46,47],userban:10,userexempt:10,userfil:[0,2,4,5,6,9,10,11,19,22,23,27,29,30,34,35,41,42,45],userflag:17,userhost:46,userinfo1:35,userinfo:[13,42],userinvit:10,userlist:[6,17,20,22],usernam:[16,29,30,35,46,47],usernotic:[24,46],userst:[24,47],uses:[3,6,17,21,23,27,28,29,30,31,33,35,41,42,44,47,48],using:[1,3,4,6,7,9,10,15,16,17,19,21,27,28,29,30,33,34,35,37,41,42,44,45,46,47],usrntc:46,usst:46,usual:[4,29,30,31,33,37,40,41,42,44,47],utc:35,util:3,utim:28,vagu:30,vali:42,valiant:[0,4],valid:[3,10,21,27,34,35,36,42,44],valis0:42,valu:[10,13,14,17,21,24,27,28,35,41,43,44,46,47],vari:[42,48],variabl:[2,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,32,35,37,43,46],variable_nam:27,varieti:[0,4],variou:[1,27,30,33,35,42],verbos:42,veri:[4,6,16,20,21,28,35],verif:[21,35,44],verifi:[21,29,35,44],version:[0,1,2,3,4,5,13,17,25,27,28,37,38,43,44,46],vertic:42,vhost4:[30,35,37],vhost6:[30,35,37],vhost:[30,35,37],via:[2,3,4,6,11,16,17,20,22,27,28,29,30,32,33,34,35,36,37,38,39,41,43,44,46,47],video:42,view:[5,7,19,29,30,36,42,46],viewer:46,vim:30,vip:[46,47],virtual:35,visibl:42,visit:[5,47],vista:37,voic:[0,2,4,10,29,42,48],wai:[1,3,4,16,21,24,27,28,29,30,31,32,33,34,35,39,41,42,44,47],wait:[6,14,15,17,21,23,30,32,35,42],walk:31,wall:42,wallop:[35,42],want:[0,3,4,6,10,12,14,15,17,18,21,23,27,28,29,30,34,35,37,42,44,45],war:0,warm:40,warn:[4,16,28,42],warranti:1,washalfop:48,wasn:42,wasop:[10,17,48],wasoptest:10,watch:[39,46],web:[2,6,24,35,46],webpag:2,websit:30,week:42,weekdai:42,welcom:28,well:[1,24,28,29,30,31,32,35,41,42,44,47],were:[1,16,17,30,33,34,35,37,41,42,47],west:35,wget:30,what:[0,1,2,5,6,10,15,17,21,25,28,29,30,35,38,39,41,42],whatev:[1,3,28,35,36,42,43],when:[3,4,6,7,9,10,12,15,16,17,21,22,27,28,29,30,32,33,35,37,39,41,42,44,46,47],whenev:[21,27,32,34,42,44],where:[4,6,10,14,15,18,21,27,28,29,30,31,32,35,36,41,42,44,46],wherea:42,wherev:37,whether:[35,37,42],whew:28,which:[3,5,6,10,12,14,15,16,21,22,27,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],whichev:33,whisper:[24,46],whitespac:42,who:[10,15,17,21,28,30,32,35,39,42,48],whoi:[29,35],whole:27,whose:[33,42],whox:[36,42],why:[28,30,42],wide:[39,44],width:43,wild:42,wildcard:[10,28,29,42,46],window:[2,29,37],wise:[4,35],wish:[3,5,7,16,17,25,27,30,33,34,35,42,46],within:[6,15,27,30,31,33,35,38,42],without:[0,2,4,5,6,9,10,13,19,27,28,29,30,31,34,35,36,38,41,42,44],wizard:31,won:[6,10,22,27,28,30,33,34,35,42,44,46],woobi:[2,3,6,27],word:[15,17,29,30,42,46,47],work:[3,5,6,10,13,15,19,20,22,27,28,29,30,33,34,35,37,38,40,41,42,44,45,46],workaround:[24,32],world:[0,2,4,31,35],worri:24,worth:3,would:[4,5,13,28,29,30,31,32,34,35,42,43,44,46,47],wouldn:35,write:[1,2,6,7,26,30,35,41,42,47],written:[0,27,30,42,47],wrote:28,wspm:46,wspr:46,wth:[],www:[2,4,6,20],x509:[29,35,44],xfer:[23,48],xtra:42,xvf:30,xxd:29,year:[0,4,30,35,42],yes:[28,31,42],yesterdai:35,yet:[4,21,30,35,42],yoru:29,you:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48],you_want_to_export:27,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,39,40,41,42,44,47],yourbot:45,yourbranchnam:40,yourconfig:3,youreggdrop:29,youreggdropconfignameher:29,yourself:[7,29,30,40,41,44],yourusernam:40,yyyymmdd:35,zero:42,zip:30,zomg:[],zxvf:30},titles:["About Eggdrop","Boring legal stuff","Eggdrop, an open source IRC bot","Installing Eggdrop","README","Upgrading Eggdrop","Modules included with Eggdrop","Eggdrop Module Information","Assoc Module","Blowfish Module","Channels Module","Compress Module","Console Module","CTCP Module","DNS Module","Filesys Module","Ident Module","IRC Module","Notes Module","PBKDF2 Module","Seen Module","Server Module","Share Module","Transfer Module","Twitch Module","Uptime Module","Woobie Module","Writing an Eggdrop Module","Writing an Eggdrop Script","Common First Steps","Setting Up Eggdrop","Enabling TLS Security on Eggdrop","Account tracking in Eggdrop","Bans, Invites, and Exempts","Botnet Sharing and Linking","Eggdrop Core Settings","Eggdrop Features","IPv6 support","IRCv3 support","The Party Line","Patching Eggdrop","Encryption/Hashing","Eggdrop Tcl Commands","Textfile Substitutions","TLS support","Advanced Tips","Eggdrop Twitch Tcl Commands","Twitch","Users and Flags"],titleterms:{"default":45,"function":[27,47],"int":42,"new":42,"return":42,"short":30,"static":7,"super":30,Adding:34,DNS:14,TLS:[31,44],The:[30,39],Using:[32,34],about:[0,37,38,44],account2nick:42,account:[32,42],accounttrack:42,add:[29,42],addbot:42,addchanrec:42,addit:[27,31],address:42,addus:42,advanc:[35,45],api:24,arg1:42,arg2:42,arg:[42,46],argn:42,assign:29,assoc:[8,42],authent:[29,44],automat:29,background:41,backup:42,ban:[33,42],banlist:42,banmask:42,base64:42,basic:35,best:32,bind:[42,46],block:42,blowfish:9,boot:42,bore:1,bot:[2,15,34,42],botattr:42,botflag:34,botishalfop:42,botisop:42,botisvoic:42,botlist:42,botnam:42,botnet:[5,31,34,35,44],botnick:42,botonchan:42,botport:42,bottre:34,callev:42,can:[2,7],cancel:15,cap:[38,42],capabl:[32,38],certif:44,chan:[42,46],chanban:42,chandname2nam:42,chanexempt:42,chanflag:42,chang:[5,42],chaninvit:42,chanlist:42,channame2dnam:42,channel:[10,15,29,42,46],chansettyp:42,charact:42,chat4:37,chat6:37,chat:37,chattr:42,check:32,chhandl:42,clear:15,clearqueu:42,cmd:46,command:[4,5,24,42,45,46],comment:42,common:29,commun:31,compil:7,compress:[11,42],compressfil:42,config:[5,15,30,42,45,47],configur:[29,30,31,41],configurearg:42,connect:[31,42],consol:[12,35,42],control:42,core:35,count:42,countus:42,creator:42,crontab:4,ctcp:[13,37],ctime:42,cygwin:3,dcc:[35,42,44],dccbroadcast:42,dccdumpfil:42,dcclist:42,dccputchan:42,dccsend:42,dccsimul:42,dccuse:42,decrypt:42,delchanrec:42,delhost:42,deludef:42,delus:42,desc:[15,42],descript:15,dest:15,destin:42,determin:32,develop:4,die:42,dir:[15,42],directori:[15,35,42],disclaim:47,dname:42,dnslookup:42,docker:4,document:[4,5],download:30,dst:15,dumpfil:42,durat:42,dynam:7,echo:42,edit:[30,47],effort:32,eggdrop:[0,2,3,4,5,6,7,27,28,29,30,31,32,35,36,40,42,46],enabl:[31,32,41,42],encpass:42,encrypt:[41,42],entri:42,erasenot:42,event:42,exampl:34,execut:35,exempt:[33,42],exemptlist:42,exemptmask:42,extend:32,extra:42,featur:36,file:[5,15,30,31,35,42,45,47],filemask:15,filenam:[15,42],filepath:15,fileresend:42,filesend:42,filesi:[15,42],filestat:15,find:2,findus:42,first:29,flag:[15,29,34,42,46,48],flushmod:42,formatstr:42,from:42,ftp:4,gener:31,get:[2,4,15,30,42],getaccount:42,getchan:42,getchanhost:42,getchanidl:42,getchaninfo:42,getchanjoin:42,getchanmod:42,getdccawai:42,getdccidl:42,getdesc:42,getdir:42,getfil:42,getfileq:42,getfilesendtim:42,getflag:42,getlink:42,getown:42,getpwd:42,getudef:42,getus:42,git:4,github:40,global:42,hand2idx:42,hand2nick:42,handl:42,handlen:42,handonchan:42,haschanrec:42,hash:41,help:[2,4],helpfil:42,hide:15,histori:30,host:[29,42],hostmask:42,hostnam:42,how:[2,4,5,7],hybrid:41,ident:16,idx2hand:42,idx:42,ignorelist:42,includ:6,info:42,inform:[7,31],instal:[2,3,7,30,37,44],interfac:41,invit:[33,42],invitelist:42,invitemask:42,ipv6:37,irc:[2,17,31,44,47],ircnick:42,ircv3:38,isawai:42,isban:42,isbansticki:42,isbotnick:42,ischanban:42,ischanexempt:42,ischaninvit:42,ischanjup:42,iscompress:42,isdynam:42,isexempt:42,isexemptsticki:42,ishalfop:42,isidentifi:42,isignor:42,isinvit:42,isinvitesticki:42,isircbot:42,isjup:42,islink:42,ismod:46,isop:42,ispermban:42,ispermexempt:42,isperminvit:42,isset:42,istl:42,isupport:42,isvip:46,isvoic:42,join:[29,32],jump:42,keep:45,kei:[31,42,44],keyword:42,killassoc:42,killban:42,killchanban:42,killchanexempt:42,killchaninvit:42,killdcc:42,killexempt:42,killignor:42,killinvit:42,killtim:42,killutim:42,languag:42,lastbind:42,legal:1,level:42,lifetim:42,limit:[24,42,47],line:[4,39],link:[34,42],list:42,listen:[31,42],listnot:42,loadchannel:42,loadhelp:42,loadmodul:[7,42],localfil:15,locat:30,log:[29,35,45],logfil:42,make:34,manipul:42,mask:42,maskhost:42,masktyp:42,match:42,matchaddr:42,matchattr:42,matchban:42,matchcidr:42,matchexempt:42,matchinvit:42,matchstr:42,md5:42,messag:42,minut:42,miscellan:42,mkdir:[15,42],mode:42,modifi:45,modul:[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,35,42],modular:45,module_clos:27,module_expmem:27,module_report:27,module_start:27,module_t:27,monitor:42,more:2,msg:42,must:5,myip:42,name:42,need:7,newban:42,newchanban:42,newchanexempt:42,newchaninvit:42,newexempt:42,newignor:42,newinvit:42,newnam:42,nick2hand:42,nick:[42,46],nicknam:[15,42],nickserv:29,note:[18,42],notic:4,notifi:32,numberlist:42,numvers:42,obtain:4,old:42,oldnam:42,onchan:42,onchansplit:42,onelin:42,onlin:42,open:2,optim:15,option:42,output:42,own:[],parti:39,partylin:[15,24,29],pass:42,passwdok:42,password:42,patch:40,path:35,pattern:42,pbkdf2:19,pend:15,permiss:29,port:42,pre:[2,4,31],prefix:42,prepar:31,prerequisit:30,proc:42,procedur:42,protect:31,pushmod:42,putallbot:42,putbot:42,putcmdlog:42,putdcc:42,puthelp:42,putkick:42,putlog:42,putloglev:42,putnow:42,putquick:42,putserv:42,putxferlog:42,pwd:15,queue:42,queuesiz:42,quick:[3,4],quit:15,rand:42,raw:42,read:5,readm:4,reason:42,record:[34,42],refreshchan:42,regist:47,rehash:42,reload:42,reloadhelp:42,remov:42,renam:45,renudef:42,req:42,requir:[3,27,32,42],requisit:[2,4,31],resetban:42,resetchan:42,resetchanidl:42,resetchanjoin:42,resetconsol:42,resetexempt:42,resetinvit:42,restart:[29,42],rfcequal:42,rmdir:[15,42],roomstat:46,sasl:29,save:42,savechannel:42,script:[5,28,32,35,44],second:42,secur:[31,44],seen:20,self:45,sendnot:42,server:[21,31,32,42],serveraddress:42,set:[4,29,30,35,37,42,44],setchan:42,setchaninfo:42,setdccawai:42,setdesc:42,setflag:42,setlink:42,setown:42,setpwd:42,setudef:42,setup:15,setus:42,share:[15,22,34],show:30,snapshot:4,socklist:42,solo:41,some:2,sourc:[2,15,30],src:42,ssl:[35,44],stackabl:42,start:30,starttl:42,startup:[3,4],stat:15,statu:[32,42],step:29,stickban:42,stickexempt:42,stickinvit:42,still:7,storenot:42,str:42,strftime:42,string1:42,string2:42,string:[42,45],strip:42,stripcod:42,stuff:1,submit:40,substitut:43,support:[32,37,38,44],system:4,tag:[32,42],tagmsg:42,target:42,tcl:[5,24,32,41,42,46],tcp:42,telnet:35,term:34,text:42,textfil:43,thing:2,time:42,timer:42,timerid:[],timernam:42,tip:45,tlsstatu:42,topic:42,track:32,traffic:42,transfer:23,twcmd:46,twitch:[24,46,47],twitchmod:46,twitchvip:46,type:[42,46],unam:42,unbind:42,uncompressfil:42,unhid:15,unixtim:42,unlink:42,unloadhelp:42,unloadmodul:42,unshar:15,unstickban:42,unstickexempt:42,unstickinvit:42,upgrad:[4,5],uptim:[25,42],usag:[15,37,38,41,44],use:[],user:[15,29,34,42,48],userlist:42,userport:42,userst:46,utim:42,validchan:42,valididx:42,validus:42,valu:42,variabl:[42,45],version:[30,42],via:[40,42],washalfop:42,wasop:42,web:47,what:[4,7,27,34],where:2,whom:42,whox:32,why:[],window:3,without:7,woobi:26,write:[27,28],you:2,your:45}}) \ No newline at end of file +Search.setIndex({"docnames": ["about/about", "about/legal", "index", "install/install", "install/readme", "install/upgrading", "modules/included", "modules/index", "modules/internals", "modules/mod/assoc", "modules/mod/blowfish", "modules/mod/channels", "modules/mod/compress", "modules/mod/console", "modules/mod/ctcp", "modules/mod/dns", "modules/mod/filesys", "modules/mod/ident", "modules/mod/irc", "modules/mod/notes", "modules/mod/pbkdf2", "modules/mod/seen", "modules/mod/server", "modules/mod/share", "modules/mod/transfer", "modules/mod/twitch", "modules/mod/uptime", "modules/mod/woobie", "modules/writing", "tutorials/firstscript", "tutorials/firststeps", "tutorials/module", "tutorials/setup", "tutorials/tlssetup", "using/accounts", "using/bans", "using/botnet", "using/core", "using/features", "using/ipv6", "using/ircv3", "using/partyline", "using/patch", "using/pbkdf2info", "using/tcl-commands", "using/text-sub", "using/tls", "using/tricks", "using/twitch-tcl-commands", "using/twitchinfo", "using/users"], "filenames": ["about/about.rst", "about/legal.rst", "index.rst", "install/install.rst", "install/readme.rst", "install/upgrading.rst", "modules/included.rst", "modules/index.rst", "modules/internals.rst", "modules/mod/assoc.rst", "modules/mod/blowfish.rst", "modules/mod/channels.rst", "modules/mod/compress.rst", "modules/mod/console.rst", "modules/mod/ctcp.rst", "modules/mod/dns.rst", "modules/mod/filesys.rst", "modules/mod/ident.rst", "modules/mod/irc.rst", "modules/mod/notes.rst", "modules/mod/pbkdf2.rst", "modules/mod/seen.rst", "modules/mod/server.rst", "modules/mod/share.rst", "modules/mod/transfer.rst", "modules/mod/twitch.rst", "modules/mod/uptime.rst", "modules/mod/woobie.rst", "modules/writing.rst", "tutorials/firstscript.rst", "tutorials/firststeps.rst", "tutorials/module.rst", "tutorials/setup.rst", "tutorials/tlssetup.rst", "using/accounts.rst", "using/bans.rst", "using/botnet.rst", "using/core.rst", "using/features.rst", "using/ipv6.rst", "using/ircv3.rst", "using/partyline.rst", "using/patch.rst", "using/pbkdf2info.rst", "using/tcl-commands.rst", "using/text-sub.rst", "using/tls.rst", "using/tricks.rst", "using/twitch-tcl-commands.rst", "using/twitchinfo.rst", "using/users.rst"], "titles": ["About Eggdrop", "Boring legal stuff", "Eggdrop, an open source IRC bot", "Installing Eggdrop", "README", "Upgrading Eggdrop", "Modules included with Eggdrop", "Eggdrop Module Information", "Eggdrop Bind Internals", "Assoc Module", "Blowfish Module", "Channels Module", "Compress Module", "Console Module", "CTCP Module", "DNS Module", "Filesys Module", "Ident Module", "IRC Module", "Notes Module", "PBKDF2 Module", "Seen Module", "Server Module", "Share Module", "Transfer Module", "Twitch Module", "Uptime Module", "Woobie Module", "How to Write an Eggdrop Module", "Writing an Eggdrop Script", "Common First Steps", "Writing a Basic Eggdrop Module", "Setting Up Eggdrop", "Enabling TLS Security on Eggdrop", "Account tracking in Eggdrop", "Bans, Invites, and Exempts", "Botnet Sharing and Linking", "Eggdrop Core Settings", "Eggdrop Features", "IPv6 support", "IRCv3 support", "The Party Line", "Patching Eggdrop", "Encryption/Hashing", "Eggdrop Tcl Commands", "Textfile Substitutions", "TLS support", "Advanced Tips", "Eggdrop Twitch Tcl Commands", "Twitch", "Users and Flags"], "terms": {"last": [0, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 32, 35, 37, 39, 40, 41, 44, 45, 46, 47, 48, 50], "revis": [0, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 35, 37, 39, 40, 41, 44, 45, 46, 47, 48, 50], "juli": 0, "27": [0, 12, 17, 23, 40], "2010": [0, 11, 15, 22, 37, 39, 40, 45, 46], "wa": [0, 2, 8, 20, 25, 29, 31, 32, 36, 40, 43, 44, 46, 48, 49], "creat": [0, 3, 4, 8, 16, 17, 23, 28, 29, 30, 31, 32, 35, 37, 42, 43, 44, 46, 47, 49], "around": [0, 4, 25, 33, 39, 44, 49], "decemb": [0, 27, 38, 41], "1993": [0, 38], "help": [0, 3, 8, 14, 22, 28, 29, 30, 31, 32, 35, 36, 37, 39, 41, 44, 45, 50], "stop": [0, 11, 16, 18, 28, 30, 44, 48], "incess": 0, "war": 0, "gayteen": 0, "It": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 16, 18, 22, 26, 28, 30, 32, 34, 36, 37, 38, 39, 41, 44, 48, 49], "spawn": 0, "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 16, 17, 18, 19, 20, 22, 23, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 39, 41, 43, 45, 46, 47, 48, 49, 50], "anoth": [0, 8, 11, 16, 18, 19, 22, 23, 28, 32, 36, 37, 44, 45, 48], "bot": [0, 1, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 26, 28, 29, 30, 32, 33, 35, 37, 38, 39, 40, 41, 43, 45, 46, 47, 48, 49, 50], "process": [0, 3, 4, 5, 12, 16, 17, 24, 30, 32, 36, 43, 44, 46], "being": [0, 4, 11, 16, 18, 22, 33, 34, 38, 39, 44, 48], "written": [0, 28, 31, 32, 44, 49], "time": [0, 3, 4, 11, 15, 16, 17, 18, 20, 23, 24, 29, 30, 32, 33, 34, 35, 36, 37, 38, 40, 41, 43, 45, 46, 47, 49], "call": [0, 3, 4, 8, 28, 29, 30, 36, 37, 44, 48], "unrest": 0, "The": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 14, 15, 16, 17, 20, 22, 23, 24, 25, 26, 28, 29, 30, 31, 33, 34, 35, 36, 37, 38, 40, 43, 44, 46, 47, 48, 49, 50], "purpos": [0, 1, 6, 8, 26, 27, 31, 36, 37, 44], "answer": [0, 7, 14, 17, 22, 29], "request": [0, 4, 5, 7, 11, 14, 16, 18, 22, 32, 34, 35, 37, 39, 40, 42, 44, 46, 47, 49], "other": [0, 1, 4, 6, 8, 10, 11, 15, 16, 17, 18, 19, 20, 22, 23, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "first": [0, 2, 4, 5, 8, 16, 20, 22, 28, 29, 31, 32, 33, 36, 37, 43, 44, 46, 47, 48], "public": [0, 1, 4, 29, 30, 31, 33, 37, 44, 46, 47, 50], "releas": [0, 1, 32, 43, 44], "version": [0, 1, 2, 3, 4, 5, 8, 14, 18, 26, 28, 29, 31, 39, 40, 45, 46, 48], "0": [0, 4, 8, 11, 13, 14, 16, 17, 18, 19, 20, 22, 23, 24, 28, 29, 30, 31, 32, 36, 37, 39, 40, 41, 43, 44, 46, 47, 48], "6": [0, 5, 8, 11, 18, 30, 32, 37, 39, 44], "sinc": [0, 3, 5, 18, 32, 36, 37, 38, 39, 44, 46, 47], "ha": [0, 1, 2, 4, 5, 8, 11, 15, 16, 18, 22, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 43, 44, 46, 48, 49, 50], "grown": 0, "what": [0, 1, 2, 5, 6, 8, 11, 16, 18, 22, 26, 29, 30, 31, 32, 37, 40, 41, 43, 44], "you": [0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], "have": [0, 1, 3, 4, 5, 6, 8, 10, 11, 13, 16, 18, 19, 20, 22, 23, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 44, 46, 47, 48, 49, 50], "befor": [0, 4, 8, 11, 15, 17, 18, 19, 22, 23, 24, 28, 30, 31, 32, 34, 36, 37, 44, 49], "i": [0, 1, 2, 3, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], "world": [0, 2, 4, 33, 37], "": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 16, 17, 18, 21, 22, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 41, 43, 45, 46, 47, 48, 49, 50], "most": [0, 2, 4, 5, 17, 18, 22, 28, 29, 30, 32, 33, 37, 38, 41, 44, 48, 49], "popular": [0, 4, 5, 32, 37], "internet": [0, 4, 44, 46], "relai": [0, 4, 36, 37], "chat": [0, 2, 4, 6, 8, 14, 22, 30, 32, 36, 37, 38, 41, 44, 46, 48, 49], "irc": [0, 4, 6, 8, 16, 17, 22, 25, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 44, 45, 47, 48, 50], "freeli": [0, 4], "distribut": [0, 1, 4, 31, 32], "under": [0, 4, 31, 32, 38, 44], "gnu": [0, 1, 3, 4, 8, 12, 31], "gener": [0, 1, 3, 4, 8, 20, 25, 29, 30, 31, 32, 40, 43, 44, 46, 49], "licens": [0, 1, 4, 31], "gpl": [0, 4, 31], "featur": [0, 2, 4, 7, 11, 18, 22, 23, 30, 32, 34, 37, 39, 40, 42, 44, 46, 49, 50], "rich": [0, 4, 32], "program": [0, 2, 4, 17, 30, 31, 32], "design": [0, 2, 4, 20, 40, 48], "easili": [0, 1, 2, 4, 29, 38, 44], "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 23, 24, 28, 29, 30, 31, 32, 33, 35, 37, 38, 39, 41, 43, 44, 45, 46, 47, 48, 49, 50], "expand": [0, 2, 4], "upon": [0, 4, 48, 50], "both": [0, 4, 11, 22, 24, 33, 34, 36, 39, 43, 44, 46], "novic": [0, 4], "advanc": [0, 2, 4, 6, 21, 29, 38], "user": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 31, 32, 33, 34, 35, 37, 38, 39, 41, 42, 43, 45, 46, 47, 48, 49], "varieti": [0, 4], "hardwar": [0, 4], "softwar": [0, 1, 2, 4, 31], "platform": [0, 4, 25, 44, 49], "an": [0, 3, 4, 5, 6, 7, 8, 10, 11, 15, 16, 17, 18, 20, 22, 24, 25, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49], "sit": [0, 4, 11, 37, 43], "channel": [0, 2, 4, 5, 6, 8, 9, 13, 18, 21, 22, 23, 25, 28, 29, 32, 34, 35, 36, 37, 38, 41, 45, 47, 49, 50], "perform": [0, 3, 4, 5, 8, 11, 31, 32, 44, 50], "autom": [0, 2, 4], "task": [0, 2, 4, 8, 36], "while": [0, 4, 5, 11, 17, 25, 32, 34, 35, 37, 41, 43, 44, 49], "look": [0, 4, 5, 6, 8, 11, 21, 26, 27, 29, 30, 31, 33, 34, 37, 38, 43, 44, 46, 49], "just": [0, 3, 4, 5, 6, 8, 15, 16, 18, 20, 23, 28, 30, 31, 32, 34, 36, 37, 41, 43, 44, 47, 48, 49], "like": [0, 1, 4, 6, 8, 10, 11, 14, 16, 18, 20, 28, 29, 30, 31, 32, 37, 38, 39, 41, 42, 43, 44, 46, 48, 49, 50], "normal": [0, 4, 6, 14, 15, 16, 17, 22, 28, 29, 33, 37, 44, 46, 47, 48, 49], "some": [0, 4, 5, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 28, 31, 32, 34, 35, 36, 37, 38, 39, 40, 44, 46, 47, 49, 50], "function": [0, 1, 2, 4, 6, 7, 8, 20, 25, 31, 32, 36, 37, 39, 43, 44, 47, 48], "includ": [0, 2, 3, 4, 7, 8, 18, 26, 28, 31, 32, 33, 35, 37, 38, 39, 43, 44, 46, 48, 49], "protect": [0, 2, 3, 4, 11, 20, 22, 30, 32, 35, 37, 43, 44, 46, 50], "abus": [0, 2, 4], "allow": [0, 3, 4, 5, 6, 7, 11, 12, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 29, 30, 31, 32, 34, 36, 37, 38, 43, 44, 46, 47, 49], "privileg": [0, 4, 17, 50], "gain": [0, 4, 43, 50], "op": [0, 2, 4, 11, 18, 25, 34, 36, 38, 43, 44, 49, 50], "voic": [0, 2, 4, 11, 30, 44, 50], "statu": [0, 2, 4, 11, 25, 28, 31, 33, 37, 47, 48, 49], "log": [0, 2, 4, 11, 20, 25, 28, 31, 32, 34, 42, 43, 44, 49], "event": [0, 4, 25, 28, 31, 34, 36, 37, 48, 49], "provid": [0, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 25, 28, 30, 31, 32, 37, 39, 40, 42, 44, 46, 48, 49], "inform": [0, 2, 3, 4, 5, 6, 8, 11, 16, 26, 28, 29, 30, 31, 32, 34, 36, 37, 39, 40, 44, 46], "host": [0, 2, 4, 11, 17, 22, 25, 29, 35, 36, 37, 46, 48, 50], "game": [0, 2, 4, 25, 49], "etc": [0, 2, 4, 8, 11, 18, 25, 28, 32, 34, 36, 37, 38, 44, 47, 50], "One": [0, 4, 29, 34, 44], "make": [0, 2, 3, 4, 5, 6, 7, 11, 14, 16, 20, 22, 23, 25, 28, 29, 30, 32, 33, 37, 39, 40, 42, 44, 46, 47, 49], "stand": [0, 4, 32], "out": [0, 3, 4, 8, 24, 26, 29, 30, 31, 32, 36, 37, 41, 43, 44, 46], "modul": [0, 4, 8, 32, 34, 36, 38, 43, 49], "tcl": [0, 1, 2, 3, 4, 6, 11, 12, 22, 28, 29, 32, 35, 37, 38, 39, 46, 47, 49], "script": [0, 2, 3, 4, 7, 8, 11, 22, 30, 31, 32, 35, 38, 39, 44, 47, 48, 49, 50], "support": [0, 2, 3, 4, 5, 6, 9, 11, 12, 15, 17, 18, 19, 22, 23, 24, 30, 32, 33, 35, 37, 38, 44, 47, 49], "With": [0, 4, 6, 16, 31, 36, 37, 43, 44, 46], "can": [0, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50], "almost": [0, 4, 32, 35, 50], "ani": [0, 1, 2, 3, 4, 5, 7, 13, 16, 17, 18, 19, 22, 23, 25, 28, 29, 30, 31, 32, 35, 37, 38, 41, 43, 44, 46, 48, 49, 50], "want": [0, 3, 4, 6, 8, 11, 13, 15, 16, 18, 19, 22, 24, 28, 29, 30, 31, 32, 36, 37, 39, 44, 46, 47], "thei": [0, 3, 4, 5, 7, 8, 11, 13, 14, 18, 19, 22, 23, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 43, 44, 46, 48], "do": [0, 4, 8, 11, 13, 16, 17, 18, 20, 22, 26, 29, 30, 31, 32, 34, 36, 37, 38, 44, 45, 47, 48, 49], "anyth": [0, 4, 16, 29, 30, 31, 32, 36, 37, 41, 44, 48], "prevent": [0, 4, 11, 18, 19, 25, 30, 32, 36, 39, 44, 49], "flood": [0, 4, 11, 14, 19, 22, 36, 37, 38, 44, 50], "greet": [0, 2, 4, 11, 29, 34], "ban": [0, 2, 4, 11, 18, 25, 36, 37, 38, 49, 50], "advertis": [0, 4, 44], "also": [0, 2, 3, 4, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 28, 29, 30, 31, 32, 35, 36, 37, 38, 41, 43, 44, 45, 46, 47, 48, 49, 50], "link": [0, 2, 3, 4, 5, 6, 7, 16, 23, 24, 28, 31, 37, 38, 40, 43, 46, 47], "multipl": [0, 2, 4, 8, 17, 29, 31, 32, 36, 37, 38, 44, 48], "togeth": [0, 2, 4, 22, 29, 36, 37, 38, 40, 44], "form": [0, 4, 28, 29, 44, 45], "botnet": [0, 2, 3, 4, 6, 9, 11, 13, 16, 22, 26, 32, 38, 39, 41, 43, 44, 47, 50], "thi": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 47, 48, 49, 50], "each": [0, 4, 6, 11, 16, 19, 24, 29, 30, 32, 34, 36, 37, 38, 41, 44, 47, 48, 50], "secur": [0, 2, 4, 6, 10, 20, 30, 32, 37, 38, 43, 44], "control": [0, 2, 4, 18, 22, 29, 30, 36, 37, 38, 46, 49, 50], "effici": [0, 4, 32, 36, 37, 38], "even": [0, 4, 7, 16, 18, 28, 31, 32, 35, 36, 37, 38, 41, 44, 49], "across": [0, 4, 36, 40, 42, 44, 47], "network": [0, 2, 4, 18, 22, 37, 44, 45], "share": [0, 2, 4, 6, 11, 12, 24, 28, 37, 38, 44], "list": [0, 4, 6, 8, 11, 15, 16, 20, 22, 23, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 40, 41, 46, 48, 49], "exempt": [0, 1, 2, 4, 11, 18, 25, 36, 38, 49, 50], "invit": [0, 2, 4, 11, 18, 25, 36, 38, 40, 49], "ignor": [0, 4, 8, 14, 22, 23, 29, 36, 37, 38, 44, 48], "userfil": [0, 2, 4, 5, 6, 10, 11, 12, 20, 23, 24, 28, 30, 32, 36, 37, 43, 44, 47], "enabl": [0, 2, 4, 7, 11, 13, 16, 18, 22, 24, 28, 29, 30, 32, 36, 37, 38, 39, 40, 46, 47, 49], "same": [0, 3, 4, 5, 7, 8, 11, 12, 17, 18, 28, 29, 32, 34, 36, 37, 40, 43, 44, 45, 46, 47, 48], "access": [0, 4, 17, 22, 28, 29, 30, 32, 38, 41, 43, 44, 46, 48, 49, 50], "everi": [0, 3, 4, 11, 16, 18, 22, 24, 28, 29, 30, 34, 35, 37, 39, 43, 44, 50], "your": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 41, 42, 43, 44, 46, 49], "see": [0, 2, 3, 4, 5, 6, 8, 11, 16, 18, 22, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 41, 42, 43, 44, 45, 48], "doc": [0, 3, 4, 5, 6, 22, 29, 31, 33, 37, 41, 44, 48, 49], "set": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 29, 33, 34, 35, 36, 38, 40, 41, 43, 45, 47, 48, 49, 50], "up": [0, 2, 3, 4, 5, 6, 16, 22, 26, 28, 29, 33, 34, 36, 37, 41, 43, 44, 49], "alwai": [0, 3, 4, 11, 32, 34, 35, 44], "improv": [0, 4], "adjust": [0, 4, 18], "becaus": [0, 4, 8, 17, 22, 28, 29, 37, 44, 47, 48, 49], "ar": [0, 1, 2, 3, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50], "bug": [0, 3, 4, 29, 32, 42], "fix": [0, 3, 4, 28, 37, 44], "ad": [0, 2, 3, 4, 5, 7, 8, 20, 22, 23, 25, 28, 29, 32, 34, 37, 38, 39, 40, 43, 44, 46, 48, 49], "demand": [0, 4], "them": [0, 1, 3, 4, 5, 7, 11, 13, 14, 15, 16, 18, 19, 22, 23, 24, 28, 29, 30, 32, 33, 36, 37, 38, 39, 40, 43, 44, 47, 49, 50], "actual": [0, 4, 8, 16, 28, 29, 33, 37, 41, 44], "sens": [0, 4], "In": [0, 4, 5, 8, 15, 28, 30, 31, 32, 33, 34, 36, 37, 44, 46, 49], "fact": [0, 4, 48], "exist": [0, 4, 8, 16, 22, 28, 31, 34, 43, 44, 48, 49, 50], "sever": [0, 4, 14, 28, 32, 33, 40, 44, 47], "year": [0, 4, 32, 37, 44], "v0": [0, 4, 44], "7": [0, 4, 11, 32, 39, 44], "9": [0, 2, 4, 6, 7, 8, 11, 12, 20, 22, 24, 26, 30, 32, 34, 36, 37, 40, 43, 44, 45, 46, 48], "final": [0, 4, 8, 29, 30, 32, 37, 43], "go": [0, 3, 4, 6, 16, 22, 26, 29, 30, 32, 33, 34, 44], "1": [0, 1, 3, 4, 5, 8, 9, 11, 12, 13, 14, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40, 41, 43, 44, 46, 48, 49], "part": [0, 4, 8, 22, 25, 29, 31, 37, 38, 44, 46, 47, 49], "tree": [0, 4, 32], "A": [0, 2, 4, 5, 11, 17, 29, 30, 31, 34, 36, 37, 38, 40, 41, 44, 45, 46, 48, 50], "valiant": [0, 4], "effort": [0, 2, 4, 44], "been": [0, 1, 4, 5, 16, 18, 22, 28, 35, 37, 38, 44, 48], "made": [0, 1, 3, 4, 5, 11, 23, 31, 42, 44, 46, 49], "chase": [0, 4], "down": [0, 3, 4, 16, 36, 44], "destroi": [0, 4], "To": [0, 3, 4, 5, 7, 8, 29, 30, 31, 32, 33, 34, 37, 39, 41, 42, 44, 46, 47, 48], "need": [0, 3, 4, 8, 11, 15, 17, 18, 22, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 43, 44, 46, 48, 49, 50], "sort": [0, 4, 35], "unix": [0, 3, 16, 17, 32, 38], "account": [0, 2, 4, 17, 19, 28, 30, 32, 38, 40, 42, 43, 49], "pretti": [0, 41], "good": [0, 16, 22, 25, 29, 32, 37, 44, 49, 50], "knowledg": 0, "how": [0, 3, 6, 8, 11, 14, 15, 16, 19, 22, 23, 25, 29, 30, 31, 32, 33, 35, 36, 37, 44, 46, 47, 48, 49], "compil": [0, 2, 3, 4, 28, 31, 32, 33, 37, 39, 44, 46], "read": [0, 2, 3, 4, 6, 7, 17, 28, 29, 30, 32, 33, 37, 44, 45, 49], "dcc": [0, 2, 4, 6, 8, 16, 21, 22, 24, 28, 30, 31, 32, 36, 38, 39, 41, 43, 47], "absolut": [0, 33, 44, 50], "minimum": [0, 11, 31, 44, 48], "5": [0, 4, 8, 11, 22, 23, 28, 29, 32, 37, 39, 44, 45], "mb": 0, "disk": [0, 24, 32, 37, 38, 44], "space": [0, 24, 37, 40, 44], "tarbal": [0, 32], "4": [0, 3, 4, 8, 11, 15, 22, 28, 29, 30, 31, 32, 33, 36, 37, 39, 44], "unpack": 0, "cannot": [0, 28, 32, 34, 43, 44, 50], "without": [0, 2, 4, 5, 6, 10, 11, 14, 20, 28, 29, 30, 31, 32, 33, 36, 37, 38, 40, 43, 44, 46], "instal": [0, 4, 5, 29, 30, 33, 37], "shell": [0, 3, 4, 17, 30, 32, 37, 44], "copyright": [0, 1, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "c": [0, 1, 2, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "1999": [0, 3, 4, 7, 35, 36, 42, 44, 45, 47], "2022": [], "egghead": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 32, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "develop": [0, 1, 2, 3, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 32, 33, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 49, 50], "team": [0, 1, 2, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "eggdrop": [1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 35, 39, 40, 43, 45, 46, 47, 49, 50], "robei": [1, 3, 4, 38, 45, 50], "pointer": [1, 3, 4, 8, 31, 38, 45], "As": [1, 16, 20, 29, 32, 33, 40, 44, 46, 49], "januari": [1, 9, 10, 13, 19, 21, 24, 26, 44], "1997": [1, 3, 4, 38, 45], "accord": [1, 44, 50], "There": [1, 3, 4, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 28, 29, 30, 31, 33, 34, 35, 37, 39, 43, 45, 46, 49, 50], "should": [1, 3, 4, 5, 8, 11, 13, 14, 15, 16, 18, 20, 22, 23, 25, 28, 29, 30, 31, 32, 36, 37, 39, 41, 43, 44, 46, 48, 49], "copi": [1, 2, 5, 7, 16, 24, 28, 31, 32, 44], "file": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 34, 35, 36, 38, 39, 43, 45, 46, 50], "If": [1, 3, 4, 5, 6, 7, 8, 11, 13, 16, 17, 18, 20, 21, 22, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 41, 42, 43, 44, 46, 47, 48], "write": [1, 2, 6, 7, 27, 32, 37, 43, 44, 49], "free": [1, 2, 5, 28, 31], "foundat": [1, 31], "inc": [1, 31], "51": 1, "franklin": 1, "street": 1, "fifth": 1, "floor": 1, "boston": [1, 31], "ma": [1, 31], "02110": 1, "1301": 1, "usa": [1, 31], "3": [1, 8, 11, 14, 15, 16, 18, 22, 24, 30, 31, 32, 33, 34, 36, 37, 40, 44], "28": [1, 10, 20], "all": [1, 5, 6, 7, 8, 11, 14, 15, 16, 18, 20, 22, 23, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, 46, 47, 48, 49, 50], "chang": [1, 2, 6, 8, 10, 11, 16, 18, 20, 22, 23, 25, 29, 31, 32, 33, 36, 37, 38, 40, 41, 42, 46, 48, 49], "sourc": [1, 3, 4, 5, 6, 7, 8, 28, 29, 31, 33, 37, 42, 44, 46, 47], "code": [1, 2, 3, 4, 7, 8, 28, 29, 44], "relat": [1, 6, 11, 29, 31, 39, 44], "still": [1, 4, 5, 11, 16, 23, 31, 32, 33, 34, 37, 38, 44, 49], "did": [1, 30, 43], "past": [1, 4, 28, 31, 37], "previou": [1, 3, 4, 5, 20, 32, 44, 49], "0m": 1, "were": [1, 17, 18, 32, 35, 36, 37, 39, 43, 44, 49], "differ": [1, 3, 4, 5, 11, 16, 22, 29, 31, 33, 34, 37, 43, 44, 47, 48], "scheme": 1, "mai": [1, 4, 5, 11, 12, 16, 17, 18, 24, 29, 32, 36, 37, 39, 40, 44, 47, 48, 49], "option": [1, 3, 4, 7, 11, 16, 17, 20, 22, 30, 31, 32, 37, 46, 49], "those": [1, 3, 7, 12, 16, 22, 28, 29, 30, 31, 32, 44, 47, 48, 49], "instead": [1, 4, 5, 11, 16, 17, 18, 23, 25, 32, 36, 37, 43, 44, 46, 47, 49, 50], "packag": [1, 3, 4, 32, 33], "bless": 1, "For": [1, 2, 3, 5, 7, 8, 16, 22, 30, 31, 32, 33, 36, 37, 39, 40, 41, 43, 44, 46, 47, 48, 49], "bear": 1, "date": [1, 4, 31, 32, 34, 37, 44], "later": [1, 3, 6, 8, 10, 19, 20, 26, 29, 31, 32, 37, 44, 46], "choic": [1, 22, 29], "must": [1, 2, 3, 4, 8, 11, 15, 17, 18, 22, 24, 28, 30, 31, 32, 33, 34, 36, 37, 43, 44, 46, 48], "match": [1, 2, 8, 11, 16, 18, 28, 29, 31, 35, 37, 43, 46, 48], "net": [1, 3, 18, 22, 25, 32, 34, 40], "blowfish": [1, 2, 5, 6, 20, 28, 37, 43, 44], "abov": [1, 4, 11, 18, 20, 28, 29, 30, 38, 44, 45], "restrict": [1, 16, 17, 22, 37, 44, 45, 49], "origin": [1, 8, 22, 32, 42, 44], "chri": 1, "fuller": 1, "place": [1, 3, 5, 7, 11, 16, 18, 29, 31, 32, 35, 37, 44, 46, 49], "him": 1, "domain": [1, 15, 36], "variou": [1, 8, 28, 32, 35, 37, 44], "well": [1, 8, 25, 29, 30, 31, 32, 33, 34, 37, 43, 44, 46, 49], "contain": [1, 3, 4, 5, 29, 32, 34, 36, 37, 39, 44, 46, 48], "could": [1, 8, 22, 29, 36, 37, 39, 42, 43, 44, 46, 49], "port": [1, 5, 15, 17, 22, 23, 30, 32, 33, 36, 37, 39, 46], "applic": [1, 37, 44], "john": 1, "ousterhout": 1, "wai": [1, 3, 17, 22, 25, 28, 29, 30, 32, 33, 34, 35, 36, 37, 41, 43, 44, 46, 49], "affili": [1, 49], "its": [1, 2, 4, 7, 11, 16, 17, 18, 20, 22, 23, 25, 29, 30, 31, 32, 34, 36, 37, 38, 42, 44, 47, 49], "own": [1, 7, 16, 17, 22, 23, 29, 30, 31, 32, 33, 40, 44, 46, 47, 49], "nots": 1, "warranti": [1, 31], "impli": [1, 28, 31], "whatev": [1, 3, 29, 37, 38, 44, 45], "risk": [1, 22], "matter": [1, 8, 15, 29, 30], "put": [1, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 32, 37, 44, 46], "built": [2, 17, 44, 47], "assist": [2, 32, 34, 46], "manag": [2, 4, 6, 16, 25, 33, 49], "oldest": [2, 44], "activ": [2, 11, 17, 31, 32, 34, 35, 41, 44, 46], "maintain": [2, 17, 32, 34, 47, 48], "via": [2, 3, 4, 6, 12, 17, 18, 21, 23, 28, 29, 30, 32, 34, 35, 36, 37, 38, 39, 40, 41, 43, 45, 46, 48, 49], "abil": [2, 7, 17, 33, 34, 36, 38, 44], "run": [2, 3, 4, 5, 7, 11, 17, 22, 28, 29, 30, 31, 32, 33, 34, 36, 37, 43, 45, 46, 48], "join": [2, 6, 8, 11, 13, 18, 19, 25, 29, 31, 32, 33, 35, 37, 38, 40, 41, 44, 48, 49, 50], "perorm": 2, "obtain": [2, 33, 46], "larg": [2, 16, 18, 22, 37], "number": [2, 11, 16, 18, 19, 20, 22, 24, 25, 28, 31, 32, 33, 36, 37, 43, 44, 46, 48, 49, 50], "integr": 2, "current": [2, 4, 6, 7, 8, 10, 16, 18, 19, 20, 25, 28, 30, 32, 34, 36, 37, 38, 41, 44, 45, 46, 48], "ircv3": [2, 34, 38, 44, 47], "capabl": [2, 37, 38, 44, 47, 49], "tl": [2, 3, 4, 5, 8, 30, 32, 37, 44], "ipv6": [2, 32, 37, 38, 44], "twitch": [2, 6, 38], "much": [2, 3, 8, 25, 28, 32, 41, 44], "project": [2, 42, 49], "http": [2, 4, 6, 21, 26, 32, 34, 40], "github": [2, 4, 32], "com": [2, 4, 5, 6, 21, 22, 29, 30, 32, 36, 37, 43, 44, 46], "egggdrop": 2, "clone": [2, 4, 11, 32], "git": [2, 3, 32, 42], "altern": [2, 4, 17, 22, 32, 33, 36, 37, 44, 46], "stabl": [2, 4, 32], "snapshot": [2, 32], "locat": [2, 4, 24, 29, 30, 33, 37, 46], "geteggdrop": [2, 4, 32], "addit": [2, 4, 5, 8, 17, 22, 32, 37, 44, 46, 48], "found": [2, 4, 8, 28, 37, 44, 48], "offici": [2, 4], "webpag": 2, "www": [2, 4, 6, 21], "org": [2, 4, 5, 6, 26, 29, 32, 33, 36, 37, 44], "requir": [2, 4, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 30, 32, 37, 43, 46, 48], "header": [2, 4, 28, 29, 33, 46], "present": [2, 6, 29, 30, 34, 39, 44, 48, 49], "system": [2, 3, 7, 15, 16, 17, 28, 32, 37, 38, 39, 44, 45, 46], "strongli": [2, 4, 32], "encourag": [2, 32, 43], "openssl": [2, 3, 4, 20, 30, 32, 33, 37, 46], "commun": [2, 28, 36, 41, 42, 44], "guid": [2, 3, 29, 32, 33], "quickli": [2, 37], "here": [2, 4, 11, 14, 15, 16, 18, 19, 22, 24, 29, 30, 31, 32, 35, 36, 37, 44, 47, 48], "lurk": 2, "libera": [2, 4, 5, 22, 28, 29, 30, 32], "readm": [2, 3], "notic": [2, 14, 16, 29, 36, 37, 44, 49], "quick": [2, 28, 32, 37], "startup": [2, 8, 43, 44], "upgrad": [2, 43, 46], "command": [2, 3, 6, 8, 11, 13, 16, 17, 18, 21, 22, 28, 29, 30, 32, 33, 34, 35, 36, 37, 38, 39, 41, 43, 46, 49, 50], "line": [2, 3, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 43, 44, 46, 47, 48, 49], "auto": [2, 3, 36, 50], "start": [2, 3, 5, 6, 10, 17, 20, 22, 27, 29, 30, 36, 37, 40, 41, 43, 44, 45, 48, 49], "document": [2, 8, 17, 29, 32, 33, 36, 39, 40, 42, 46, 47], "cygwin": [2, 39], "window": [2, 30, 39], "v1": [2, 23, 24, 29, 44, 45, 46, 48], "core": [2, 3, 6, 7, 8, 18, 19, 22, 28, 29, 31, 44, 47], "execut": [2, 3, 7, 28, 29, 30, 34, 44], "path": [2, 3, 16, 17, 32, 33, 44, 46], "basic": [2, 4, 6, 7, 21, 29, 32], "consol": [2, 4, 6, 11, 28, 38, 41], "directori": [2, 3, 4, 6, 7, 24, 28, 30, 32, 33, 38, 42, 46, 47], "telnet": [2, 30, 32, 36, 38, 39, 41, 43, 44, 45, 46], "ssl": [2, 3, 4, 5, 22, 30, 32, 33, 36, 38, 44], "parti": [2, 5, 13, 32, 36, 37, 38, 44, 46, 50], "flag": [2, 5, 6, 8, 11, 14, 18, 23, 28, 29, 31, 32, 37, 38, 45], "term": [2, 29, 31, 33, 44], "exampl": [2, 3, 4, 5, 7, 8, 16, 17, 22, 28, 29, 30, 31, 32, 33, 37, 41, 44, 46, 47, 48, 49], "bottre": 2, "botflag": [2, 23], "record": [2, 23, 28, 31, 34, 38, 50], "certif": [2, 3, 22, 30, 33, 37, 44], "authent": [2, 34, 43, 44, 49], "usag": [2, 4, 6, 28, 37, 44], "ctcp": [2, 6, 11, 22, 30, 32, 37, 44, 46], "chat4": 2, "chat6": 2, "kei": [2, 3, 11, 18, 25, 29, 30, 37, 43, 48, 49], "cap": [2, 28, 34, 38, 49], "track": [2, 3, 16, 25, 28, 30, 44, 49], "server": [2, 5, 6, 7, 11, 14, 15, 16, 17, 18, 20, 25, 26, 28, 30, 31, 32, 37, 38, 39, 40, 46, 47, 48, 49], "check": [2, 4, 5, 8, 11, 22, 28, 29, 30, 31, 33, 37, 43, 44, 46, 48], "determin": [2, 3, 17, 28, 30, 32, 36, 39, 44, 46], "best": [2, 3, 6, 17, 32, 36, 44, 48], "encrypt": [2, 5, 6, 10, 20, 30, 33, 36, 38, 46], "hash": [2, 5, 20, 32], "background": [2, 4, 29], "interfac": [2, 25, 44, 49], "disclaim": [2, 44], "regist": [2, 8, 11, 30, 31], "edit": [2, 3, 8, 29, 31, 47], "config": [2, 3, 4, 6, 7, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23, 24, 25, 26, 28, 29, 30, 33, 34, 35, 36, 37, 39, 43, 45, 46], "web": [2, 6, 25, 37, 48], "ui": [2, 48], "limit": [2, 6, 8, 11, 16, 18, 22, 36, 39], "tip": [2, 44], "renam": [2, 16, 28, 32, 37, 44], "keep": [2, 4, 11, 16, 22, 24, 32, 37, 49], "self": [2, 22, 33, 37, 46], "modifi": [2, 6, 15, 18, 29, 31, 34, 37, 44], "default": [2, 3, 4, 11, 12, 15, 16, 18, 22, 24, 30, 32, 33, 34, 35, 37, 43, 44, 46], "string": [2, 8, 18, 28, 29, 30, 37, 43, 48, 49], "modular": 2, "variabl": [2, 5, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 28, 29, 34, 37, 39, 45, 48], "textfil": 2, "substitut": [2, 37], "output": [2, 3, 28, 30, 31, 33, 43, 45, 47, 48], "manipul": [2, 37], "note": [2, 3, 6, 7, 8, 10, 11, 15, 18, 20, 22, 23, 28, 30, 31, 32, 34, 36, 37, 43, 46, 48, 49], "assoc": [2, 6], "compress": [2, 6, 30], "filesi": [2, 6, 37], "miscellan": 2, "global": [2, 8, 13, 17, 18, 22, 23, 28, 29, 31, 35, 36, 48, 50], "bind": [2, 17, 18, 22, 25, 28, 29, 34, 37, 47, 49], "procedur": [2, 23, 34, 48, 50], "tcp": [2, 17, 39], "connect": [2, 4, 5, 6, 15, 16, 17, 22, 25, 28, 30, 32, 36, 37, 39, 41, 46, 49, 50], "charact": [2, 11, 16, 22, 32, 36, 37, 39, 43], "patch": [2, 39, 44], "submit": [2, 44], "prerequisit": 2, "super": 2, "short": [2, 28, 30, 39, 46], "configur": [2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 37, 39, 42, 44, 46], "common": [2, 22, 32, 33, 36, 37, 40, 46, 50], "step": [2, 3, 5, 28, 32, 49], "partylin": [2, 4, 6, 8, 13, 32, 33, 34, 36, 37, 39, 43, 44, 46, 47, 48, 49, 50], "automat": [2, 3, 4, 5, 8, 13, 17, 22, 32, 34, 35, 36, 37, 38, 39, 43, 44, 46, 49, 50], "restart": [2, 3, 4, 5, 7, 29, 32, 37], "nickserv": [2, 46], "sasl": [2, 32, 38, 40], "export": [2, 8, 47], "dynam": [2, 3, 11, 30, 32, 35, 44], "static": [2, 3, 8, 11, 28, 30, 31, 44], "dn": [2, 6, 37, 44], "ident": [2, 6, 7, 18, 22, 30, 37, 39, 43, 44], "pbkdf2": [2, 5, 6, 43], "seen": [2, 6, 11, 34, 37, 44], "transfer": [2, 6, 7, 12, 16, 23, 32, 36, 37, 39, 44, 46, 50], "woobi": [2, 3, 6, 28, 31], "uptim": [2, 6], "intern": [2, 22, 34, 37, 44, 48], "tabl": [2, 28, 31, 40, 44], "creation": [2, 30, 34], "stackabl": 2, "ht_stackabl": [2, 31], "trigger": [2, 11, 22, 28, 29, 31, 34, 44, 48], "handler": 2, "summari": 2, "bore": [2, 4], "legal": [2, 4], "stuff": [2, 4, 28, 29, 32, 37, 44], "had": [3, 5, 8, 11, 36, 37, 44, 49], "littl": [3, 5, 16, 25, 32, 36, 47], "experi": [3, 16, 29, 32], "THE": 3, "now": [3, 5, 8, 16, 17, 18, 29, 30, 31, 32, 33, 36, 37, 39, 43, 44, 48, 50], "experienc": 3, "more": [3, 4, 5, 6, 8, 14, 16, 18, 21, 28, 29, 30, 31, 32, 33, 36, 37, 38, 40, 42, 43, 44, 46], "cours": [3, 8, 29, 36, 37, 44], "autoconfigur": 3, "thing": [3, 4, 6, 25, 27, 28, 29, 30, 36, 37, 44, 49], "easier": [3, 20], "type": [3, 4, 6, 7, 8, 11, 13, 18, 22, 25, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 46], "figur": [3, 32], "correctli": [3, 44], "try": [3, 4, 6, 7, 21, 22, 26, 28, 29, 30, 32, 34, 37, 48], "find": [3, 6, 15, 18, 21, 28, 29, 30, 32, 41, 42, 44, 49], "which": [3, 5, 6, 8, 11, 13, 15, 16, 17, 22, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 41, 43, 44, 45, 46, 47, 48, 50], "either": [3, 4, 8, 16, 17, 30, 31, 32, 33, 34, 35, 36, 37, 39, 44, 46, 48], "iconfig": [3, 7, 32], "everyth": [3, 8, 29, 44], "mod": [3, 6, 7, 21, 25, 28, 37, 44, 48], "choos": [3, 7, 30, 32, 37, 38, 49], "forc": [3, 11, 13, 16, 20, 23, 29, 37, 39, 44], "otherwis": [3, 4, 13, 16, 29, 34, 35, 36, 37, 39, 43, 44, 46, 48], "makefil": [3, 28], "better": [3, 4, 6, 21, 30, 32, 37], "possibl": [3, 11, 14, 16, 22, 30, 33, 36, 37, 39, 40, 41, 44, 46, 48], "debug": [3, 26, 28, 29, 37, 44, 46, 48], "sdebug": 3, "give": [3, 4, 11, 16, 22, 29, 32, 36, 37, 38, 41, 43, 44, 50], "detail": [3, 4, 6, 8, 28, 31, 32, 34, 44, 46, 48], "highli": [3, 22, 32], "unlik": [3, 38], "crash": [3, 4, 8, 44], "take": [3, 4, 5, 6, 16, 20, 22, 26, 29, 31, 32, 37, 43, 44, 46], "longer": [3, 5, 16, 18, 20, 28, 32, 33, 44], "enlarg": 3, "binari": [3, 33], "bit": [3, 16, 25, 29, 32, 33, 37, 44, 46, 49], "worth": 3, "somewher": [3, 37], "accomplish": 3, "enter": [3, 11, 16, 30, 33, 37, 41, 42, 43, 44, 46, 48], "home": [3, 16, 17, 30, 32, 46], "e": [3, 6, 8, 9, 10, 11, 18, 20, 28, 30, 32, 36, 37, 44, 45, 50], "dest": [3, 6, 32, 33, 37, 44, 46], "otherdir": 3, "full": [3, 4, 5, 8, 25, 32, 39, 44, 46, 48, 49], "8": [3, 5, 8, 11, 15, 20, 22, 31, 32, 36, 37, 39, 43, 44, 46], "intend": [3, 8, 35, 44], "traffic": [3, 37, 47], "between": [3, 6, 11, 16, 19, 22, 23, 31, 33, 34, 36, 37, 39, 44], "sslcert": [3, 33, 37, 46], "Or": [3, 33, 44], "non": [3, 11, 15, 17, 18, 22, 28, 30, 35, 36, 44, 46, 49], "interact": [3, 4, 6, 17, 18, 31, 37, 44, 46, 49], "sslsilent": [3, 46], "info": [3, 4, 11, 13, 18, 28, 32, 37], "follow": [3, 4, 5, 8, 11, 16, 18, 22, 25, 28, 31, 32, 33, 36, 37, 38, 40, 42, 43, 44, 45, 46, 47, 48, 49], "complet": [3, 4, 11, 16, 23, 32, 38, 44, 46, 50], "m": [3, 4, 11, 22, 32, 37, 39, 43, 44, 45, 47, 48, 50], "lamestbot": [3, 11, 19, 22, 32, 36, 37, 44, 45], "conf": [3, 7, 17, 30, 32, 40, 44, 46], "when": [3, 4, 6, 7, 10, 11, 13, 16, 17, 18, 22, 23, 28, 29, 30, 31, 32, 34, 35, 36, 37, 39, 41, 43, 44, 46, 48, 49], "futur": [3, 18, 30, 32, 43, 44], "drop": [3, 4, 37, 44], "chmod": [3, 37], "u": [3, 5, 8, 28, 29, 30, 31, 36, 37, 44, 45, 50], "x": [3, 5, 7, 8, 11, 14, 31, 32, 33, 37, 39, 44, 50], "my": [3, 5, 37, 39, 46, 50], "name": [3, 4, 6, 8, 9, 16, 22, 28, 29, 30, 31, 32, 33, 34, 37, 48], "abl": [3, 6, 11, 16, 18, 22, 32, 34, 37, 41, 43, 44], "prompt": [3, 4, 34], "work": [3, 5, 6, 8, 11, 14, 16, 20, 21, 23, 28, 29, 30, 31, 32, 35, 36, 37, 39, 40, 42, 43, 44, 46, 47, 48], "top": [3, 4, 29, 42, 44], "correct": [3, 8, 31, 33, 37, 43], "advis": [3, 22, 24], "crontab": [3, 4, 44], "so": [3, 4, 6, 7, 8, 10, 16, 17, 18, 20, 26, 29, 30, 31, 32, 34, 35, 37, 38, 39, 43, 44, 48], "machin": [3, 4, 17, 32, 37], "goe": [3, 11, 30, 35, 36, 41, 44, 46], "heaven": 3, "forbid": 3, "helper": 3, "systemd": [3, 4], "entri": [3, 4, 8, 30, 32, 37], "add": [3, 4, 5, 7, 8, 11, 17, 18, 25, 28, 29, 31, 32, 33, 34, 36, 37, 38, 43, 49], "job": [3, 4, 30, 46], "autobotchk": [3, 4, 30], "yourconfig": 3, "smile": 3, "tool": [3, 32], "prior": [3, 30, 32, 34, 43, 46], "interpret": [3, 31, 39, 44, 45], "devel": 3, "autoconf": 3, "gcc": 3, "util": 3, "diffutil": 3, "small": [3, 24, 36, 47], "piec": [3, 29, 31], "separ": [3, 7, 8, 22, 32, 36, 37, 38, 39, 40, 44, 47, 48], "smaller": 3, "download": [3, 4, 5, 7, 16, 24, 37, 38, 44], "src": [3, 7, 8, 18, 28], "extens": [3, 32, 34], "dure": [3, 12, 23, 28, 30, 32], "valid": [3, 11, 22, 28, 36, 37, 38, 44, 46], "compat": [3, 5, 40, 44, 48, 49], "rest": [3, 28, 31, 36, 37, 43, 44, 48], "wish": [3, 5, 7, 17, 18, 26, 28, 32, 35, 36, 37, 44, 48], "paragraph": 3, "2": [3, 8, 11, 14, 18, 22, 30, 31, 32, 33, 34, 36, 37, 39, 40, 43, 44, 46], "after": [3, 4, 8, 11, 17, 18, 22, 28, 29, 30, 34, 35, 37, 44, 46, 47, 49], "move": [3, 4, 16, 22, 32, 44, 49], "appropri": [3, 5, 32, 36, 37, 40, 42, 43], "onli": [3, 4, 5, 6, 7, 8, 11, 16, 17, 18, 19, 21, 22, 23, 26, 27, 29, 30, 32, 34, 35, 36, 37, 39, 41, 43, 44, 45, 46, 47, 48, 50], "portion": [3, 7, 11, 44], "end": [3, 28, 30, 31, 37, 43, 44, 45], "point": [3, 6, 8, 22, 27, 31, 32, 36, 37, 44], "hopefulli": [3, 44], "IT": [3, 4], "fun": [3, 49], "pleas": [4, 5, 6, 7, 10, 11, 17, 20, 22, 33, 37, 40, 44], "least": [4, 18, 28, 31, 32, 35, 37], "skim": 4, "ask": [4, 18, 30, 32, 41, 44, 46], "question": [4, 30], "ve": [4, 16, 32, 35, 36, 41], "never": [4, 5, 11, 37, 44], "successfulli": [4, 28, 44, 48], "sure": [4, 11, 28, 29, 32, 33, 36, 37, 44, 49], "select": [4, 32, 37, 38, 42, 44], "n": [4, 5, 11, 30, 31, 36, 37, 41, 44, 45, 50], "owner": [4, 8, 11, 32, 37, 41, 44, 50], "wise": [4, 37], "100": [4, 18, 48], "power": [4, 38], "TO": 4, "someon": [4, 11, 18, 29, 32, 33, 44, 48], "trust": [4, 37, 50], "about": [4, 6, 25, 26, 28, 29, 30, 31, 37, 44, 47, 49], "older": [4, 39, 44], "frequent": [4, 32], "where": [4, 6, 8, 11, 15, 16, 19, 22, 28, 29, 30, 32, 33, 34, 37, 38, 43, 44, 46, 48], "might": [4, 18, 24, 28, 37, 44, 46], "two": [4, 6, 18, 23, 29, 31, 32, 34, 35, 36, 37, 43, 44, 46, 47], "method": [4, 6, 10, 17, 18, 20, 25, 29, 32, 33, 43, 47, 49], "come": [4, 6, 18, 22, 30, 32, 42, 44], "imag": 4, "latest": [4, 5, 32], "pub": [4, 5, 22, 30, 31, 34, 44], "cv": 4, "base": [4, 32, 34, 37, 43, 44], "interest": 4, "veri": [4, 6, 17, 21, 22, 29, 37], "updat": [4, 5, 20, 28, 32, 34, 37, 38, 43, 44, 48], "pull": [4, 42, 43], "recent": [4, 32, 44, 46], "BE": 4, "warn": [4, 17, 29, 44], "branch": [4, 42], "consid": [4, 32, 34, 35, 37, 41, 44], "haha": 4, "signific": [4, 6], "repositori": [4, 32], "simpli": [4, 5, 30, 32, 33, 40, 44, 49], "tar": [4, 7, 32], "archiv": 4, "gz": [4, 32], "hub": [4, 23, 32, 36, 37, 43, 46], "_": [4, 34, 45], "mani": [4, 5, 11, 15, 16, 18, 22, 28, 30, 31, 32, 33, 36, 37, 44], "tclsh": 4, "given": [4, 8, 15, 16, 17, 32, 36, 44, 48], "exit": [4, 6, 13, 16, 22, 44], "howev": [4, 7, 14, 22, 30, 33, 34, 37, 43, 44, 46, 47], "often": [4, 6, 15, 30, 37, 48], "o": [4, 11, 14, 18, 25, 32, 33, 36, 37, 39, 44, 48, 49, 50], "usual": [4, 30, 31, 32, 33, 35, 39, 42, 43, 44, 46, 49], "someth": [4, 8, 29, 32, 42, 44, 49], "similar": [4, 11, 30, 31, 32, 37, 41, 42, 44, 47], "dev": [4, 32, 33], "tk": 4, "tcltk": 4, "html": [4, 39], "recommend": [4, 5, 11, 24, 28, 32, 43, 44, 47, 48], "order": [4, 15, 29, 31, 34, 37, 43, 44, 46, 48], "data": [4, 11, 23, 28, 33, 43, 44], "libssl": [4, 32, 33], "finish": [4, 8, 16, 32, 44], "simpl": [4, 28, 29, 30, 31, 32, 44], "new": [4, 5, 7, 20, 25, 29, 30, 31, 32, 34, 37, 38, 39, 40, 41, 42, 43, 46, 47, 49], "repeat": [4, 34, 44], "defin": [4, 6, 8, 11, 12, 14, 18, 22, 28, 29, 32, 34, 35, 36, 37, 40, 44, 50], "through": [4, 11, 16, 22, 25, 29, 33, 38, 39, 40, 41, 44, 49, 50], "sometim": [4, 22, 32], "mode": [4, 5, 11, 14, 18, 22, 25, 28, 30, 34, 35, 37, 38, 40, 49], "let": [4, 6, 8, 11, 15, 19, 28, 29, 32, 36, 37, 38, 44], "avail": [4, 8, 11, 16, 20, 26, 28, 30, 31, 32, 33, 37, 38, 39, 41, 44, 49], "t": [4, 6, 7, 8, 10, 11, 13, 15, 16, 17, 18, 20, 22, 23, 25, 26, 28, 29, 30, 31, 32, 35, 36, 37, 41, 44, 45, 46, 47, 48, 50], "don": [4, 7, 11, 15, 16, 18, 22, 23, 25, 28, 29, 30, 31, 32, 36, 37, 41, 44, 46, 47], "termin": [4, 5, 8, 44], "session": [4, 39, 40], "troubleshoot": [4, 32], "issu": [4, 5, 17, 25, 32, 34, 37, 42, 44, 46, 48, 49], "show": [4, 6, 8, 11, 16, 26, 29, 36, 37, 44], "10": [4, 8, 11, 18, 30, 32, 36, 37, 44], "second": [4, 11, 14, 15, 18, 22, 24, 28, 29, 31, 37, 47], "screen": [4, 42, 45], "clear": [4, 6, 8, 42, 44, 46, 48, 49], "one": [4, 8, 11, 16, 17, 18, 22, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38, 41, 42, 43, 44, 46, 47], "person": [4, 29, 32, 37, 44], "introduc": [4, 32, 44], "himself": 4, "herself": 4, "ll": [4, 29, 30, 31, 32, 34, 37, 43, 44, 46], "h": [4, 8, 18, 28, 33, 36, 37, 44, 50], "quit": [4, 6, 22, 32, 37, 44], "v": [4, 8, 11, 18, 30, 37, 44, 45, 50], "peopl": [4, 11, 16, 17, 18, 19, 22, 23, 29, 32, 37, 38, 41, 44, 45, 50], "except": [4, 14, 22, 28, 37, 44, 46], "onc": [4, 11, 16, 18, 20, 22, 29, 30, 32, 36, 42, 44], "along": [4, 16, 31], "manual": [4, 30, 36, 37, 39, 44, 46, 48], "oper": [4, 14, 22, 29, 37, 39, 44, 45], "reason": [4, 28, 30, 32, 36, 37], "monitor": [4, 30, 35, 38, 40], "boot": [4, 8, 37], "b": [4, 11, 16, 18, 25, 29, 30, 36, 37, 42, 44, 45, 49, 50], "minut": [4, 11, 18, 24, 28, 30, 32, 35, 37], "attempt": [4, 5, 11, 17, 18, 22, 25, 33, 34, 35, 36, 37, 44, 46, 49], "geneer": 4, "setup": [4, 6, 7, 32, 37], "would": [4, 5, 14, 29, 30, 32, 33, 34, 36, 37, 44, 45, 46, 48, 49], "noemail": 4, "botchk": [4, 30, 32], "send": [4, 6, 12, 16, 18, 19, 22, 23, 24, 28, 29, 32, 34, 36, 39, 44, 47, 48], "email": [4, 30, 37, 44], "sai": [4, 11, 16, 29, 33, 36, 44], "we": [4, 5, 8, 18, 25, 28, 29, 30, 31, 32, 33, 36, 44, 49], "re": [4, 11, 17, 18, 22, 24, 29, 30, 32, 33, 34, 35, 37, 39, 41, 44, 49], "feel": [4, 5, 28, 42], "miss": [4, 32, 34, 44], "yet": [4, 22, 31, 32, 37, 44], "thank": 4, "discuss": [4, 42], "dalnet": [4, 18, 22], "efnet": [4, 18, 22], "egghelp": [4, 32], "ircnet": [4, 11, 18, 22], "quakenet": [4, 22], "undernet": [4, 18, 22, 44], "plan": [4, 29, 44], "familiar": [4, 29], "etiquett": 4, "capit": [4, 50], "letter": [4, 37, 50], "color": [4, 44], "bold": [4, 44, 45, 50], "excess": [4, 11, 22], "msg": [4, 6, 18, 21, 22, 30, 31, 32, 37, 38, 41, 43, 48], "permiss": [4, 37, 43], "than": [4, 8, 11, 14, 16, 18, 32, 33, 37, 43, 44, 46], "text": [4, 11, 22, 28, 30, 31, 37, 45, 46, 47, 48, 50], "state": [4, 44], "relev": [4, 28, 32], "error": [4, 22, 28, 32, 37, 44, 49], "messag": [4, 11, 22, 28, 29, 31, 32, 34, 37, 38, 40, 41, 43, 45, 47, 48], "easi": [5, 29, 32, 44, 46], "pictur": 5, "reus": [5, 44], "visit": [5, 49], "newer": [5, 32], "backup": [5, 28], "chan": [5, 8, 11, 18, 29, 30, 31, 32, 47], "save": [5, 6, 11, 12, 13, 23, 36, 37, 38, 43], "overwritten": [5, 37, 44], "hurt": 5, "another": 5, "next": [5, 8, 11, 16, 22, 28, 29, 31, 32, 33, 36, 37, 44], "view": [5, 7, 20, 30, 32, 38, 44, 48], "pai": [5, 34, 44], "particular": [5, 30, 31, 37], "attent": [5, 22, 34, 44], "section": [5, 8, 11, 18, 22, 25, 29, 31, 32, 36, 37, 44, 49], "Then": [5, 30, 32, 46], "previous": [5, 32, 44], "unzip": [5, 32], "untar": 5, "These": [5, 12, 18, 28, 32, 34, 35, 36, 37, 39, 45, 46, 48, 50], "NOT": [5, 29, 32, 34, 36, 37, 44, 48], "rather": [5, 44, 46], "killer": 5, "directli": [5, 6, 11, 17, 23, 31, 32, 44], "affect": [5, 11, 25, 37, 38, 39, 44, 49], "modif": [5, 32, 44], "migrat": 5, "suggest": [5, 28], "deprec": [5, 33, 44], "password": [5, 6, 10, 18, 20, 22, 23, 30, 32, 36, 37, 38, 41, 43, 46, 49], "favor": [5, 23], "big": [5, 24, 44, 47], "done": [5, 8, 23, 28, 30, 31, 32, 33, 36, 42, 43, 44, 49], "carelessli": 5, "potenti": [5, 17, 29, 44, 48], "render": [5, 25, 49], "store": [5, 6, 11, 13, 16, 19, 25, 26, 29, 32, 34, 36, 43, 44, 48, 49], "useless": [5, 25, 49], "properli": [5, 31, 32, 33, 36, 37], "switch": [5, 28, 32, 34, 37, 44, 46, 47], "syntax": [5, 8, 30, 37, 46, 50], "6667": [5, 22, 32, 44, 49], "3rd": [5, 8], "remov": [5, 11, 16, 20, 28, 30, 31, 32, 35, 38, 39, 43, 47, 48, 49], "ftp": [5, 32], "fulli": [5, 37, 44, 49], "explicitli": [5, 44, 46], "prefix": [5, 8, 18, 22, 29, 33, 36, 37, 41, 46, 48, 49], "advantag": [5, 32, 47], "chaddr": [5, 36], "lot": [5, 8, 18, 29, 32, 34], "backward": [5, 40], "reflect": [5, 44], "cancel": [6, 44], "cd": [6, 8, 28, 31, 32, 44], "cp": 6, "dst": 6, "desc": [6, 28], "descript": [6, 28, 29, 30, 37, 44, 48, 50], "filestat": 6, "stat": 6, "get": [6, 7, 8, 11, 22, 23, 24, 28, 29, 33, 34, 37, 41, 50], "filenam": [6, 11, 19, 32, 37, 46], "nicknam": [6, 8, 22, 29, 30, 32, 34, 37, 45, 47, 48, 50], "hide": [6, 39, 44], "ln": 6, "filepath": 6, "localfil": 6, "l": [6, 11, 18, 22, 30, 34, 36, 37, 50], "filemask": 6, "mkdir": 6, "dir": [6, 30], "mv": 6, "pend": [6, 11], "pwd": [6, 32], "rm": [6, 32], "rmdir": 6, "optim": [6, 8, 22], "unhid": 6, "unshar": [6, 50], "api": [6, 31], "md5": [6, 10], "anymor": [6, 10, 20, 37], "won": [6, 11, 23, 28, 29, 32, 35, 36, 37, 44, 46, 48], "specif": [6, 11, 15, 17, 18, 20, 22, 25, 31, 32, 36, 39, 40, 44, 46, 48, 49, 50], "therefor": [6, 18, 32, 37, 44], "amount": [6, 37], "bandwidth": [6, 12], "storag": [6, 13, 43], "repli": [6, 14, 15, 17, 18, 34, 37, 44], "d": [6, 11, 14, 16, 28, 30, 31, 32, 33, 36, 37, 42, 44, 47, 50], "expect": [6, 14, 37, 44], "load": [6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 36, 37, 43, 44, 49], "asynchron": [6, 15, 44], "avoid": [6, 8, 15, 30], "long": [6, 11, 15, 19, 22, 23, 35, 37, 44, 45, 48], "period": [6, 15, 32, 44], "hang": [6, 15], "wait": [6, 15, 16, 18, 22, 24, 32, 34, 37, 44], "hostnam": [6, 11, 15, 30, 37, 39], "resolv": [6, 15, 37, 44], "timeout": [6, 15, 22, 24, 37, 48], "area": [6, 16, 37, 44, 47, 50], "within": [6, 16, 28, 32, 33, 35, 37, 40, 44], "usabl": [6, 16, 37], "onlin": [6, 16, 19, 30, 34], "retriev": [6, 19], "userlist": [6, 18, 21, 23], "gseen": [6, 21], "g": [6, 8, 21, 28, 32, 36, 37, 44, 50], "quann": [6, 21], "kreativrauschen": [6, 21], "Not": [6, 22, 30, 40], "equival": [6, 22, 33], "old": [6, 20, 22, 32], "no_irc": [6, 22], "servic": [6, 11, 17, 25, 30, 34, 44, 46, 49], "implement": [6, 7, 8, 17, 33, 34, 37, 40, 42, 43, 44, 49], "tiwtch": 6, "report": [6, 16, 26, 28, 32, 47], "statist": [6, 16, 26], "contest": 6, "site": [6, 50], "hour": [6, 26, 28, 35, 37, 44], "isn": [6, 16, 22, 23, 26, 32, 35, 44], "again": [6, 16, 26, 28, 31, 35, 36, 37, 43, 44, 48], "sent": [6, 16, 18, 23, 26, 30, 34, 37, 40, 41, 44, 46, 48, 50], "demonstr": [6, 27, 44], "right": [6, 8, 16, 17, 27, 29, 32, 44], "jul": 7, "25": [7, 11, 22, 37, 48], "2016": 7, "independ": 7, "main": [7, 29, 32, 33, 34, 41], "desir": [7, 8, 28, 30, 31, 32, 43], "extra": [7, 37, 40], "overhead": 7, "bloat": 7, "enhanc": 7, "instruct": [7, 32, 43], "direct": [7, 33, 36, 42, 44], "un": [7, 18, 35, 37, 44], "format": [7, 22, 28, 30, 32, 33, 37, 43, 44, 45, 48], "modulenam": [7, 28], "eggdrop1": 7, "folder": 7, "suffix": [7, 37], "rehash": [7, 28, 29, 30, 37], "ye": [7, 29, 30, 33, 44], "detect": [7, 22, 33, 39, 44, 46], "yourself": [7, 30, 32, 42, 43, 46], "until": [7, 11, 16, 35, 37, 44], "henc": [7, 28, 44], "nearli": 7, "who": [8, 11, 16, 18, 22, 29, 32, 34, 37, 41, 44, 50], "understand": [8, 31, 37, 44], "alreadi": [8, 11, 22, 28, 29, 31, 32, 33, 34, 36, 37, 43, 44, 49], "suitabl": [8, 48], "illustr": 8, "handl": [8, 29, 30, 31, 35, 37, 43, 46, 48], "snippet": 8, "alter": [8, 16, 38, 44, 49], "breviti": 8, "simplic": 8, "initi": [8, 28, 29, 32, 39, 40, 44, 46], "symbol": [8, 33, 44], "extern": [8, 17, 30, 37], "p_tcl_bind_list": [8, 31], "h_dcc": 8, "param": 8, "const": [8, 28], "char": [8, 28, 31, 37, 44], "length": [8, 18, 22, 28, 43, 44, 46], "tclhash": 8, "int": [8, 28, 31], "intfunc": 8, "return": [8, 18, 28, 31, 34, 43, 48], "aka": [8, 37], "tcl_bind_list_t": 8, "add_bind_t": [8, 31], "builtin_dcc": 8, "doe": [8, 11, 25, 29, 30, 34, 35, 37, 40, 41, 44, 48, 49, 50], "explain": [8, 11, 36, 44], "happen": [8, 29, 32, 35, 37, 44], "arbitrari": [8, 44], "argument": [8, 16, 18, 29, 30, 39, 44, 48], "import": [8, 28, 29, 30, 32, 34, 37, 41, 44], "That": [8, 25, 29, 32, 36, 44, 50], "mean": [8, 16, 18, 22, 29, 30, 31, 34, 35, 36, 37, 38, 39, 43, 44, 46, 48], "mask": [8, 16, 22, 29, 31, 37, 48], "test": [8, 29, 32, 50], "proc1": 8, "proc2": 8, "overwrit": [8, 17, 32, 44], "proc": [8, 22, 28, 29, 48], "myproc": [8, 44], "arg": [8, 28, 31], "putlog": [8, 22, 28, 29, 31], "Of": [8, 36, 37], "far": [8, 16], "against": [8, 11, 16, 20, 22, 29, 31, 32, 43, 44, 48], "receiv": [8, 15, 16, 22, 24, 30, 31, 36, 44, 48], "accept": [8, 16, 23, 25, 31, 33, 36, 37, 44, 46, 49], "check_tcl_dcc": 8, "cmd": [8, 37, 44], "idx": [8, 28, 31], "struct": [8, 31], "flag_record": [8, 31], "fr": [8, 31], "fr_global": [8, 31], "fr_chan": [8, 31], "11": [8, 44], "get_user_flagrec": 8, "con_chan": 8, "egg_snprintf": 8, "sizeof": [8, 31], "ld": 8, "sock": [8, 28, 37], "tcl_setvar": [8, 31], "interp": [8, 31], "_dcc1": 8, "nick": [8, 11, 18, 22, 26, 29, 30, 31, 32, 37, 50], "_dcc2": 8, "_dcc3": 8, "check_tcl_bind": [8, 31], "match_parti": 8, "bind_use_attr": 8, "bind_has_builtin": 8, "snip": 8, "temporari": [8, 11, 24, 26, 35, 37], "pass": [8, 29, 30, 31, 32, 34, 39, 41, 43, 48], "callback": [8, 34], "socket": [8, 17, 28, 33, 44, 46], "id": [8, 44], "putdcc": 8, "respond": [8, 11, 32, 44], "back": [8, 22, 29, 32, 37, 39, 42, 43, 44, 47], "depend": [8, 28, 34, 35, 42, 44, 46, 50], "caller": 8, "pars": [8, 44], "atr": 8, "match_typ": 8, "matchtyp": 8, "result": [8, 22, 34, 35, 37, 39, 44], "bind_nomatch": 8, "tm": 8, "tm_last": 8, "check_bind_match": 8, "continu": [8, 32, 44], "tc": 8, "suffic": [8, 29], "check_bind_flag": 8, "hit": [8, 44], "tcl_eval": 8, "procnam": [8, 29, 44, 48], "grab": [8, 44], "trigger_bind": 8, "func_nam": [8, 28], "suppli": [8, 37], "case": [8, 15, 20, 22, 29, 31, 32, 34, 37, 44], "uniqu": [8, 37, 44, 48], "identifi": [8, 30, 37, 43, 44, 50], "unsur": [8, 32], "wildcard": [8, 11, 29, 30, 44, 48], "exact": [8, 44], "tclegg": 8, "describ": [8, 28, 29, 32, 33, 36, 37], "AND": [8, 20, 32, 44], "bind_stack": [8, 31], "add_builtin": [8, 28], "cmd_t": [8, 28, 31], "null": [8, 28, 31], "mycmd": 8, "tcl_name": 8, "void": [8, 28, 31], "cc": [8, 28], "p": [8, 11, 17, 30, 32, 36, 37, 44, 50], "1024": [8, 16, 17, 24, 31, 32], "cd_tcl_cmd": 8, "tclcmd": 8, "func": [8, 28], "bindtyp": 8, "funcnam": 8, "h_raw": 8, "324": 8, "got324": 8, "raw": [8, 34, 37, 46], "cmd_boot": 8, "cdata": 8, "add_cd_tcl_cmd": 8, "bind_bind_entri": 8, "context": [8, 28], "suppos": 8, "typic": [8, 16, 25, 37, 38, 41, 44, 49], "tcl_command": 8, "tcl_putdcc": 8, "clientdata": 8, "tcl_interp": 8, "irp": [8, 31], "argc": 8, "argv": [8, 31], "f": [8, 11, 31, 36, 37, 44, 45, 48, 50], "okai": [8, 37], "verifi": [8, 22, 30, 37, 46], "count": [8, 22], "badarg": [8, 31], "hand": [8, 29, 37, 44], "macro": [8, 28, 31], "saniti": 8, "checkvalid": [8, 31], "findidx": 8, "atoi": 8, "tcl_appendresult": [8, 31], "invalid": [8, 44], "tcl_error": [8, 31], "tcl_resetresult": 8, "tcl_ok": [8, 31], "oppos": [8, 44], "userrec": [8, 31], "know": [8, 18, 19, 22, 25, 28, 29, 34, 35, 36, 37, 44, 47, 49], "valu": [8, 11, 14, 15, 18, 22, 25, 28, 29, 37, 43, 45, 46, 48, 49], "els": [8, 29, 31, 41, 44], "par": [8, 31], "associ": [8, 25, 34, 44, 49], "gbuildin_dcc": 8, "annot": 8, "gdb": 8, "backtrac": 8, "thommei": 8, "0x55e8bd8a49b0": 8, "0x55e8be6a0010": 8, "614": 8, "0x55e8bd8aec90": 8, "8977024": 8, "flags_udef": 8, "chanrec": [8, 18, 44], "0x55e8bd8aeae0": 8, "0x55e8bd8a4a10": 8, "0x55e8bbf002d0": 8, "0x55e8bd59b1c0": 8, "0x55e8bd7e3e00": 8, "678": 8, "0x55e8be642fa0": 8, "0x55e8be9f6bd0": 8, "0x55e8be7d9020": 8, "0x0": 8, "usr": 8, "lib": 8, "x86_64": 8, "linux": [8, 39], "libtcl8": 8, "lastbind": 8, "0x55e8bd5efda0": 8, "0x55e8bbf4112b": 8, "0x55e8bd5efd40": 8, "742": 8, "0x55e8bd5eecb0": 8, "0x7ffcf3f9dac1": 8, "0x7ffcf3f9d100": 8, "80": 8, "942": 8, "brkt": 8, "0x7ffcf3f9dac6": 8, "974": 8, "udef_glob": 8, "udef_chan": 8, "dcc_chat": 8, "buf": [8, 18], "1068": 8, "2002": [9, 13, 14, 19, 21, 24, 26, 35, 41, 45, 50], "none": [9, 10, 11, 13, 15, 19, 20, 21, 22, 24, 27, 44], "loadmodul": [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 37, 43, 49], "2000": [9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 27, 37, 38, 43], "2003": [10, 23, 29], "octob": [11, 20, 22, 37], "chanfil": [11, 32, 47], "expir": [11, 18, 19, 22, 35, 37, 44, 46], "enforc": [11, 30, 34, 37], "chanmod": [11, 30], "mix": [11, 18], "endless": 11, "insert": [11, 45], "below": [11, 16, 17, 23, 25, 28, 29, 32, 37, 43, 44, 48], "idl": [11, 28, 44], "kick": [11, 18, 22, 34, 37, 44, 47, 50], "disabl": [11, 18, 22, 30, 37, 39, 44, 46], "stopnethack": [11, 50], "de": [11, 34, 44], "anyon": [11, 35, 44], "serverop": 11, "seven": [11, 44], "turn": [11, 17, 22, 37, 44], "off": [11, 17, 18, 22, 32, 36, 37, 41, 44], "isoptest": 11, "wasoptest": 11, "split": [11, 18, 39, 41, 44, 45], "isop": 11, "wasop": [11, 18, 50], "bitch": 11, "reveng": 11, "punish": [11, 44, 50], "bad": [11, 44, 50], "four": [11, 29, 34, 37, 39, 44, 45], "deop": [11, 44, 50], "k": [11, 18, 22, 37, 44, 50], "specifi": [11, 15, 16, 17, 19, 22, 23, 28, 30, 32, 35, 37, 38, 39, 43, 44, 46, 48], "19": [11, 44], "correspond": [11, 30, 35, 44], "replac": [11, 22, 28, 30, 37, 44, 45, 49], "20": [11, 16, 18, 25, 30, 37, 44], "29": [11, 44], "30": [11, 16, 18, 24, 30, 43, 44], "39": [11, 44], "120": [11, 22, 44], "60": [11, 16, 19, 22, 37, 44], "aop": 11, "delai": [11, 16, 18, 29], "maximum": [11, 15, 16, 18, 19, 22, 24, 31, 37, 43, 44, 46], "autoop": 11, "autohalfop": 11, "autovoic": [11, 50], "No": [11, 23, 30, 33, 44, 49], "y": [11, 14, 33, 37, 50], "random": [11, 22, 36, 44], "putserv": [11, 29, 30], "privmsg": [11, 29, 30, 44], "lamest": [11, 32, 36, 37, 45], "me": [11, 50], "co": 11, "lame": [11, 18, 36, 37, 44], "enclos": [11, 31, 39, 44, 48], "brace": 11, "shorter": 11, "getop": 11, "botnetop": 11, "unban": [11, 37, 44], "rais": [11, 22], "15": [11, 37, 43, 44, 45], "constitut": [11, 22, 37], "integ": [11, 44], "plu": [11, 22, 37, 44, 46], "minu": 11, "front": [11, 29, 32, 33, 44, 49], "enforceban": 11, "dynamicban": [11, 44], "necessari": [11, 33], "rememb": [11, 29, 30, 32], "userban": 11, "dynamicexempt": [11, 44], "remain": [11, 35, 44], "userexempt": 11, "dynamicinvit": [11, 44], "userinvit": 11, "soon": [11, 44], "insecur": 11, "halfop": [11, 44, 50], "protectop": 11, "protecthalfop": 11, "dehalfop": [11, 44, 50], "protectfriend": 11, "statuslog": 11, "total": [11, 28, 38, 44], "member": [11, 28, 34], "regular": [11, 44, 46], "sampl": [11, 31, 32, 49], "01": [11, 18, 44], "40": [11, 30], "istn": 11, "friend": [11, 50], "revengebot": 11, "secret": 11, "cycl": [11, 22, 37], "dontkickop": 11, "instanc": [11, 34], "attack": [11, 20, 43], "inact": [11, 24], "leav": [11, 22, 32, 37, 41, 44, 49], "lose": 11, "nodesynch": 11, "fight": 11, "chanserv": 11, "ircop": [11, 18], "perman": [11, 35, 37, 44], "explan": [11, 32, 33, 44, 48], "nt": [11, 32], "chanset": [11, 30, 36], "2004": [12, 18], "level": [12, 17, 30, 31, 34, 37, 50], "gzip": [12, 44], "autosav": 13, "doesn": [13, 15, 18, 31, 32, 41, 44, 47, 48], "displai": [13, 16, 18, 22, 30, 31, 32, 37, 44, 45, 48], "februari": 14, "12": [14, 44], "behavior": [14, 18, 35, 37, 39, 44], "ping": 14, "less": [14, 41, 44], "finger": [14, 32], "userinfo": [14, 44], "septemb": 15, "26": [15, 32, 46, 50], "troubl": [15, 37], "ones": [15, 23, 36, 39, 44], "rel": [15, 28, 32, 44], "standard": [15, 17, 18, 24, 28, 29, 40, 44, 46, 49, 50], "cach": [15, 44], "86400": 15, "respect": [15, 39, 44, 45], "ttl": 15, "upper": 15, "boundari": [15, 31], "negcach": 15, "600": [15, 18], "neg": [15, 37, 44], "nxdomain": 15, "lookup": [15, 37, 39, 44], "fail": [15, 24, 37, 44, 46], "maxsend": 15, "resend": [15, 44], "queri": [15, 17, 34, 39], "retrydelai": 15, "dec": [16, 44], "2017": 16, "mydir": 16, "root": [16, 17], "incom": [16, 37, 44], "upload": [16, 32, 38, 44, 47], "central": [16, 37], "filedb": [16, 44], "subdirectori": [16, 44], "databas": [16, 44], "max": [16, 18, 19, 22, 24, 37], "effect": [16, 35, 37, 44], "infinit": 16, "files": 16, "size": [16, 24, 28, 31, 37, 44], "kb": 16, "sub": [16, 44], "brows": 16, "tell": [16, 29, 30, 31, 32, 33, 34, 36, 37, 44, 49], "queu": [16, 22, 44], "exactli": [16, 18, 28, 29, 44], "group": [16, 17, 37, 40, 44], "master": [16, 30, 32, 35, 36, 37, 44, 45, 50], "janitor": [16, 50], "broken": [16, 29, 37, 44], "word": [16, 18, 30, 31, 32, 36, 44, 48, 49], "break": [16, 44], "comment": [16, 18, 26, 29, 32, 37, 43], "over": [16, 22, 25, 28, 29, 32, 37, 39, 44, 46, 47, 49], "client": [16, 17, 22, 25, 30, 32, 34, 37, 40, 44, 46, 49], "too": [16, 18, 22, 24, 28, 37, 44], "patient": 16, "simultan": [16, 24, 44], "remaind": [16, 48], "mark": [16, 31, 38, 44, 50], "hidden": [16, 32, 38], "lsa": 16, "gif": 16, "uglyman": 16, "nobodi": [16, 29], "local": [16, 29, 32, 37, 41, 42, 44, 46], "snowbot": 16, "ugli": 16, "shown": [16, 32, 37], "kilobyt": [16, 37], "progress": 16, "eras": [16, 44], "remot": [16, 36, 37, 44, 45], "By": [16, 18, 20, 22, 24, 30, 34, 36, 37, 44, 46, 49], "clean": 16, "slow": [16, 32, 37], "db": 16, "itself": [16, 28, 29, 30, 31, 37, 44], "though": [16, 22, 29, 32, 44, 46], "tag": [16, 38, 40, 48], "filesystem": [16, 44, 50], "june": 17, "2019": 17, "oident": 17, "act": [17, 28, 37, 38, 44, 46], "daemon": [17, 37], "tradition": 17, "113": 17, "usernam": [17, 30, 32, 37, 48, 49], "custom": [17, 22, 29, 30, 34, 38, 44, 46], "oidentd": 17, "nor": 17, "thu": [17, 29, 34, 39, 43, 44], "modern": [17, 43], "oss": 17, "sudo": [17, 32], "setcap": 17, "cap_net_bind_servic": 17, "ep": 17, "imperson": 17, "iptabl": 17, "rout": [17, 44], "destin": [17, 28], "nat": [17, 37, 39], "prerout": 17, "eth0": 17, "dport": 17, "j": [17, 28, 36, 37, 44, 50], "redirect": 17, "addition": [17, 32, 34, 44], "caus": [17, 31, 32, 36, 44, 47], "bound": [17, 37, 44], "netsplit": [17, 18, 37, 38, 44], "reboot": [17, 30], "conflict": 17, "suit": [17, 31, 32], "singl": [17, 18, 30, 44, 48], "environ": [17, 37, 38, 46], "spoof": 17, "open": [17, 30, 31, 37, 41, 42, 44, 46], "builtin": [17, 44], "identd": [17, 32], "shouldn": 17, "begin": [17, 29, 39, 44], "august": 18, "21": [18, 32], "bounc": 18, "reach": [18, 22, 31, 37], "45": 18, "left": [18, 31, 44], "unless": [18, 22, 29, 32, 35, 37, 44], "overridden": 18, "unabl": [18, 32, 36, 39, 44, 49], "learn": [18, 30, 31, 32, 37, 38, 44], "themselv": [18, 32, 36, 44, 47], "userflag": 18, "hello": [18, 22, 30, 32, 37, 38, 44], "afterward": [18, 37], "1500": 18, "180": 18, "200": [18, 41], "byte": [18, 22, 24, 28, 31, 44], "unbind": [18, 37, 47, 48], "myword": 18, "addhost": 18, "takeov": 18, "occur": [18, 29, 44], "due": [18, 22, 29, 37, 44, 48], "blindli": 18, "ing": [18, 25, 49], "guess": 18, "discourag": 18, "opchar": 18, "recogn": [18, 22, 30, 50], "fine": [18, 22, 37, 48], "unrealircd": [18, 44], "lazi": 18, "gone": [18, 44], "At": [18, 31, 36, 37, 41, 49], "moment": [18, 32, 33], "ircd": [18, 22, 44], "per": [18, 44, 48], "stack": [18, 39, 44], "guarante": [18, 34], "although": [18, 32, 37, 44], "higher": [18, 20, 23, 24, 32, 46], "modes_per_line_max": 18, "recompil": [18, 32], "lk": 18, "354": [18, 44], "ircu2": 18, "rfc": [18, 22, 25, 44, 49], "compliant": [18, 22, 44], "1459": 18, "routin": [18, 37, 44], "notefil": [19, 44], "privat": [19, 23, 29, 30, 32, 33, 37, 41, 44, 46], "50": [19, 30, 37], "life": [19, 32], "dai": [19, 24, 37, 44, 47], "fwd": 19, "forward": 19, "address": [19, 23, 26, 32, 36, 37, 39, 46], "notifi": [19, 22, 32, 37, 38, 40, 44], "hourli": [19, 28, 37], "onjoin": 19, "2020": [20, 25, 37, 46, 48], "transit": [20, 43, 44], "safe": [20, 30, 32, 33, 43, 49], "earlier": [20, 31], "seamlessli": 20, "eventu": 20, "altogeth": 20, "outsid": [20, 31, 33, 37], "rijndael": 20, "sha256": 20, "cryptograph": [20, 43, 44], "digest": [20, 44], "algorithm": [20, 43], "round": [20, 43], "1600": 20, "brute": 20, "freenod": 22, "rizon": 22, "sane": 22, "altnick": [22, 32], "stb": 22, "unavail": [22, 37], "hi": [22, 29, 32], "primari": [22, 37], "realnam": [22, 44], "real": [22, 28, 30, 44], "field": [22, 31, 34, 37, 44, 46], "evnt": [22, 44], "init": [22, 37, 44], "init_serv": 22, "botnick": [22, 29, 30, 32, 37], "putquick": 22, "w": [22, 37, 44, 45, 50], "immedi": [22, 31, 32, 34, 43, 44], "deprici": 22, "disconnect": [22, 23, 37, 44], "7000": [22, 32, 33, 44], "2001": [22, 26, 27, 32, 37, 41], "db8": [22, 32, 37], "618": [22, 32, 37], "5c0": [22, 32, 37], "263": [22, 32, 37], "6669": [22, 32], "6697": [22, 32, 44, 46], "whenev": [22, 28, 31, 34, 36, 44, 46], "sign": [22, 30, 33, 37, 44, 45, 46, 49], "jump": [22, 31, 36, 46], "rate": 22, "transmit": 22, "lower": 22, "known": [22, 30, 37, 43, 44], "512": [22, 24], "verif": [22, 37, 46], "assum": [22, 29, 32, 33, 34, 35, 37, 44], "peer": [22, 37, 46], "alt": [22, 37], "16": [22, 37, 43, 44], "32": [22, 37], "revok": [22, 37], "instantli": 22, "low": [22, 24], "respons": [22, 34, 44], "stone": 22, "di": 22, "hasn": 22, "serverror": 22, "queue": [22, 28], "300": [22, 37], "dump": [22, 37, 44], "chunk": 22, "probabl": [22, 30, 32, 33, 44], "quiet": [22, 37, 50], "reject": [22, 36, 37], "squelch": 22, "lowercas": 22, "mirc": [22, 44], "exclus": [22, 44], "pubm": [22, 44], "msgm": [22, 44], "doubl": 22, "penalti": 22, "calcul": 22, "measur": 22, "trace": 22, "accordingli": 22, "three": [22, 30, 31, 34, 35, 36, 37, 44], "summar": 22, "cpu": [22, 37, 44], "intens": 22, "r": [22, 30, 36, 37, 44, 50], "umod": 22, "understood": 22, "indic": [22, 28, 32, 44, 48], "len": 22, "novemb": [23, 40], "resync": 23, "buffer": 23, "reconnect": [23, 44], "900": 23, "hold": [23, 44], "flush": 23, "overrid": [23, 39, 46], "mnot": 23, "paranoid": [23, 37], "discard": [23, 44], "dload": 24, "block": [24, 25, 28, 32, 45, 49], "ircii": [24, 44], "admit": 24, "turbo": [24, 32], "tmp": [24, 44], "stabil": 24, "nf": 24, "mount": 24, "pain": [24, 32], "xfer": [24, 50], "sharefail": 24, "unlink": [24, 37], "abort": [24, 32, 44, 46], "retri": 24, "april": [25, 48], "gatewai": [25, 48, 49], "stream": [25, 49], "claim": [25, 49], "certainli": [25, 32, 49], "meaning": [25, 44, 49], "intent": [25, 49], "spectrum": [25, 49], "focus": [25, 49], "raid": [25, 49], "donat": [25, 49], "userst": [25, 49], "roomstat": [25, 49], "few": [25, 29, 31, 32, 33, 37, 44, 49], "broadcast": [25, 41, 44, 48, 49], "000": [25, 41, 49], "unreli": [25, 48, 49], "moder": [25, 30, 48, 49], "mostli": [25, 44, 49], "infeas": [25, 49], "workaround": [25, 34], "tradit": [25, 39, 47, 48, 49], "extend": [25, 38, 40, 44], "downer": 25, "worri": 25, "ton": 25, "clearchat": [25, 48], "clearmsg": [25, 48], "hosttarget": [25, 48], "whisper": [25, 48], "usernotic": [25, 48], "roomsstat": 25, "twcmd": [25, 49], "ip": [26, 30, 32, 33, 37, 39], "logfil": [26, 28, 32, 37, 47], "publicli": 26, "31": [27, 37, 41, 44], "occurr": 28, "ensur": [28, 30, 32, 36, 43, 44], "module_nam": [28, 31], "making_modulenam": 28, "examin": 28, "close": [28, 44], "stdio": 28, "stdlib": 28, "sy": 28, "drastic": [28, 44], "reduc": [28, 48], "decent": 28, "throughout": 28, "refer": [28, 29, 33, 37, 44], "liter": [28, 44], "func_tabl": 28, "module_regist": [28, 31], "major": [28, 31, 32, 44], "minor": [28, 31, 44], "module_depend": [28, 31], "success": [28, 32, 44], "stage": 28, "any_other_funct": 28, "you_want_to_export": 28, "unload": [28, 31, 44], "apart": [28, 37], "tidi": 28, "thorough": [28, 30, 33, 49], "trail": 28, "garbag": 28, "module_undepend": [28, 31], "talli": 28, "memori": [28, 31, 44], "alloc": [28, 44], "dealloc": 28, "nmalloc": 28, "nfree": 28, "fault": 28, "posit": [28, 37], "resourc": 28, "dprintf": [28, 31], "printf": 28, "dp_log": 28, "dp_stdout": 28, "stdout": 28, "dp_mode": 28, "dp_server": 28, "dp_help": 28, "module_entri": 28, "module_find": 28, "search": [28, 30, 44], "module_renam": 28, "old_module_nam": 28, "new_module_nam": 28, "frim": 28, "add_hook": 28, "hook_num": 28, "del_hook": 28, "hook": 28, "hook_secondli": 28, "hook_minut": 28, "hook_5minut": 28, "hook_hourli": 28, "hook_daili": 28, "hook_read_userfil": 28, "hook_userfil": 28, "hook_pre_rehash": 28, "hook_rehash": 28, "hook_idl": 28, "whole": 28, "hook_backup": 28, "hook_load": 28, "hook_di": 28, "die": [28, 30, 32], "module_unload": 28, "module_load": 28, "tri": [28, 37, 44], "add_tcl_command": 28, "tcl_cmd": [28, 31], "tab": 28, "rem_tcl_command": 28, "function_to_cal": 28, "add_tcl_int": 28, "tcl_int": 28, "rem_tcl_int": 28, "variable_nam": 28, "readonli": 28, "add_tcl_str": 28, "tcl_string": 28, "rem_tcl_str": 28, "str_dir": 28, "constantli": 28, "append": [28, 31, 44], "str_protect": 28, "p_tcl_hash_list": 28, "rem_builtin": 28, "displaynam": 28, "convers": [28, 41, 46], "taken": [28, 44], "auch": 28, "filt": [28, 44], "noth": [28, 37, 44, 49], "logmod": 28, "nice": 28, "mention": 28, "realli": [29, 31, 32, 37, 47], "idea": [29, 32, 42], "busi": 29, "annoi": 29, "intention": 29, "definit": [29, 32, 33, 43], "languag": [29, 37, 38, 47], "especi": 29, "librari": [29, 31, 43, 46], "bottom": 29, "greetscript": 29, "author": [29, 33, 37, 46], "geo": 29, "gree": 29, "pmsg": 29, "greetmsg": 29, "welcom": 29, "uhost": [29, 44], "whew": 29, "ok": 29, "importantli": [29, 31], "wrote": 29, "credit": [29, 44], "contact": [29, 37], "hard": [29, 37], "larger": [29, 43], "harder": 29, "why": [29, 32, 44], "And": [29, 31], "omin": 29, "dissect": 29, "action": [29, 30, 33, 37, 44], "react": [29, 34], "toward": 29, "refin": 29, "foo": [29, 30, 31, 44], "aol": [29, 43], "sum": 29, "hostmask": [29, 30, 35, 36, 38, 43], "told": 29, "declar": [29, 31, 44], "said": [29, 31, 36, 44], "magic": 29, "awesom": 29, "sexystuff": 29, "third": [29, 31, 36], "fourth": 29, "trick": [29, 47], "didn": [29, 32, 44], "talk": [29, 31, 33, 34, 38, 41], "bodi": 29, "true": 29, "deserv": 29, "insid": [29, 37], "challeng": [29, 30], "mayb": [29, 37], "fancyp": 29, "sound": 29, "hint": 29, "utim": 29, "dozen": 29, "defens": 29, "grain": 29, "salt": [29, 43], "further": [30, 44], "IN": 30, "OR": [30, 44], "putti": 30, "listen": [30, 32, 36, 37, 39, 46], "3183": 30, "whoi": [30, 37], "chattr": [30, 50], "grant": [30, 38, 46, 49], "numer": [30, 33, 44], "chaninfo": [30, 36], "involv": 30, "snt": 30, "histor": [30, 44], "reli": [30, 44], "ten": 30, "commonli": [30, 33, 37, 44], "humor": 30, "youreggdropconfignameher": 30, "review": [30, 33], "youreggdrop": 30, "editor": [30, 32], "thee": [30, 44], "systemctl": 30, "botnam": [30, 36], "reload": 30, "acknowledg": 30, "confus": [30, 44], "unfortun": 30, "consult": [30, 39, 40, 46], "uncom": [30, 33, 37, 43], "layer": [30, 33], "becom": [30, 32, 37, 44], "preval": 30, "elimin": 30, "cloak": 30, "ever": [30, 32, 37, 44, 46], "appear": [30, 32, 36, 37, 44, 48], "mechan": 30, "plain": [30, 37, 46], "plaintext": [30, 44, 46], "exchang": 30, "ecdsa": 30, "nist256p": 30, "keypair": [30, 33], "pair": [30, 33, 34, 44, 46, 48], "ecparam": 30, "genkei": 30, "prime256v1": 30, "pem": [30, 37], "fingerprint": [30, 36, 37, 46], "ec": 30, "noout": 30, "conv_form": 30, "grep": 30, "tail": 30, "tr": 30, "xxd": 30, "base64": 30, "On": [30, 32, 33, 35, 36], "pubkei": 30, "req": [30, 37, 46], "x509": [30, 37, 46], "node": [30, 46], "keyout": [30, 46], "crt": [30, 37, 46], "yoru": 30, "outform": 30, "der": 30, "sha1sum": 30, "cut": 30, "f1": 30, "privatekei": [30, 33, 36, 37, 46], "cert": [30, 36, 37, 46], "onto": 31, "wherea": [31, 44], "our": [31, 32, 36, 44], "redistribut": 31, "publish": [31, 37], "hope": [31, 32, 49], "merchant": 31, "fit": 31, "FOR": 31, "59": [31, 44], "templ": 31, "330": 31, "02111": 31, "1307": 31, "necessarili": [31, 44], "undef": 31, "server_func": 31, "export_scop": 31, "woobie_start": 31, "woobie_expmem": 31, "woobie_report": 31, "global_func": 31, "woobie_t": 31, "108": 31, "woobie_clos": 31, "dosen": [], "log_cmd": 31, "print": 31, "cmd_woobi": 31, "mywoobi": 31, "scope": [31, 33], "tutori": [31, 33], "echo": [31, 38, 40, 47], "tcl_echom": 31, "stdvar": 31, "strcmp": 31, "llama": [31, 36], "illeg": 31, "input": [31, 44], "paramt": [], "paramet": [31, 44], "exceed": [31, 37], "style": [31, 35, 44], "quset": 31, "mytcl": 31, "echom": 31, "newli": 31, "certain": [31, 35, 37, 38, 39, 44, 45, 48, 50], "condit": 31, "met": 31, "h_woob": 31, "woobie_2char": 31, "del_bind_t": 31, "woobie_3char": 31, "bar": [31, 44], "moo": [31, 44], "boilerpl": 31, "check_tcl_bindnam": 31, "check_tcl_woobi": 31, "userhost": [31, 48], "snprintf": 31, "_woob1": 31, "_woob2": 31, "match_mask": 31, "bind_exec_log": 31, "encount": [31, 32, 49], "perhap": 32, "websit": 32, "slennox": 32, "incredibli": [32, 44], "page": [32, 42], "prove": 32, "debian": [32, 33], "apt": [32, 33], "wget": 32, "commadlin": 32, "zxvf": 32, "seri": [32, 44, 46], "multi": 32, "comfort": 32, "spent": [32, 44], "appli": [32, 35, 37, 43, 50], "daili": [32, 44], "chanc": 32, "commandlin": 32, "checkout": [32, 42], "skip": [32, 44], "commerci": 32, "problem": [32, 37, 39], "box": [32, 37], "isp": 32, "curl": 32, "ssh": 32, "haven": 32, "gunzip": 32, "xvf": 32, "extract": [32, 44], "slash": [32, 41], "brief": 32, "fast": 32, "botdir": 32, "cooldud": 32, "delet": [32, 44, 47], "rf": 32, "handi": 32, "zip": 32, "notepad": 32, "editplu": 32, "nano": 32, "vim": 32, "offer": [32, 33, 34, 48, 49], "quicker": 32, "nicebot": 32, "entir": [32, 44, 48, 49], "carefulli": [32, 44], "vagu": 32, "preserv": 32, "llamabot": [32, 37], "login": [32, 37, 43, 48], "vhost4": [32, 37, 39], "vhost": [32, 37, 39], "ipv4": [32, 37, 39], "ie": [32, 43, 44, 46], "vhost6": [32, 37, 39], "5254": 32, "dead": 32, "b33f": 32, "1337": 32, "f270": 32, "captur": [32, 44, 47], "mcobx": 32, "jkp": 32, "donkei": 32, "hors": 32, "3333": [32, 36, 37], "65535": [32, 37], "49152": 32, "rang": [32, 37], "reserv": [32, 37, 41], "basi": 32, "stealth": [32, 37], "scan": 32, "newus": [32, 37], "mrlame": [32, 37], "mrslame": [32, 37], "addus": 32, "rejoin": [32, 44], "aren": [32, 37, 44, 47, 48], "preced": [32, 44, 46], "backslash": 32, "rule": 32, "prematur": 32, "phew": 32, "cross": 32, "gave": 32, "promptli": 32, "kill": [32, 44], "pid": [32, 37, 44], "mnt": 32, "launch": 32, "persist": 32, "luck": [32, 49], "walk": 33, "scenario": [33, 34, 36], "sidenot": 33, "despit": 33, "anachron": 33, "interchang": [33, 39], "transport": 33, "protocol": [33, 37, 40, 44, 46], "appreci": 33, "fork": [33, 42], "ubuntu": 33, "distro": 33, "denot": [33, 44], "pretendnet": 33, "suffici": 33, "z": [33, 50], "wizard": 33, "5555": [33, 36, 37], "hubbot": [33, 36], "perfect": 34, "status": 34, "accur": [34, 44, 48], "alert": [34, 49], "deauthent": 34, "spec": 34, "isupport": 34, "005": [34, 40, 44], "eggdroptest": [34, 48], "beerbot": 34, "tn": 34, "announc": 34, "issupport": 34, "isset": 34, "reliabl": [34, 44, 48], "significantli": [34, 48], "increas": [34, 37, 43], "accuraci": 34, "supplementari": 34, "attach": [34, 44, 48], "overal": 34, "situat": [34, 36], "cover": [34, 35, 36], "march": [35, 45, 50], "07": [35, 50], "clarifi": 35, "sticki": [35, 44], "unsticki": 35, "stick": 35, "attribut": [35, 36, 44, 50], "kept": [35, 37], "obvious": [35, 44], "unstick": 35, "whose": [35, 44], "whichev": 35, "consist": [36, 38, 41, 44], "leaf": [36, 37, 43, 46], "assign": [36, 37, 44], "aggress": 36, "passiv": 36, "physic": 36, "bota": 36, "botb": 36, "botc": 36, "sharebot": [36, 37, 44], "slave": 36, "botattr": 36, "isol": 36, "unlimit": 36, "4444": [36, 37], "thoroughli": 36, "special": [36, 44], "relink": 36, "scripter": 36, "prepar": 36, "lameshar": 36, "hp": [36, 37], "beldin": 36, "pipe": 36, "he": [36, 44], "unreach": 36, "auth": [36, 37, 46], "fprint": [36, 37, 46], "sha1": [36, 46], "0and": 36, "intead": [], "qualifi": 37, "admin": [37, 45], "lamer": 37, "someircnetwork": 37, "timezon": 37, "est": 37, "timestamp": [37, 44], "alphabet": 37, "european": 37, "utc": 37, "cet": 37, "offset": 37, "coordin": 37, "univers": 37, "gmt": [37, 44], "west": 37, "prime": 37, "meridian": 37, "east": 37, "23": [37, 44], "env": 37, "tz": 37, "everywher": [37, 39, 44], "99": [37, 41], "virtual": 37, "outgo": [37, 44, 47], "prefer": [37, 39, 46], "resolut": 37, "famili": 37, "addlang": [37, 44], "english": [37, 47], "egg_lang": 37, "danish": 37, "french": 37, "finnish": 37, "german": 37, "chatter": 37, "24": [37, 39, 44], "logfilenam": 37, "yesterdai": 37, "48": 37, "concurr": [37, 43], "infin": 37, "decreas": 37, "logsiz": 37, "550": 37, "fill": [37, 42, 46], "quota": 37, "ram": 37, "hole": 37, "care": [37, 44, 49], "logflag": 37, "misc": [37, 44], "wallop": [37, 44], "eight": [37, 44], "belong": 37, "mco": [37, 44], "jpk": 37, "min": 37, "sec": 37, "man": 37, "strftime": 37, "forev": 37, "digit": [37, 46], "month": [37, 44], "fresh": 37, "militari": 37, "03": [37, 44], "00": [37, 44, 45], "am": [37, 50], "midnight": 37, "04may2000": 37, "produc": [37, 44], "yyyymmdd": 37, "manpag": 37, "mkcoblx": 37, "pidfil": 37, "motd": [37, 45], "banner": [37, 45], "perm": 37, "0600": 37, "octal": 37, "remind": 37, "rw": 37, "0400": 37, "0200": 37, "0660": 37, "0440": 37, "0220": 37, "0666": 37, "0444": 37, "0222": 37, "kiddi": 37, "head": 37, "unimport": 37, "deal": [37, 44, 50], "maxim": 37, "1025": 37, "prepend": 37, "whether": [37, 39, 44], "prohibit": 37, "sanitycheck": 37, "bogu": 37, "ground": 37, "wouldn": 37, "anywai": 37, "thr": 37, "firewal": 37, "sun": 37, "barr": 37, "ebai": 37, "3666": 37, "behind": 37, "passthru": 37, "127": 37, "192": [37, 44], "168": [37, 44], "255": 37, "172": 37, "transpar": 37, "masquerad": 37, "portrang": 37, "url": [37, 44], "birthdai": 37, "userinfo1": 37, "moreov": 37, "simul": [37, 44], "ethic": 37, "dk": [37, 44], "dupwait": 37, "spread": 37, "lag": [37, 41], "cidr": [37, 44], "notat": 37, "genrsa": 37, "4096": [37, 46], "rsa": 37, "strong": 37, "enough": 37, "schat": [37, 46], "conveni": 37, "cipher": [37, 44, 46], "side": [37, 44, 46, 49], "365": 37, "depth": [37, 46], "chain": [37, 46], "shall": 37, "capath": [37, 46], "cafil": [37, 46], "ca": 37, "colon": [37, 39], "comma": [37, 41, 44], "silent": 37, "adh": 37, "anonym": 37, "dh": 37, "uid": [37, 46], "chfinger": 37, "slower": 37, "everydai": 37, "limbo": 37, "serv": 37, "alltool": 37, "robot": 38, "regularli": 38, "awai": [38, 40, 44], "chghost": [38, 40], "setnam": [38, 40], "whox": [38, 44], "unaccess": 38, "combin": [38, 44], "mar": 39, "2021": [39, 40, 44, 47], "establish": [39, 44, 46], "freebsd": 39, "netbsd": 39, "openbsd": 39, "mac": 39, "proper": [39, 44], "vista": 39, "xp": 39, "unoffici": 39, "wherev": 39, "squar": 39, "bracket": 39, "doubt": 39, "Their": 39, "began": 40, "rfc1459": [40, 44], "rfc2812": 40, "compris": 40, "decid": [40, 43], "emerg": 40, "optino": 40, "assumpt": 40, "explicit": 40, "302": [40, 44], "miniatur": 41, "watch": [41, 48], "999": 41, "wide": [41, 46], "anywher": [41, 44], "dot": 41, "apostroph": 41, "everyon": [41, 44], "contribut": 42, "think": [42, 50], "repo": 42, "click": [42, 49], "button": [42, 49], "descriptivebranchnam": 42, "confirm": [42, 44], "push": [42, 44], "yourusernam": 42, "yourbranchnam": 42, "templat": 42, "pour": 42, "cold": [42, 43], "bask": 42, "warm": 42, "karma": 42, "crytopgraphi": 43, "content": [43, 44, 48], "sensit": 43, "practic": [43, 44], "crypto": 43, "solut": 43, "deriv": 43, "revers": [43, 44], "seamless": 43, "enjoi": 43, "beverag": 43, "chpass": 43, "consider": 43, "ideal": [43, 49], "essenti": 43, "fanci": 43, "lobster": 43, "dinner": 43, "encpass2": 43, "pbk": 43, "exhaust": [44, 48], "categori": 44, "vertic": 44, "faster": 44, "bypass": 44, "caution": 44, "lieu": 44, "negoti": [44, 46], "dict": [44, 48], "mytag": 44, "baa": 44, "flat": 44, "servivc": 44, "botfl": 44, "botaddr": 44, "laston": 44, "xtra": 44, "visibl": 44, "counterpart": 44, "empti": [44, 48], "filearea": 44, "remotebotnam": 44, "globalflag": 44, "channelflag": 44, "subsequ": 44, "botaddress": 44, "ipaddress": 44, "ipv4address": 44, "ipv6address": 44, "behav": 44, "getinfo": 44, "unstuck": 44, "jupe": 44, "sublist": 44, "zero": 44, "differenti": 44, "abcdechannel": 44, "got": 44, "modechang": 44, "refresh": [44, 48], "fragil": 44, "notif": 44, "offlin": 44, "behalf": 44, "selecet": 44, "compon": 44, "duplic": 44, "element": 44, "bywho": 44, "ag": 44, "reset": 44, "reread": 44, "memberlist": 44, "lost": 44, "ntik": 44, "serverlist": 44, "ex": 44, "goober": 44, "ON": 44, "forget": 44, "reiniti": 44, "coupl": 44, "throw": 44, "99999": 44, "greater": 44, "equal": 44, "she": 44, "mpj": 44, "pj": 44, "moc": 44, "mp": 44, "configfil": 44, "omit": [44, 46], "boldfac": 44, "video": 44, "underlin": [44, 45], "ansi": 44, "ctrl": 44, "bell": 44, "ordinari": [44, 46], "ital": 44, "intercept": 44, "item": 44, "uplink": 44, "botnetnick": 44, "file_receiv": 44, "file_send": 44, "file_send_pend": 44, "readabl": 44, "lindex": 44, "six": 44, "blank": 44, "mandatori": 44, "permit": 44, "regardless": 44, "failur": [44, 48], "kind": 44, "succeed": 44, "pathnam": 44, "temp": 44, "resum": 44, "bitchx": 44, "five": 44, "jp": 44, "34": 44, "04": 44, "06": 44, "08": [44, 45], "interv": 44, "secondli": 44, "repres": [44, 48], "jan": [44, 46], "1970": 44, "convert": 44, "week": 44, "804600": 44, "vari": [44, 50], "posix": 44, "portabl": 44, "fri": 44, "aug": 44, "55": 44, "1973": 44, "rand_max": 44, "2147483647": 44, "underli": 44, "pseudo": 44, "relinquish": 44, "deliv": 44, "notebox": 44, "caught": 44, "encod": [44, 45], "ascii": 44, "64": 44, "ecb": 44, "cbc": 44, "pick": 44, "fatal": 44, "wasn": 44, "128": 44, "pre": [44, 46], "myownevent123": 44, "todai": 44, "couldn": 44, "17": 44, "insensit": 44, "simplifi": 44, "rfc_compliant": 44, "mem": 44, "exclud": 44, "cleartext": 44, "vali": 44, "valis0": 44, "crappi": 44, "math": 44, "ufl": 44, "edu": [44, 50], "eu": 44, "pl1": 44, "1010201": 44, "mnnrrpp": 44, "nn": 44, "rr": 44, "pp": 44, "437": 44, "expans": 44, "quot": [44, 48], "highest": 44, "prioriti": 44, "danger": 44, "logic": 44, "proce": 44, "easiest": 44, "build": 44, "ti": 44, "lastli": 44, "ov": 44, "mn": 44, "unknown": 44, "fil": 44, "phrase": 44, "spoken": 44, "notc": 44, "breach": 44, "notcproc": 44, "partproc": 44, "signoff": 44, "possibli": [44, 48], "twice": 44, "rawt": 44, "topc": 44, "kicker": 44, "newnick": 44, "typo": 44, "18": 44, "guppi": 44, "mode_proc": 44, "stai": 44, "mode_proc_fix": 44, "ctcr": 44, "embed": 44, "supplant": 44, "368": 44, "unexpect": 44, "chon": 44, "chof": 44, "recipi": 44, "rcvd": 44, "invok": 44, "dronepup": 44, "eden": 44, "wild": 44, "bcst": 44, "disc": 44, "splt": 44, "Be": 44, "awar": 44, "fals": 44, "alarm": 44, "fake": 44, "rejn": 44, "needop": 44, "needal": 44, "flud": 44, "wall": 44, "sender": 44, "chjn": 44, "chpt": 44, "0000": 44, "9999": 44, "schedul": 44, "var": 44, "pad": 44, "unld": 44, "nkch": 44, "oldhandl": 44, "newhandl": 44, "sighup": 44, "hup": 44, "sigterm": 44, "sigil": 44, "ill": 44, "sigquit": 44, "prerehash": 44, "prerestart": 44, "preinit": 44, "tout": 44, "stall": 44, "flexibl": [44, 46], "noqueu": 44, "cron": 44, "weekdai": 44, "evalu": 44, "express": 44, "delimit": 44, "whitespac": 44, "sundai": 44, "handshak": 44, "shutdownreason": 44, "shutdown": 44, "sigkil": 44, "ircawai": 44, "301": 44, "catch": 44, "invt": 44, "invite": 44, "dictionari": 44, "late": 44, "distinguish": 44, "unset": 44, "revert": 44, "statement": 44, "treat": [44, 49], "signal": 44, "verbos": 44, "affet": 44, "retain": 44, "driven": 44, "misnom": 44, "song": 44, "danc": 44, "eof": 44, "arriv": 44, "dispos": 44, "newidx": 44, "6687": 44, "escap": 44, "invers": 45, "flash": 45, "botnetcentr": 45, "percent": 45, "col": 45, "column": 45, "width": 45, "center": 45, "70": 45, "meet": 46, "autodetect": 46, "forcefulli": 46, "sslinc": 46, "ssllib": 46, "starttl": 46, "certifict": 46, "graphic": 46, "deliber": 46, "sdcc": 46, "kvirc": 46, "synchron": 46, "infrastructur": 46, "subject": 46, "s_client": 46, "sslport": 46, "issuer": 46, "jun": 47, "02": 47, "2500": 47, "high": 47, "therebi": [47, 49], "lang": 47, "techniqu": 47, "yourbot": 47, "myvar": 47, "held": 48, "natur": 48, "WILL": 48, "unintend": 48, "consequ": 48, "truncat": 48, "assur": 48, "replic": [48, 49], "vip": [48, 49], "subscrib": [48, 49], "badgui": 48, "comprehens": 48, "twith": 48, "gui": 48, "flagmask": 48, "ccht": 48, "histori": 48, "tmi": 48, "tv": [48, 49], "target": 48, "cmsg": 48, "msgid": 48, "htgt": 48, "viewer": 48, "similarli": 48, "arbitrarili": 48, "wspr": 48, "popul": 48, "wspm": 48, "rmst": 48, "emot": 48, "uncertainti": 48, "usst": 48, "usrntc": 48, "discontinu": 49, "technic": 49, "token": 49, "oauth": 49, "alphanumer": 49, "pretend": 49, "j9irk4vs28b0obz9easys4w2ystji3u": 49, "spoiler": 49, "sake": 49, "light": 49, "decis": 49, "notabl": 49, "topic": 49, "degrad": 49, "capac": 49, "face": 49, "hubcap": 50, "clemson": 50, "hate": 50, "milk": 50, "meaningless": 50, "titl": 50, "entitl": 50, "badg": 50, "q": 50, "mainten": 50, "washalfop": 50, "nethack": 50, "highlight": 50, "2023": [0, 3, 4, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50]}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"about": [0, 2, 39, 40, 46], "eggdrop": [0, 2, 3, 4, 5, 6, 7, 8, 28, 29, 30, 31, 32, 33, 34, 36, 37, 38, 42, 44, 48], "bore": 1, "legal": 1, "stuff": 1, "an": [2, 28, 29, 30, 33], "open": 2, "sourc": [2, 16, 32], "irc": [2, 18, 33, 46, 49], "bot": [2, 16, 36, 44], "some": 2, "thing": 2, "you": 2, "can": [2, 7], "do": [2, 7, 28], "how": [2, 4, 5, 7, 28], "get": [2, 4, 16, 32, 44], "instal": [2, 3, 7, 32, 39, 46], "pre": [2, 4, 33], "requisit": [2, 4, 33], "where": 2, "find": 2, "more": 2, "help": [2, 4], "us": [2, 34, 36], "tutori": 2, "modul": [2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 37, 44], "quick": [3, 4], "startup": [3, 4], "cygwin": 3, "requir": [3, 28, 31, 34, 44], "window": 3, "readm": 4, "notic": 4, "what": [4, 7, 28, 36], "i": [4, 7, 36], "ftp": 4, "git": 4, "develop": 4, "snapshot": 4, "docker": 4, "system": [4, 30], "upgrad": [4, 5], "command": [4, 5, 25, 31, 44, 47, 48], "line": [4, 41], "auto": 4, "start": [4, 32], "document": [4, 5], "obtain": 4, "must": 5, "read": 5, "chang": [5, 44], "v1": 5, "9": 5, "config": [5, 16, 32, 44, 47, 49], "file": [5, 16, 32, 33, 37, 44, 47, 49], "script": [5, 29, 34, 37, 46], "botnet": [5, 33, 36, 37, 46], "tcl": [5, 8, 25, 31, 34, 43, 44, 48], "includ": 6, "inform": [7, 33], "ar": 7, "compil": 7, "without": 7, "dynam": 7, "static": 7, "still": 7, "need": 7, "loadmodul": [7, 44], "bind": [8, 31, 44, 48], "intern": 8, "tabl": 8, "creation": 8, "stackabl": [8, 44], "ht_stackabl": 8, "trigger": 8, "ani": 8, "c": 8, "handler": 8, "summari": 8, "assoc": [9, 44], "blowfish": 10, "channel": [11, 16, 30, 44, 48], "compress": [12, 44], "consol": [13, 37, 44], "ctcp": [14, 39], "dn": 15, "filesi": [16, 44], "setup": 16, "partylin": [16, 25, 30, 31], "usag": [16, 39, 40, 43, 46], "cancel": 16, "cd": 16, "directori": [16, 37, 44], "cp": [16, 44], "dst": 16, "desc": [16, 44], "descript": 16, "filestat": 16, "user": [16, 30, 36, 44, 50], "clear": 16, "stat": 16, "filenam": [16, 44], "nicknam": [16, 44], "hide": 16, "ln": 16, "filepath": 16, "localfil": 16, "l": [16, 44], "filemask": 16, "mkdir": [16, 44], "dir": [16, 44], "flag": [16, 30, 36, 44, 48, 50], "mv": [16, 44], "dest": 16, "pend": 16, "pwd": 16, "quit": 16, "rm": 16, "rmdir": [16, 44], "share": [16, 23, 36], "optim": 16, "unhid": 16, "unshar": 16, "ident": 17, "note": [19, 44], "pbkdf2": 20, "seen": 21, "server": [22, 33, 34, 44], "transfer": 24, "twitch": [25, 48, 49], "limit": [25, 44, 49], "api": 25, "uptim": [26, 44], "woobi": 27, "write": [28, 29, 31], "module_start": 28, "module_t": 28, "module_clos": 28, "module_expmem": 28, "module_report": 28, "addit": [28, 33], "function": [28, 49], "common": 30, "first": 30, "step": 30, "log": [30, 37, 47], "join": [30, 34], "add": [30, 44], "host": [30, 44], "assign": 30, "permiss": 30, "configur": [30, 32, 33, 43], "set": [30, 32, 37, 39, 44, 46], "automat": 30, "restart": [30, 44], "crontab": 30, "method": 30, "old": [30, 44], "systemd": 30, "newer": 30, "authent": [30, 36, 46], "nickserv": 30, "up": [30, 32], "sasl": 30, "basic": [31, 37], "header": 31, "code": 31, "ad": [31, 36], "defin": 31, "argument": 31, "call": 31, "export": 31, "prerequisit": 32, "The": [32, 41], "super": 32, "short": 32, "version": [32, 44], "histori": 32, "download": 32, "locat": 32, "edit": [32, 49], "No": 32, "show": 32, "enabl": [33, 34, 43, 44], "tl": [33, 36, 46], "secur": [33, 36, 46], "connect": [33, 44], "protect": 33, "commun": 33, "prepar": 33, "gener": 33, "kei": [33, 44, 46], "listen": [33, 44], "account": [34, 44], "track": 34, "capabl": [34, 40], "extend": 34, "notifi": 34, "whox": 34, "check": 34, "statu": [34, 44], "determin": 34, "support": [34, 39, 40, 46], "best": 34, "effort": 34, "tag": [34, 44], "ban": [35, 44], "invit": [35, 44], "exempt": [35, 44], "link": [36, 44], "term": 36, "exampl": 36, "bottre": 36, "botflag": 36, "make": 36, "record": [36, 44], "certif": [36, 46], "core": 37, "execut": 37, "path": 37, "dcc": [37, 44, 46], "telnet": 37, "advanc": [37, 47], "ssl": [37, 46], "featur": 38, "ipv6": 39, "chat": 39, "chat4": 39, "chat6": 39, "ircv3": 40, "cap": [40, 44], "parti": 41, "patch": 42, "submit": 42, "via": [42, 44], "github": 42, "encrypt": [43, 44], "hash": 43, "background": 43, "hybrid": 43, "solo": 43, "interfac": 43, "output": 44, "putserv": 44, "text": 44, "option": 44, "puthelp": 44, "putquick": 44, "putnow": 44, "onelin": 44, "putkick": 44, "nick": [44, 48], "reason": 44, "putlog": 44, "putcmdlog": 44, "putxferlog": 44, "putloglev": 44, "": 44, "dumpfil": 44, "queuesiz": 44, "queue": 44, "clearqueu": 44, "valu": 44, "req": 44, "raw": 44, "arg": [44, 48], "tagmsg": 44, "target": 44, "ip": 44, "port": 44, "password": 44, "remov": 44, "list": 44, "manipul": 44, "countus": 44, "validus": 44, "handl": 44, "findus": 44, "userlist": 44, "passwdok": 44, "pass": 44, "getus": 44, "entri": 44, "type": [44, 48], "extra": 44, "info": 44, "setus": 44, "chhandl": 44, "new": 44, "chattr": 44, "botattr": 44, "matchattr": 44, "addus": 44, "hostmask": 44, "addbot": 44, "address": 44, "botport": 44, "userport": 44, "delus": 44, "delhost": 44, "addchanrec": 44, "delchanrec": 44, "haschanrec": 44, "getchaninfo": 44, "setchaninfo": 44, "newchanban": 44, "creator": 44, "comment": 44, "lifetim": 44, "newban": 44, "newchanexempt": 44, "newexempt": 44, "newchaninvit": 44, "newinvit": 44, "stickban": 44, "banmask": 44, "unstickban": 44, "stickexempt": 44, "exemptmask": 44, "unstickexempt": 44, "stickinvit": 44, "invitemask": 44, "unstickinvit": 44, "killchanban": 44, "killban": 44, "killchanexempt": 44, "killexempt": 44, "killchaninvit": 44, "killinvit": 44, "ischanjup": 44, "isban": 44, "ispermban": 44, "isexempt": 44, "ispermexempt": 44, "isinvit": 44, "isperminvit": 44, "isbansticki": 44, "isexemptsticki": 44, "isinvitesticki": 44, "matchban": 44, "matchexempt": 44, "matchinvit": 44, "banlist": 44, "exemptlist": 44, "invitelist": 44, "newignor": 44, "killignor": 44, "ignorelist": 44, "isignor": 44, "save": 44, "reload": 44, "backup": 44, "name": 44, "savechannel": 44, "loadchannel": 44, "channame2dnam": 44, "chandname2nam": 44, "dname": 44, "isbotnick": 44, "botisop": 44, "botishalfop": 44, "botisvoic": 44, "botonchan": 44, "isop": 44, "ishalfop": 44, "wasop": 44, "washalfop": 44, "isvoic": 44, "isidentifi": 44, "isawai": 44, "isircbot": 44, "onchan": 44, "monitor": 44, "accounttrack": 44, "getaccount": 44, "nick2hand": 44, "account2nick": 44, "hand2nick": 44, "handonchan": 44, "ischanban": 44, "ischanexempt": 44, "ischaninvit": 44, "chanban": 44, "chanexempt": 44, "chaninvit": 44, "resetban": 44, "resetexempt": 44, "resetinvit": 44, "resetchanidl": 44, "resetchanjoin": 44, "resetchan": 44, "refreshchan": 44, "getchanhost": 44, "getchanjoin": 44, "onchansplit": 44, "chanlist": 44, "chanflag": 44, "getchanidl": 44, "getchanmod": 44, "jump": 44, "pushmod": 44, "mode": 44, "flushmod": 44, "topic": 44, "validchan": 44, "isdynam": 44, "setudef": 44, "int": 44, "str": 44, "renudef": 44, "oldnam": 44, "newnam": 44, "deludef": 44, "getudef": 44, "chansettyp": 44, "isupport": 44, "isset": 44, "putdcc": 44, "idx": 44, "dccbroadcast": 44, "messag": 44, "dccputchan": 44, "boot": 44, "dccsimul": 44, "hand2idx": 44, "idx2hand": 44, "valididx": 44, "getchan": 44, "setchan": 44, "resetconsol": 44, "echo": 44, "strip": 44, "putbot": 44, "putallbot": 44, "killdcc": 44, "botlist": 44, "islink": 44, "dccuse": 44, "dcclist": 44, "socklist": 44, "whom": 44, "chan": [44, 48], "getdccidl": 44, "getdccawai": 44, "setdccawai": 44, "dccdumpfil": 44, "numberlist": 44, "erasenot": 44, "listnot": 44, "storenot": 44, "from": 44, "msg": 44, "killassoc": 44, "compressfil": 44, "level": 44, "src": 44, "uncompressfil": 44, "iscompress": 44, "setpwd": 44, "getpwd": 44, "getfil": 44, "getdir": 44, "dccsend": 44, "ircnick": 44, "filesend": 44, "fileresend": 44, "setdesc": 44, "getdesc": 44, "setown": 44, "getown": 44, "setlink": 44, "getlink": 44, "getfileq": 44, "getfilesendtim": 44, "destin": 44, "getflag": 44, "setflag": 44, "miscellan": 44, "keyword": 44, "mask": 44, "proc": 44, "unbind": 44, "logfil": 44, "maskhost": 44, "masktyp": 44, "timer": 44, "minut": 44, "count": 44, "timernam": 44, "utim": 44, "second": 44, "killtim": 44, "killutim": 44, "unixtim": 44, "durat": 44, "strftime": 44, "formatstr": 44, "time": 44, "ctime": 44, "myip": 44, "rand": 44, "control": 44, "sendnot": 44, "unlink": 44, "string": [44, 47], "decrypt": 44, "base64": 44, "encpass": 44, "die": 44, "unam": 44, "dnslookup": 44, "hostnam": 44, "arg1": 44, "arg2": 44, "argn": 44, "md5": 44, "callev": 44, "event": 44, "traffic": 44, "unloadmodul": 44, "loadhelp": 44, "helpfil": 44, "unloadhelp": 44, "reloadhelp": 44, "rehash": 44, "stripcod": 44, "matchaddr": 44, "matchcidr": 44, "block": 44, "prefix": 44, "matchstr": 44, "pattern": 44, "rfcequal": 44, "string1": 44, "string2": 44, "istl": 44, "starttl": 44, "tlsstatu": 44, "global": 44, "variabl": [44, 47], "botnick": 44, "botnam": 44, "serveraddress": 44, "numvers": 44, "onlin": 44, "lastbind": 44, "isjup": 44, "handlen": 44, "configurearg": 44, "languag": 44, "return": 44, "procedur": 44, "tcp": 44, "match": 44, "charact": 44, "textfil": 45, "substitut": 45, "tip": 47, "renam": 47, "keep": 47, "self": 47, "modifi": 47, "default": 47, "modular": 47, "your": 47, "twcmd": 48, "cmd": 48, "userst": 48, "roomstat": 48, "twitchmod": 48, "twitchvip": 48, "ismod": 48, "isvip": 48, "disclaim": 49, "regist": 49, "web": 49, "ui": 49}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"About Eggdrop": [[0, "about-eggdrop"], [2, null]], "Boring legal stuff": [[1, "boring-legal-stuff"]], "Eggdrop, an open source IRC bot": [[2, "eggdrop-an-open-source-irc-bot"]], "Some things you can do with Eggdrop": [[2, "some-things-you-can-do-with-eggdrop"]], "How to get Eggdrop": [[2, "how-to-get-eggdrop"]], "How to install Eggdrop": [[2, "how-to-install-eggdrop"]], "Installation Pre-requisites": [[2, "installation-pre-requisites"]], "Installation": [[2, "installation"], [32, "installation"], [39, "installation"], [46, "installation"]], "Where to find more help": [[2, "where-to-find-more-help"]], "Installing Eggdrop": [[2, null], [3, "installing-eggdrop"]], "Using Eggdrop": [[2, null]], "Tutorials": [[2, null]], "Eggdrop Modules": [[2, null]], "Quick Startup": [[3, "quick-startup"], [4, "quick-startup"]], "Cygwin Requirements (Windows)": [[3, "cygwin-requirements-windows"]], "Modules": [[3, "modules"], [5, "modules"], [37, "modules"]], "README": [[4, "readme"]], "Notice": [[4, "notice"]], "What is Eggdrop?": [[4, "what-is-eggdrop"]], "How to Get Eggdrop": [[4, "how-to-get-eggdrop"]], "FTP": [[4, "ftp"]], "Git Development Snapshot": [[4, "git-development-snapshot"]], "Docker": [[4, "docker"]], "System Pre-Requisites": [[4, "system-pre-requisites"]], "Upgrading": [[4, "upgrading"]], "Command Line": [[4, "command-line"]], "Auto-starting Eggdrop": [[4, "auto-starting-eggdrop"]], "Documentation": [[4, "documentation"], [5, "documentation"]], "Obtaining Help": [[4, "obtaining-help"]], "Upgrading Eggdrop": [[5, "upgrading-eggdrop"]], "How to Upgrade": [[5, "how-to-upgrade"]], "Must-read changes for Eggdrop v1.9": [[5, "must-read-changes-for-eggdrop-v1-9"]], "Config file changes": [[5, "config-file-changes"]], "Scripts": [[5, "scripts"], [37, "scripts"], [46, "scripts"]], "Botnet": [[5, "botnet"], [46, "botnet"]], "Tcl Commands": [[5, "tcl-commands"]], "Modules included with Eggdrop": [[6, "modules-included-with-eggdrop"]], "Eggdrop Module Information": [[7, "eggdrop-module-information"]], "What are modules?": [[7, "what-are-modules"]], "How to install a module": [[7, "how-to-install-a-module"]], "Can I compile Eggdrop without dynamic modules? (Static compile)": [[7, "can-i-compile-eggdrop-without-dynamic-modules-static-compile"]], "Do I still need to \u2018loadmodule\u2019 modules?": [[7, "do-i-still-need-to-loadmodule-modules"]], "Eggdrop Bind Internals": [[8, "eggdrop-bind-internals"]], "Bind Table Creation": [[8, "bind-table-creation"]], "Stackable Binds: HT_STACKABLE": [[8, "stackable-binds-ht-stackable"]], "Tcl Binding": [[8, "tcl-binding"]], "Triggering the Bind": [[8, "triggering-the-bind"]], "Triggering any Bind": [[8, "triggering-any-bind"]], "C Binding": [[8, "c-binding"]], "C Handler": [[8, "c-handler"]], "Summary": [[8, "summary"]], "Assoc Module": [[9, "assoc-module"], [44, "assoc-module"]], "Blowfish Module": [[10, "blowfish-module"]], "Channels Module": [[11, "channels-module"]], "Compress Module": [[12, "compress-module"], [44, "compress-module"]], "Console Module": [[13, "console-module"]], "CTCP Module": [[14, "ctcp-module"]], "DNS Module": [[15, "dns-module"]], "Filesys Module": [[16, "filesys-module"], [44, "filesys-module"]], "Config file setup": [[16, "config-file-setup"]], "Partyline usage": [[16, "partyline-usage"]], ".files": [[16, "files"]], ".cancel [file] \u2026": [[16, "cancel-file-file"]], ".cd ": [[16, "cd-directory"]], ".cp ": [[16, "cp-source-dst"]], ".desc ": [[16, "desc-file-description"]], ".filestats [clear]": [[16, "filestats-user-clear"]], ".stats": [[16, "stats"]], ".get [nickname]": [[16, "get-filename-nickname"]], ".hide [files] \u2026": [[16, "hide-file-files"]], ".ln ": [[16, "ln-bot-filepath-localfile"]], ".ls [filemask]": [[16, "ls-filemask"]], ".mkdir [flags [channel]]": [[16, "mkdir-dir-flags-channel"]], ".mv ": [[16, "mv-source-dest"]], ".pending": [[16, "pending"]], ".pwd": [[16, "pwd"]], ".quit": [[16, "quit"]], "rm [files] \u2026": [[16, "rm-file-files"]], ".rmdir ": [[16, "rmdir-dir"]], ".share [files] \u2026": [[16, "share-file-files"]], ".optimize": [[16, "optimize"]], ".unhide": [[16, "unhide"]], ".unshare [file] \u2026": [[16, "unshare-file-file"]], ".filesys module": [[16, "id1"]], "Ident Module": [[17, "ident"]], "IRC Module": [[18, "irc-module"]], "Notes Module": [[19, "notes-module"], [44, "notes-module"]], "PBKDF2 Module": [[20, "pbkdf2-module"]], "Seen Module": [[21, "seen-module"]], "Server Module": [[22, "server-module"]], "Share Module": [[23, "share-module"]], "Transfer Module": [[24, "transfer-module"]], "Twitch Module": [[25, "twitch-module"]], "Limitations": [[25, "limitations"]], "Tcl API": [[25, "tcl-api"]], "Partyline commands": [[25, "partyline-commands"]], "Uptime Module": [[26, "uptime-module"]], "Woobie Module": [[27, "woobie-module"]], "How to Write an Eggdrop Module": [[28, "how-to-write-an-eggdrop-module"]], "Module requirements": [[28, "module-requirements"]], "MODULE_start": [[28, "module-start"]], "MODULE_table": [[28, "module-table"]], "MODULE_close ()": [[28, "module-close"]], "MODULE_expmem": [[28, "module-expmem"]], "MODULE_report": [[28, "module-report"]], "Additional functions": [[28, "additional-functions"]], "What to do with a module?": [[28, "what-to-do-with-a-module"]], "Writing an Eggdrop Script": [[29, "writing-an-eggdrop-script"]], "Common First Steps": [[30, "common-first-steps"]], "Log on to the partyline": [[30, "log-on-to-the-partyline"]], "Common first steps": [[30, "id1"]], "Join a Channel": [[30, "join-a-channel"]], "Add a User": [[30, "add-a-user"]], "Add a Host to a User": [[30, "add-a-host-to-a-user"]], "Assign Permission Flags": [[30, "assign-permission-flags"]], "Configure Channel Settings": [[30, "configure-channel-settings"]], "Automatically restarting an Eggdrop": [[30, "automatically-restarting-an-eggdrop"]], "Crontab Method (Old)": [[30, "crontab-method-old"]], "Systemd Method (Newer Systems)": [[30, "systemd-method-newer-systems"]], "Authenticating with NickServ": [[30, "authenticating-with-nickserv"]], "Setting up SASL authentication": [[30, "setting-up-sasl-authentication"]], "Writing a Basic Eggdrop Module": [[31, "writing-a-basic-eggdrop-module"]], "Module Header": [[31, "module-header"]], "Required Code": [[31, "required-code"]], "Adding a Partyline Command": [[31, "adding-a-partyline-command"]], "Adding a Tcl Command": [[31, "adding-a-tcl-command"]], "Adding a Tcl Bind": [[31, "adding-a-tcl-bind"]], "Defining bind arguments": [[31, "defining-bind-arguments"]], "Calling the Bind": [[31, "calling-the-bind"]], "Exporting the Bind": [[31, "exporting-the-bind"]], "Setting Up Eggdrop": [[32, "setting-up-eggdrop"]], "Prerequisites": [[32, "prerequisites"]], "The super-short version": [[32, "the-super-short-version"]], "Getting the source": [[32, "getting-the-source"]], "History": [[32, "history"]], "Download locations": [[32, "download-locations"]], "Configuration": [[32, "configuration"]], "Editing the config file": [[32, "editing-the-config-file"], [49, "editing-the-config-file"]], "Starting the Eggdrop": [[32, "starting-the-eggdrop"]], "No show?": [[32, "no-show"]], "Enabling TLS Security on Eggdrop": [[33, "enabling-tls-security-on-eggdrop"]], "Pre-requisites": [[33, "pre-requisites"]], "Connecting to a TLS-enabled IRC server": [[33, "connecting-to-a-tls-enabled-irc-server"]], "Protecting Botnet Communications": [[33, "protecting-botnet-communications"]], "Configuration File Preparation - Generating Keys": [[33, "configuration-file-preparation-generating-keys"]], "Configuration File Preparation - Listening with TLS": [[33, "configuration-file-preparation-listening-with-tls"]], "Connecting to an Eggdrop listening with TLS": [[33, "connecting-to-an-eggdrop-listening-with-tls"]], "Additional Information": [[33, "additional-information"]], "Account tracking in Eggdrop": [[34, "account-tracking-in-eggdrop"]], "Required Server Capabilities": [[34, "required-server-capabilities"]], "extended-join": [[34, "extended-join"]], "account-notify": [[34, "account-notify"]], "WHOX": [[34, "whox"]], "Enabling Eggdrop Account Tracking": [[34, "enabling-eggdrop-account-tracking"]], "Checking Account-tracking Status": [[34, "checking-account-tracking-status"]], "Determining if a Server Supports Account Capabilities": [[34, "determining-if-a-server-supports-account-capabilities"]], "Best-Effort Account Tracking": [[34, "best-effort-account-tracking"]], "account-tag": [[34, "account-tag"]], "Using Accounts with Tcl Scripts": [[34, "using-accounts-with-tcl-scripts"]], "Bans, Invites, and Exempts": [[35, "bans-invites-and-exempts"]], "Botnet Sharing and Linking": [[36, "botnet-sharing-and-linking"]], "What is a botnet?": [[36, "what-is-a-botnet"]], "Terms": [[36, "terms"]], "Example bottree": [[36, "example-bottree"]], "Bot Flags": [[36, "bot-flags"]], "Adding and linking bots": [[36, "adding-and-linking-bots"]], "Secure (TLS) Links": [[36, "secure-tls-links"]], "Using botflags": [[36, "using-botflags"]], "Making bots share user records": [[36, "making-bots-share-user-records"]], "Using certificates to authenticate Eggdrops": [[36, "using-certificates-to-authenticate-eggdrops"]], "Eggdrop Core Settings": [[37, "eggdrop-core-settings"]], "Executable Path": [[37, "executable-path"]], "Basic Settings": [[37, "basic-settings"]], "Log Files": [[37, "log-files"]], "Console Settings": [[37, "console-settings"]], "File and Directory Settings": [[37, "file-and-directory-settings"]], "Botnet/Dcc/Telnet Settings": [[37, "botnet-dcc-telnet-settings"]], "Advanced Settings": [[37, "advanced-settings"]], "SSL Settings": [[37, "ssl-settings"]], "Eggdrop Features": [[38, "eggdrop-features"]], "IPv6 support": [[39, "ipv6-support"]], "About": [[39, "about"], [40, "about"], [46, "about"]], "Usage": [[39, "usage"], [40, "usage"], [43, "usage"], [46, "usage"]], "CTCP CHAT/CHAT4/CHAT6": [[39, "ctcp-chat-chat4-chat6"]], "Settings": [[39, "settings"]], "IRCv3 support": [[40, "ircv3-support"]], "Supported CAP capabilities": [[40, "supported-cap-capabilities"]], "The Party Line": [[41, "the-party-line"]], "Patching Eggdrop": [[42, "patching-eggdrop"]], "Submitting a patch via GitHub": [[42, "submitting-a-patch-via-github"]], "Encryption/Hashing": [[43, "encryption-hashing"]], "Background": [[43, "background"]], "Hybrid Configuration": [[43, "hybrid-configuration"]], "Enabling hybrid configuration": [[43, "enabling-hybrid-configuration"]], "Solo configuration": [[43, "solo-configuration"]], "Enabling solo configuration": [[43, "enabling-solo-configuration"]], "Tcl Interface": [[43, "tcl-interface"]], "Eggdrop Tcl Commands": [[44, "eggdrop-tcl-commands"]], "Output Commands": [[44, "output-commands"]], "putserv [options]": [[44, "putserv-text-options"]], "puthelp [options]": [[44, "puthelp-text-options"]], "putquick [options]": [[44, "putquick-text-options"]], "putnow [-oneline]": [[44, "putnow-text-oneline"]], "putkick [reason]": [[44, "putkick-channel-nick-nick-reason"]], "putlog ": [[44, "putlog-text"]], "putcmdlog ": [[44, "putcmdlog-text"]], "putxferlog ": [[44, "putxferlog-text"]], "putloglev ": [[44, "putloglev-flag-s-channel-text"]], "dumpfile ": [[44, "dumpfile-nick-filename"]], "queuesize [queue]": [[44, "queuesize-queue"]], "clearqueue ": [[44, "clearqueue-queue"]], "cap [arg]": [[44, "cap-ls-values-req-enabled-raw-arg"]], "tagmsg ": [[44, "tagmsg-tags-target"]], "server add [[+]port [password]]": [[44, "server-add-ip-host-port-password"]], "server remove [[+]port]": [[44, "server-remove-ip-host-port"]], "server list": [[44, "server-list"]], "User Record Manipulation Commands": [[44, "user-record-manipulation-commands"]], "countusers": [[44, "countusers"]], "validuser ": [[44, "validuser-handle"]], "finduser [-account] ": [[44, "finduser-account-value"]], "userlist [flags]": [[44, "userlist-flags"]], "passwdok ": [[44, "passwdok-handle-pass"]], "getuser [entry-type] [extra info]": [[44, "getuser-handle-entry-type-extra-info"]], "setuser [extra info]": [[44, "setuser-handle-entry-type-extra-info"]], "chhandle ": [[44, "chhandle-old-handle-new-handle"]], "chattr [changes [channel]]": [[44, "chattr-handle-changes-channel"]], "botattr [changes [channel]]": [[44, "botattr-handle-changes-channel"]], "matchattr [channel]": [[44, "matchattr-handle-flags-channel"]], "adduser [hostmask]": [[44, "adduser-handle-hostmask"]], "addbot
[botport [userport]]": [[44, "addbot-handle-address-botport-userport"]], "deluser ": [[44, "deluser-handle"]], "delhost ": [[44, "delhost-handle-hostmask"]], "addchanrec ": [[44, "addchanrec-handle-channel"]], "delchanrec ": [[44, "delchanrec-handle-channel"]], "haschanrec ": [[44, "haschanrec-handle-channel"]], "getchaninfo ": [[44, "getchaninfo-handle-channel"]], "setchaninfo ": [[44, "setchaninfo-handle-channel-info"]], "newchanban [lifetime] [options]": [[44, "newchanban-channel-ban-creator-comment-lifetime-options"]], "newban [lifetime] [options]": [[44, "newban-ban-creator-comment-lifetime-options"]], "newchanexempt [lifetime] [options]": [[44, "newchanexempt-channel-exempt-creator-comment-lifetime-options"]], "newexempt [lifetime] [options]": [[44, "newexempt-exempt-creator-comment-lifetime-options"]], "newchaninvite [lifetime] [options]": [[44, "newchaninvite-channel-invite-creator-comment-lifetime-options"]], "newinvite [lifetime] [options]": [[44, "newinvite-invite-creator-comment-lifetime-options"]], "stickban [channel]": [[44, "stickban-banmask-channel"]], "unstickban [channel]": [[44, "unstickban-banmask-channel"]], "stickexempt [channel]": [[44, "stickexempt-exemptmask-channel"]], "unstickexempt [channel]": [[44, "unstickexempt-exemptmask-channel"]], "stickinvite [channel]": [[44, "stickinvite-invitemask-channel"]], "unstickinvite [channel]": [[44, "unstickinvite-invitemask-channel"]], "killchanban ": [[44, "killchanban-channel-ban"]], "killban ": [[44, "killban-ban"]], "killchanexempt ": [[44, "killchanexempt-channel-exempt"]], "killexempt ": [[44, "killexempt-exempt"]], "killchaninvite ": [[44, "killchaninvite-channel-invite"]], "killinvite ": [[44, "killinvite-invite"]], "ischanjuped ": [[44, "ischanjuped-channel"]], "isban [channel [-channel]]": [[44, "isban-ban-channel-channel"]], "ispermban [channel [-channel]]": [[44, "ispermban-ban-channel-channel"]], "isexempt [channel [-channel]]": [[44, "isexempt-exempt-channel-channel"]], "ispermexempt [channel [-channel]]": [[44, "ispermexempt-exempt-channel-channel"]], "isinvite [channel [-channel]]": [[44, "isinvite-invite-channel-channel"]], "isperminvite [channel [-channel]]": [[44, "isperminvite-invite-channel-channel"]], "isbansticky [channel [-channel]]": [[44, "isbansticky-ban-channel-channel"]], "isexemptsticky [channel [-channel]]": [[44, "isexemptsticky-exempt-channel-channel"]], "isinvitesticky [channel [-channel]]": [[44, "isinvitesticky-invite-channel-channel"]], "matchban [channel]": [[44, "matchban-nick-user-host-channel"]], "matchexempt [channel]": [[44, "matchexempt-nick-user-host-channel"]], "matchinvite [channel]": [[44, "matchinvite-nick-user-host-channel"]], "banlist [channel]": [[44, "banlist-channel"]], "exemptlist [channel]": [[44, "exemptlist-channel"]], "invitelist [channel]": [[44, "invitelist-channel"]], "newignore [lifetime]": [[44, "newignore-hostmask-creator-comment-lifetime"]], "killignore ": [[44, "killignore-hostmask"]], "ignorelist": [[44, "ignorelist"]], "isignore ": [[44, "isignore-hostmask"]], "save": [[44, "save"]], "reload": [[44, "reload"]], "backup": [[44, "backup"]], "getting-users": [[44, "getting-users"]], "Channel Commands": [[44, "channel-commands"]], "channel add [option-list]": [[44, "channel-add-name-option-list"]], "channel set ": [[44, "channel-set-name-options"]], "channel info ": [[44, "channel-info-name"]], "channel get [setting]": [[44, "channel-get-name-setting"]], "channel remove ": [[44, "channel-remove-name"]], "savechannels": [[44, "savechannels"]], "loadchannels": [[44, "loadchannels"]], "channels": [[44, "channels"]], "channame2dname ": [[44, "channame2dname-channel-name"]], "chandname2name ": [[44, "chandname2name-channel-dname"]], "isbotnick ": [[44, "isbotnick-nick"]], "botisop [channel]": [[44, "botisop-channel"]], "botishalfop [channel]": [[44, "botishalfop-channel"]], "botisvoice [channel]": [[44, "botisvoice-channel"]], "botonchan [channel]": [[44, "botonchan-channel"]], "isop [channel]": [[44, "isop-nickname-channel"]], "ishalfop [channel]": [[44, "ishalfop-nickname-channel"]], "wasop ": [[44, "wasop-nickname-channel"]], "washalfop ": [[44, "washalfop-nickname-channel"]], "isvoice [channel]": [[44, "isvoice-nickname-channel"]], "isidentified [channel]": [[44, "isidentified-nickname-channel"]], "isaway [channel]": [[44, "isaway-nickname-channel"]], "isircbot [channel]": [[44, "isircbot-nickname-channel"]], "onchan [channel]": [[44, "onchan-nickname-channel"]], "monitor [nickname]": [[44, "monitor-command-nickname"]], "accounttracking": [[44, "accounttracking"]], "getaccount [channel]": [[44, "getaccount-nickname-channel"]], "nick2hand [channel]": [[44, "nick2hand-nickname-channel"]], "account2nicks [channel]": [[44, "account2nicks-handle-channel"]], "hand2nick [channel]": [[44, "hand2nick-handle-channel"]], "hand2nicks [channel]": [[44, "hand2nicks-handle-channel"]], "handonchan [channel]": [[44, "handonchan-handle-channel"]], "ischanban ": [[44, "ischanban-ban-channel"]], "ischanexempt ": [[44, "ischanexempt-exempt-channel"]], "ischaninvite ": [[44, "ischaninvite-invite-channel"]], "chanbans ": [[44, "chanbans-channel"]], "chanexempts ": [[44, "chanexempts-channel"]], "chaninvites ": [[44, "chaninvites-channel"]], "resetbans ": [[44, "resetbans-channel"]], "resetexempts ": [[44, "resetexempts-channel"]], "resetinvites ": [[44, "resetinvites-channel"]], "resetchanidle [nick] ": [[44, "resetchanidle-nick-channel"]], "resetchanjoin [nick] ": [[44, "resetchanjoin-nick-channel"]], "resetchan [flags]": [[44, "resetchan-channel-flags"]], "refreshchan [flags]": [[44, "refreshchan-channel-flags"]], "getchanhost [channel]": [[44, "getchanhost-nickname-channel"]], "getchanjoin ": [[44, "getchanjoin-nickname-channel"]], "onchansplit [channel]": [[44, "onchansplit-nick-channel"]], "chanlist [flags][<&|>chanflags]": [[44, "chanlist-channel-flags-chanflags"]], "getchanidle ": [[44, "getchanidle-nickname-channel"]], "getchanmode ": [[44, "getchanmode-channel"]], "jump [server [[+]port [password]]]": [[44, "jump-server-port-password"]], "pushmode [arg]": [[44, "pushmode-channel-mode-arg"]], "flushmode ": [[44, "flushmode-channel"]], "topic ": [[44, "topic-channel"]], "validchan ": [[44, "validchan-channel"]], "isdynamic ": [[44, "isdynamic-channel"]], "setudef ": [[44, "setudef-flag-int-str-name"]], "renudef ": [[44, "renudef-flag-int-str-oldname-newname"]], "deludef ": [[44, "deludef-flag-int-str-name"]], "getudefs [flag/int/str]": [[44, "getudefs-flag-int-str"]], "chansettype ": [[44, "chansettype-setting"]], "isupport get [key]": [[44, "isupport-get-key"]], "isupport isset ": [[44, "isupport-isset-key"]], "DCC Commands": [[44, "dcc-commands"]], "putdcc [-raw]": [[44, "putdcc-idx-text-raw"]], "dccbroadcast ": [[44, "dccbroadcast-message"]], "dccputchan ": [[44, "dccputchan-channel-message"]], "boot [reason]": [[44, "boot-user-bot-reason"]], "dccsimul ": [[44, "dccsimul-idx-text"]], "hand2idx ": [[44, "hand2idx-handle"]], "idx2hand ": [[44, "idx2hand-idx"]], "valididx ": [[44, "valididx-idx"]], "getchan ": [[44, "getchan-idx"]], "setchan ": [[44, "setchan-idx-channel"]], "console [channel] [console-modes]": [[44, "console-idx-channel-console-modes"]], "resetconsole ": [[44, "resetconsole-idx"]], "echo [status]": [[44, "echo-idx-status"]], "strip [+/-strip-flags]": [[44, "strip-idx-strip-flags"]], "putbot ": [[44, "putbot-bot-nick-message"]], "putallbots ": [[44, "putallbots-message"]], "killdcc ": [[44, "killdcc-idx"]], "bots": [[44, "bots"]], "botlist": [[44, "botlist"]], "islinked ": [[44, "islinked-bot"]], "dccused": [[44, "dccused"]], "dcclist [type]": [[44, "dcclist-type"]], "socklist [type]": [[44, "socklist-type"]], "whom ": [[44, "whom-chan"]], "getdccidle ": [[44, "getdccidle-idx"]], "getdccaway ": [[44, "getdccaway-idx"]], "setdccaway ": [[44, "setdccaway-idx-message"]], "connect <[+]port>": [[44, "connect-host-port"]], "listen [ip] [options [flag]]": [[44, "listen-ip-port-type-options-flag"]], "dccdumpfile ": [[44, "dccdumpfile-idx-filename"]], "notes [numberlist]": [[44, "notes-user-numberlist"]], "erasenotes ": [[44, "erasenotes-user-numberlist"]], "listnotes ": [[44, "listnotes-user-numberlist"]], "storenote ": [[44, "storenote-from-to-msg-idx"]], "assoc [name]": [[44, "assoc-chan-name"]], "killassoc ": [[44, "killassoc-chan"]], "compressfile [-level ] [target-file]": [[44, "compressfile-level-level-src-file-target-file"]], "and": [[44, "and"]], "uncompressfile [target-file]": [[44, "uncompressfile-src-file-target-file"]], "iscompressed ": [[44, "iscompressed-filename"]], "setpwd ": [[44, "setpwd-idx-dir"]], "getpwd ": [[44, "getpwd-idx"]], "getfiles ": [[44, "getfiles-dir"]], "getdirs ": [[44, "getdirs-dir"]], "dccsend ": [[44, "dccsend-filename-ircnick"]], "filesend [ircnick]": [[44, "filesend-idx-filename-ircnick"]], "fileresend [ircnick]": [[44, "fileresend-idx-filename-ircnick"]], "setdesc ": [[44, "setdesc-dir-file-desc"]], "getdesc ": [[44, "getdesc-dir-file"]], "setowner ": [[44, "setowner-dir-file-handle"]], "getowner ": [[44, "getowner-dir-file"]], "setlink ": [[44, "setlink-dir-file-link"]], "getlink ": [[44, "getlink-dir-file"]], "getfileq ": [[44, "getfileq-handle"]], "getfilesendtime ": [[44, "getfilesendtime-idx"]], "mkdir [ [channel]]": [[44, "mkdir-directory-required-flags-channel"]], "rmdir ": [[44, "rmdir-directory"]], "mv ": [[44, "mv-file-destination"]], "cp ": [[44, "cp-file-destination"]], "getflags ": [[44, "getflags-dir"]], "setflags [ [channel]]": [[44, "setflags-dir-flags-channel"]], "Miscellaneous Commands": [[44, "miscellaneous-commands"]], "bind [proc-name]": [[44, "bind-type-flags-keyword-mask-proc-name"]], "unbind ": [[44, "unbind-type-flags-keyword-mask-proc-name"]], "binds [type/mask]": [[44, "binds-type-mask"]], "logfile [ ]": [[44, "logfile-modes-channel-filename"]], "maskhost [masktype]": [[44, "maskhost-nick-user-host-masktype"]], "timer [count [timerName]]": [[44, "timer-minutes-tcl-command-count-timername"]], "utimer [count [timerName]]": [[44, "utimer-seconds-tcl-command-count-timername"]], "timers": [[44, "timers"]], "utimers": [[44, "utimers"]], "killtimer ": [[44, "killtimer-timername"]], "killutimer ": [[44, "killutimer-timername"]], "unixtime": [[44, "unixtime"]], "duration ": [[44, "duration-seconds"]], "strftime [time]": [[44, "strftime-formatstring-time"]], "ctime ": [[44, "ctime-unixtime"]], "myip": [[44, "myip"]], "rand ": [[44, "rand-limit"]], "control ": [[44, "control-idx-command"]], "sendnote ": [[44, "sendnote-from-to-bot-message"]], "link [via-bot] ": [[44, "link-via-bot-bot"]], "unlink [comment]": [[44, "unlink-bot-comment"]], "encrypt ": [[44, "encrypt-key-string"]], "decrypt ": [[44, "decrypt-key-encrypted-base64-string"]], "encpass ": [[44, "encpass-password"]], "die [reason]": [[44, "die-reason"]], "unames": [[44, "unames"]], "dnslookup [[arg1] [arg2] \u2026 [argN]]": [[44, "dnslookup-ip-address-hostname-proc-arg1-arg2-argn"]], "md5 ": [[44, "md5-string"]], "callevent ": [[44, "callevent-event"]], "traffic": [[44, "traffic"]], "modules": [[44, "modules"]], "loadmodule ": [[44, "loadmodule-module"]], "unloadmodule ": [[44, "unloadmodule-module"]], "loadhelp ": [[44, "loadhelp-helpfile-name"]], "unloadhelp ": [[44, "unloadhelp-helpfile-name"]], "reloadhelp": [[44, "reloadhelp"]], "restart": [[44, "restart"]], "rehash": [[44, "rehash"]], "stripcodes ": [[44, "stripcodes-strip-flags-string"]], "matchaddr
": [[44, "matchaddr-hostmask-address"]], "matchcidr
": [[44, "matchcidr-block-address-prefix"]], "matchstr ": [[44, "matchstr-pattern-string"]], "rfcequal ": [[44, "rfcequal-string1-string2"]], "status [type]": [[44, "status-type"]], "istls ": [[44, "istls-idx"]], "starttls ": [[44, "starttls-idx"]], "tlsstatus ": [[44, "tlsstatus-idx"]], "Global Variables": [[44, "global-variables"]], "botnick": [[44, "botnick"]], "botname": [[44, "botname"]], "server": [[44, "server"]], "serveraddress": [[44, "serveraddress"]], "version": [[44, "version"]], "numversion*": [[44, "numversion"]], "uptime": [[44, "uptime"]], "server-online": [[44, "server-online"]], "lastbind": [[44, "lastbind"]], "isjuped": [[44, "isjuped"]], "handlen": [[44, "handlen"]], "config": [[44, "config"]], "configureargs": [[44, "configureargs"]], "language": [[44, "language"]], "Binds": [[44, "binds"], [48, "binds"]], "Stackable binds": [[44, "stackable-binds"]], "Removing a bind": [[44, "removing-a-bind"]], "Flag Masks": [[44, "flag-masks"]], "Bind Types": [[44, "bind-types"], [48, "bind-types"]], "Return Values": [[44, "return-values"]], "Control Procedures": [[44, "control-procedures"]], "TCP Connections": [[44, "tcp-connections"]], "Match Characters": [[44, "match-characters"]], "Textfile Substitutions": [[45, "textfile-substitutions"]], "TLS support": [[46, "tls-support"]], "IRC": [[46, "irc"]], "Secure DCC": [[46, "secure-dcc"]], "Keys, certificates and authentication": [[46, "keys-certificates-and-authentication"]], "SSL/TLS Settings": [[46, "ssl-tls-settings"]], "Advanced Tips": [[47, "advanced-tips"]], "Renaming commands": [[47, "renaming-commands"]], "Keeping Logs": [[47, "keeping-logs"]], "Self-logging": [[47, "self-logging"]], "Modifying Default Strings": [[47, "modifying-default-strings"]], "Modularizing Your Config File": [[47, "modularizing-your-config-file"]], "Variables in Your Config": [[47, "variables-in-your-config"]], "Eggdrop Twitch Tcl Commands": [[48, "eggdrop-twitch-tcl-commands"]], "Commands": [[48, "commands"]], "twcmd [arg]": [[48, "twcmd-chan-cmd-arg"]], "userstate ": [[48, "userstate-channel"]], "roomstate ": [[48, "roomstate-channel"]], "twitchmods ": [[48, "twitchmods-channel"]], "twitchvips ": [[48, "twitchvips-channel"]], "ismod [channel]": [[48, "ismod-nick-channel"]], "isvip [channel]": [[48, "isvip-nick-channel"]], "Flags": [[48, "flags"]], "Twitch": [[49, "twitch"]], "Disclaimer": [[49, "disclaimer"]], "Registering with Twitch": [[49, "registering-with-twitch"]], "Twitch web UI functions": [[49, "twitch-web-ui-functions"]], "Twitch IRC limitations": [[49, "twitch-irc-limitations"]], "Users and Flags": [[50, "users-and-flags"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/doc/html/tutorials/firstscript.html b/doc/html/tutorials/firstscript.html index 7ddc58f93..a70c6ee9d 100644 --- a/doc/html/tutorials/firstscript.html +++ b/doc/html/tutorials/firstscript.html @@ -1,21 +1,20 @@ - + - + - - - Writing an Eggdrop Script — Eggdrop 1.9.4 documentation - - - - - - - + + + + Writing an Eggdrop Script — Eggdrop 1.9.5 documentation + + + + + + - + @@ -39,13 +38,13 @@ +

Copyright (C) 2003 - 2023 Eggheads Development Team

+ +
@@ -250,7 +252,7 @@

Writing an Eggdrop Script previous | - next
@@ -260,9 +262,9 @@

Writing an Eggdrop Script

diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index a176fca34..124977a47 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -1,30 +1,25 @@ - + - + - - - Common First Steps — Eggdrop 1.9.4 documentation - - - - - - - + + + + Common First Steps — Eggdrop 1.9.5 documentation + + + + + @@ -272,9 +303,9 @@

Setting up SASL authentication
diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html new file mode 100644 index 000000000..95b33b42a --- /dev/null +++ b/doc/html/tutorials/module.html @@ -0,0 +1,369 @@ + + + + + + + + + Writing a Basic Eggdrop Module — Eggdrop 1.9.5 documentation + + + + + + + + + + + +
+
+ +
+ +
+
+
+ +
+

Writing a Basic Eggdrop Module

+

An Eggdrop module is a piece of C code that can be loaded (or unloaded) onto the core Eggdrop code. A module differs from a Tcl script in that modules must be compiled and then loaded, whereas scripts can be edited and loaded directly. Importantly, a module can be written to create new Eggdrop-specific Tcl commands and binds that a user can then use in a Tcl script. For example, the server module loaded by Eggdrop is what creates the “jump” Tcl command, which causes tells the Eggdrop to jump to the next server in its server list.

+

There are a few required functions a module must perform in order to properly work with Eggdrop

+
+

Module Header

+

A module should include license information. This tells other open source users how they are allowed to use the code. Eggdrop uses GPL 2.0 licensing, and our license information looks like this:

+
/*
+* This program is free software; you can redistribute it and/or
+* modify it under the terms of the GNU General Public License
+* as published by the Free Software Foundation; either version 2
+* of the License, or (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program; if not, write to the Free Software
+* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+*/
+
+
+
+
+

Required Code

+

For this section, you don’t necessarily need to understand what it is doing, but this code is required for a module to function. If you want to learn more about this, check out How to Write an Eggdrop Module

+

You’ll next want to name your module:

+
#define MODULE_NAME "woobie"
+
+
+

Declare your own function tables (again, you don’t need to understand this part; you just need to copy/paste it):

+
#undef global
+static Function *global = NULL, *server_funcs = NULL;
+EXPORT_SCOPE char *woobie_start();
+
+
+

Next are two memory-related functions used by the core Eggdrop .status and .module commands:

+
static int woobie_expmem()
+{
+  int size = 0;
+
+  return size;
+}
+
+static void woobie_report(int idx, int details)
+{
+  if (details) {
+    int size = woobie_expmem();
+
+    dprintf(idx, "    Using %d byte%s of memory\n", size,
+            (size != 1) ? "s" : "");
+  }
+}
+
+
+

This function is called when Eggdrop loads the module:

+
char *woobie_start(Function *global_funcs)
+{
+  global = global_funcs;
+
+  /* Register the module. */
+  module_register(MODULE_NAME, woobie_table, 2, 1);
+  /*                                            ^--- minor module version
+   *                                         ^------ major module version
+   *                           ^-------------------- module function table
+   *              ^--------------------------------- module name
+   */
+
+  if (!module_depend(MODULE_NAME, "eggdrop", 108, 0)) {
+    module_undepend(MODULE_NAME);
+    return "This module requires Eggdrop 1.8.0 or later.";
+  }
+
+
+

This next function is used to unload the module:

+
static char *woobie_close()
+{
+  module_undepend(MODULE_NAME);
+  return NULL;
+}
+
+
+

This creates a function table that is exported to Eggdrop. In other words, these are commands that are made available to the Eggdrop core and other modules. At minimum, the following functions must be exported:

+
static Function woobie_table[] = {
+  (Function) woobie_start,
+  (Function) woobie_close,
+  (Function) woobie_expmem,
+  (Function) woobie_report,
+};
+
+
+

At this point, you should have a module that compiles and can be loaded by Eggdrop- but doesn’t really do anything yet. We’ll change that in the next section!

+
+
+

Adding a Partyline Command

+

A partyline command function accepts three arguments- a pointer to the user record of the user that called the command; the idx the user was on when calling the command; and a pointer to the arguments appended to the command. A command should immediately log that it was called to the LOG_CMDS log level, and then run its desired code. This simple example prints “WOOBIE” to the partyline idx of the user that called it:

+
static int cmd_woobie(struct userrec *u, int idx, char *par)
+{
+  putlog(LOG_CMDS, "*", "#%s# woobie", dcc[idx].nick);
+  dprintf(idx, "WOOBIE!\n");
+  return 0;
+}
+
+
+

If you add partyline commands, you need to create a table which links the new command name to the function it should call. This can be done like so:

+
static cmd_t mywoobie[] = {
+  /* command  flags  function     tcl-name */
+  {"woobie",  "",    cmd_woobie,  NULL},
+  {NULL,      NULL,  NULL,        NULL}  /* Mark end. */
+};
+
+
+

The tcl-name field can be a name for a Tcl command that will also call the partyline command, or it can be left as NULL.

+
+
+

Adding a Tcl Command

+

Eggdrop uses the Tcl C API library to interact with the Tcl interpreter. Learning this API is outside the scope of this tutorial, but this example Tcl command will echo the provided argument:

+
static int tcl_echome STDVAR {
+  BADARGS(2, 2, " arg");
+
+  if (strcmp(argv[1], "llama") {
+    Tcl_AppendResult(irp, "You said: ", argv[1], NULL);
+    return TCL_OK;
+  } else {
+    Tcl_AppendResult(irp, "illegal word!");
+    return TCL_ERROR;
+  }
+}
+
+A few notes on this example. BADARGS is a macro that checks the input provided to the Tcl command. The first argument BADARGS accepts is the minimum number of parameters the Tcl command must accept (including the command itself). The second argument is the maximum number of parameters that BADARGS will accept. The third argument is the help text that will be displayed if these boundaries are exceeded. For example, BADARGS(2, 4, " name ?date? ?place?") requires at least one argument to be passed, and a maximum of three arguments. Eggdrop code style is to enclose optional arguments between qusetion marks in the help text.
+
+
+

Similar to adding a partyline command, you also have to create a function table for a new Tcl command:

+
static tcl_cmds mytcl[] = {
+  {"echome",           tcl_echome},
+  {NULL,                   NULL}   /* Required to mark end of table */
+};
+
+
+

And now the newly-created Tcl command ‘echome’ is available for use in a script!

+
+
+

Adding a Tcl Bind

+

A Tcl bind is a command that is activated when a certain condition is met. With Eggdrop, these are usually linked to receiving messages or other IRC events. To create a bind, you must first register the bind type with Eggdrop when the module is loaded (you added the woobie_start() and woobie_close functions earlier, you still need all that earlier code in here as well):

+
static p_tcl_bind_list H_woob;
+
+...
+
+char *woobie_start(Function *global_funcs)
+{
+  ...
+  H_woob = add_bind_table("woobie", HT_STACKABLE, woobie_2char);
+}
+
+
+

And then remove the binds when the module is unloaded:

+
static char *woobie_close()
+{
+  ...
+  del_bind_table(H_woob);
+}
+
+
+

Here, “woobie” is the name of the bind (similar to the PUB, MSG, JOIN types of binds you already see in tcl-commands.doc). HT_STACKABLE means you can have multiple binds of this type. “woobie_2char” defines how many arguments the bind will take, and we’ll talk about that next.

+
+

Defining bind arguments

+

The following code example defines a bind that will take two arguments:

+
static int woobie_2char STDVAR
+{
+  Function F = (Function) cd;
+
+  BADARGS(3, 3, " nick chan");
+
+  CHECKVALIDITY(woobie_2char);
+  F(argv[1], argv[2]);
+  return TCL_OK;
+}
+
+
+

And this example defines a bind that will take three arguments:

+
static int woobie_3char STDVAR
+{
+  Function F = (Function) cd;
+
+  BADARGS(4, 4, " foo bar moo");
+
+  CHECKVALIDITY(woobie_3char);
+  F(argv[1], argv[2], argv[3]);
+  return TCL_OK;
+}
+
+
+

Like before, BADARGS still checks that the number of arguments passed is correct, and outputs help text if it is not. The rest is boilerplate code to pass the arguments when the bind is called.

+
+
+

Calling the Bind

+

To call the bind, Eggdrop coding style it to name that function “check_tcl_bindname”. So here, whenever we reach a point in code that should trigger the bind, we’ll call check_tcl_woobie() and pass the arguments we defined- in this case, two arguments that woobie_2char was created to handle. Here is some sample code:

+
check_tcl_woobie(chan, nick);
+
+
+static int check_tcl_woobie(char *chan, char *nick, char *userhost) {
+  int x;
+  char mask[1024];
+  struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 };
+
+  snprintf(mask, sizeof mask, "%s %s!%s",
+                                chan, nick, userhost);
+  Tcl_SetVar(interp, "_woob1", nick ? (char *) nick : "", 0);
+  Tcl_SetVar(interp, "_woob2", chan, 0);
+  x = check_tcl_bind(H_woob, mask, &fr, " $_woob1 $_woob2",
+        MATCH_MASK | BIND_STACKABLE);
+  return (x == BIND_EXEC_LOG);
+}
+
+
+

Now that we have encountered a condition that triggers the bind, we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with check_tcl_bind(), called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options.

+
+
+
+

Exporting the Bind

+

Do we need to do this?

+
+
+ + +
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index d9c1bd41d..128c388a9 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -1,30 +1,25 @@ - + - + - - - Setting Up Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Setting Up Eggdrop — Eggdrop 1.9.5 documentation + + + + +
diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index 13f99eab0..85c65a339 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -1,30 +1,25 @@ - + - + - - - Enabling TLS Security on Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Enabling TLS Security on Eggdrop — Eggdrop 1.9.5 documentation + + + + +
diff --git a/doc/html/using/accounts.html b/doc/html/using/accounts.html index 635bbd06d..7528db7c6 100644 --- a/doc/html/using/accounts.html +++ b/doc/html/using/accounts.html @@ -1,30 +1,25 @@ - + - + - - - Account tracking in Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Account tracking in Eggdrop — Eggdrop 1.9.5 documentation + + + + + @@ -206,9 +204,9 @@

Using Accounts with Tcl Scripts
diff --git a/doc/html/using/autoscripts.html b/doc/html/using/autoscripts.html new file mode 100644 index 000000000..3ba14a633 --- /dev/null +++ b/doc/html/using/autoscripts.html @@ -0,0 +1,341 @@ + + + + + + + + + Eggdrop Autoscripts — Eggdrop 1.9.4 documentation + + + + + + + + + + + +
+
+ +
+ +
+
+
+ +
+

Eggdrop Autoscripts

+

Since it’s inception, users have needed to load a Tcl script into Eggdrop by downloading a Tcl file, editing the file to customize settings, and then sourceing that file in the config file. In v1.10, the Autoscripts system was added to make this process a little more user-friendly. The autoscripts system helps by:

+
    +
  • Centralizing commonly-used scripts in a single location

  • +
  • Allowing scripts to be downloaded via the partyline

  • +
  • Allowing script settings to be configured via the partyline

  • +
  • Allowing user-written scripts to be managed by the autoscripts system

  • +
  • Providing a documented API to write autoscripts-compatible scripts

  • +
+
+

Autoscripts usage

+

To view available autoscript commands, type .script on the partyline. The following sub-commands are available for use with script:

+
+

remote

+

This command will list scripts hosted on the Eggdrop website that are available to be downloaded and installed on your Eggdrop.

+
+
+

fetch <script>

+

This command will download the specified script from the Eggdrop website and place it into the autoscript/ directory.

+
+
+

list

+

This command will list scripts locallt present in the autoscripts/ directory, available to be configured and loaded.

+
+
+

config <script>

+

This command will list settings available for configuration for the provided script.

+
+
+

set <script> <setting>

+

This command will set setting for script to the provided value.

+
+
+

load <script>

+

This command will activate the script for use.

+
+
+

unload <script>

+

This command will prevent the script from being loaded the next time Eggdrop starts. To fully unload a script, Eggdrop must be restarted!

+
+
+

clean <script>

+

This command will delete the script from the filesystem. After running this command, you will have to re-download and re-configure the script if you wish to use it again.

+
+
+
+

Autoscripts File Structure

+

An autoscripts package requires (minimum) two files: the Tcl script, and a json manifest file.

+
+

Tcl File

+

Nothing new or novel here; this is where your Tcl code goes. The one change to this file is that any setting intended should now be located in the manifest.json file, not the Tcl script file. All variables will be added to the global namespace. For this reason, it is recommended that variables have unique names to avoid collisions. This is commonly done by prefixing the variable name with the script name or abbreviation. For example, a script called myscript.tcl might avoid using a variable calld name and instead use myscript_name or ms_name.

+
+
+

Manifest.json

+

Every autoscripts package must have a manifest.json file. This file contains metadata for the script such as version and description information, as well as the user-configurable settings for use with th script. A simple example of a manifest.json file is as follows:

+
{
+  "name": "woobie",
+  "version_major": 1,
+  "version_minor": 0,
+  "description": "An example script to help developers write autoscript packages",
+  "long_description": "This is an example script to help understand the autoscript system. Yeah, it doesn't really do anything, but that's besides the point. It could, and that should be enough for anyone"
+  "config": {
+    "loaded": 0,
+    "udefflag":"myscript"
+    "requires": null,
+    "vars": {
+      "woobie_dict": {
+        "description": "A setting that accepts a dict as a value",
+        "value": "{quiet q}"
+      },
+      "woobie_setting": {
+        "description": "A normal setting to enable or disable something",
+        "value": "1"
+      },
+      "woobie_string": {
+        "description": "A setting taking a string, like a filename or something",
+        "value": "woobie"
+      },
+      "woobie(array)": {
+        "description": "A setting that is set as an array",
+        "value":"another string"
+      }
+    }
+  }
+}
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

name

The name of the script. Must match the script name (if the script is foo.tcl, then this must be foo)

version_major

The major version integer (ie, 1 for 1.6)

version_minor

The minor version integer (ie, 6 for 1.6)

description

A one-line summary of what the script does. This will be shown when available scripts are listed on the partyline via .script list.

long_description

A longer description of what the script does, similar to a README. This will be shown when a script is viewed via .script config.

config-loaded

Whether this script is currently loaded or not. It should be default set to 0.

config-udefflag

Any user-defined channel settings used by the script. This is displayed when configuration settings are displayed to the user on the partyline.

config-requires

Any Tcl package required for use by the script, such as tcllib or json.

config-vars-<varname>

A setting intended to be modified by the user. The ‘description’ field should describe what the setting does, and the ‘value’ field stores the current value. These settings are displayed when the configuration settings are displayed to the user on the partyline.

config-vars-<varname>-description

A description of the setting, displayed in the configuration listing for the script.

config-vars-<varname>-value

The value the setting is set to

+
+
name:
+

The name of the script. Must match the script name (if the script is foo.tcl, then this must be foo)

+
+
version_major:
+

The major version integer (ie, 1 for 1.6)

+
+
version_minor:
+

The minor version integer (ie, 6 for 1.6)

+
+
description:
+

A one-line summary of what the script does. This will be shown when available scripts are listed on the partyline via .script list.

+
+
long_description:
+

A longer description of what the script does, similar to a README. This will be shown when a script is viewed via .script config.

+
+
config-loaded:
+

Whether this script is currently loaded or not. It should be default set to 0.

+
+
config-udefflag:
+

Any user-defined channel settings used by the script. This is displayed when configuration settings are displayed to the user on the partyline.

+
+
config-requires:
+

Any Tcl package required for use by the script, such as tcllib or json.

+
+
config-vars-<varname>:
+

A setting intended to be modified by the user. The ‘description’ field should describe what the setting does, and the ‘value’ field stores the current value. These settings are displayed when the configuration settings are displayed to the user on the partyline.

+
+
config-vars-<varname>-description:
+

A description of the setting, displayed in the configuration listing for the script

+
+
config-vars-<varname>-value:
+

The value thee setting is set to

+
+
+
+
+

File placement

+

Autoscript files are stored in the autoscript directory. The path structure is eggdrop/autoscript/<scriptname>/[script files]. If the autoscript fetch command is used, a .tgz file will be downloaded and extracted to the proper location automatically. If you wish to manually add a script, create a directory with the same name as the script, and then place the script and manifest files inside the directory. The directory name must exactly match the script name (without the .tcl extension)! If the Tcl script to be loaded is called myscript_goodversion_specialfeature.tcl, then the directory must also called myscript_goodversion_specialfeature.

+
+
+
+

Development hints

+
    +
  • An autoscript should not require a user to manually open the script in an editor for any reason. Design your script as such!

  • +
  • Use user defined channel flags to enable/disable a script for a particular channel, they’re easy!

  • +
  • Variables used in autoscripts are placed into the global namespace. Make them unique to prevent collisions! We recommend prefixing the script name in front of a variable, such as myscript_setting or ms_setting.

  • +
+
+
+

Tcl Commands

+

The autoscripts Tcl script adds three new commands for use with Tcl scripts:

+
+

egg_loaded

+
+

Description: lists all scripts currently loaded via the autoscripts system

+

Returns: A Tcl list of script names currently loaded via autoscripts

+
+
+
+

egg_unloaded

+
+

Description: lists all scripts downloaded to the local machine via the autoscripts system but not currently loaded by Eggdrop

+

Returns: A Tcl list of script names downloaded but not currently loaded via autoscripts

+
+
+
+

egg_all

+
+

Description: lists all script downloaded to the localm machine via the autoscripts system, regardless if they are running or not

+

Returns: A Tcl list of all script namees download via autoscripts

+
+
+
+
+ + +
+
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/doc/html/using/bans.html b/doc/html/using/bans.html index bccb67da2..55787dc1b 100644 --- a/doc/html/using/bans.html +++ b/doc/html/using/bans.html @@ -1,30 +1,25 @@ - + - + - - - Bans, Invites, and Exempts — Eggdrop 1.9.4 documentation - - - - - - - + + + + Bans, Invites, and Exempts — Eggdrop 1.9.5 documentation + + + + + @@ -201,9 +199,9 @@

Bans, Invites, and Exempts
diff --git a/doc/html/using/botnet.html b/doc/html/using/botnet.html index 9d6abcc86..524870353 100644 --- a/doc/html/using/botnet.html +++ b/doc/html/using/botnet.html @@ -1,30 +1,25 @@ - + - + - - - Botnet Sharing and Linking — Eggdrop 1.9.4 documentation - - - - - - - + + + + Botnet Sharing and Linking — Eggdrop 1.9.5 documentation + + + + + @@ -787,9 +762,9 @@

Scripts
diff --git a/doc/html/using/features.html b/doc/html/using/features.html index bd4ac4294..920a81fc0 100644 --- a/doc/html/using/features.html +++ b/doc/html/using/features.html @@ -1,30 +1,25 @@ - + - + - - - Eggdrop Features — Eggdrop 1.9.4 documentation - - - - - - - + + + + Eggdrop Features — Eggdrop 1.9.5 documentation + + + + + @@ -200,9 +201,9 @@

Settings
diff --git a/doc/html/using/ircv3.html b/doc/html/using/ircv3.html index aaf08ba28..a15e1f393 100644 --- a/doc/html/using/ircv3.html +++ b/doc/html/using/ircv3.html @@ -1,30 +1,25 @@ - + - + - - - IRCv3 support — Eggdrop 1.9.4 documentation - - - - - - - + + + + IRCv3 support — Eggdrop 1.9.5 documentation + + + + + @@ -169,9 +167,9 @@

Supported CAP capabilities
diff --git a/doc/html/using/partyline.html b/doc/html/using/partyline.html index 93dc1ec45..49265ebd3 100644 --- a/doc/html/using/partyline.html +++ b/doc/html/using/partyline.html @@ -1,30 +1,25 @@ - + - + - - - The Party Line — Eggdrop 1.9.4 documentation - - - - - - - + + + + The Party Line — Eggdrop 1.9.5 documentation + + + + +
diff --git a/doc/html/using/patch.html b/doc/html/using/patch.html index 063847d69..aac2d4b1f 100644 --- a/doc/html/using/patch.html +++ b/doc/html/using/patch.html @@ -1,30 +1,25 @@ - + - + - - - Patching Eggdrop — Eggdrop 1.9.4 documentation - - - - - - - + + + + Patching Eggdrop — Eggdrop 1.9.5 documentation + + + + +
diff --git a/doc/html/using/tcl-commands.html b/doc/html/using/tcl-commands.html index fdb2ea9c2..3045c8e5d 100644 --- a/doc/html/using/tcl-commands.html +++ b/doc/html/using/tcl-commands.html @@ -1,19 +1,18 @@ - + - + - - - Eggdrop Tcl Commands — Eggdrop 1.9.4 documentation - - - - - - - + + + + Eggdrop Tcl Commands — Eggdrop 1.9.5 documentation + + + + + + @@ -24,7 +23,7 @@

+ href="../index.html">Eggdrop 1.9.5 documentation -
+ + +

Channel Commands

-
+

channel add <name> [option-list]

Description: adds a channel record for the bot to monitor. The full list of possible options are given in doc/settings/mod.channels. Note that the channel options must be in a list (enclosed in {}).

Returns: nothing

Module: channels

-
-
+
+

channel set <name> <options…>

Description: sets options for the channel specified. The full list of possible options are given in doc/settings/mod.channels.

Returns: nothing

Module: channels

-
-
+ +

channel info <name>

Returns: a list of info about the specified channel’s settings.

Module: channels

-
-
+ +

channel get <name> [setting]

Returns: The value of the setting you specify. For flags, a value of 0 means it is disabled (-), and non-zero means enabled (+). If no setting is specified, a flat list of all available settings and their values will be returned.

Module: channels

-
-
+ +

channel remove <name>

Description: removes a channel record from the bot and makes the bot no longer monitor the channel

Returns: nothing

Module: channels

-
-
+ +

savechannels

Description: saves the channel settings to the channel-file if one is defined.

Returns: nothing

Module: channels

-
-
+ +

loadchannels

Description: reloads the channel settings from the channel-file if one is defined.

Returns: nothing

Module: channels

-
-
+ +

channels

Returns: a list of the channels the bot has a channel record for

Module: channels

-
-
+ +

channame2dname <channel-name>

-
-
+ +

chandname2name <channel-dname>

Description: these two functions are important to correctly support !channels. The bot differentiates between channel description names (chan dnames) and real channel names (chan names). The chan dnames are what you would normally call the channel, such as “!channel”. The chan names are what the IRC server uses to identify the channel. They consist of the chan dname prefixed with an ID; such as “!ABCDEchannel”.

@@ -1017,441 +1018,441 @@

chandname2name <channel-dname> +

+

isbotnick <nick>

Returns: 1 if the nick matches the botnick; 0 otherwise

Module: server

-
-
+ +

botisop [channel]

Returns: 1 if the bot has ops on the specified channel (or any channel if no channel is specified); 0 otherwise

Module: irc

-
-
+ +

botishalfop [channel]

Returns: 1 if the bot has halfops on the specified channel (or any channel if no channel is specified); 0 otherwise

Module: irc

-
-
+ +

botisvoice [channel]

Returns: 1 if the bot has a voice on the specified channel (or any channel if no channel is specified); 0 otherwise

Module: irc

-
-
+ +

botonchan [channel]

Returns: 1 if the bot is on the specified channel (or any channel if no channel is specified); 0 otherwise

Module: irc

-
-
+ +

isop <nickname> [channel]

Returns: 1 if someone by the specified nickname is on the channel (or any channel if no channel name is specified) and has ops; 0 otherwise

Module: irc

-
-
+ +

ishalfop <nickname> [channel]

Returns: 1 if someone by the specified nickname is on the channel (or any channel if no channel name is specified) and has halfops; 0 otherwise

Module: irc

-
-
+ +

wasop <nickname> <channel>

Returns: 1 if someone that just got opped/deopped in the chan had op before the modechange; 0 otherwise

Module: irc

-
-
+ +

washalfop <nickname> <channel>

Returns: 1 if someone that just got halfopped/dehalfopped in the chan had halfop before the modechange; 0 otherwise

Module: irc

-
-
+ +

isvoice <nickname> [channel]

Returns: 1 if someone by that nickname is on the channel (or any channel if no channel is specified) and has voice (+v); 0 otherwise

Module: irc

-
-
+ +

isidentified <nickname> [channel]

Description: determine if a user is identified to irc services. WARNING: this may not be accurate depending on the server and configuration. For accurate results, the server must support (and Eggdrop must have enabled via CAP) the account-notify and extended-join capabilities, and the server must understand WHOX requests (also known as raw 354 responses)

Returns: 1 if someone by the specified nickname is on the channel (or any channel if no channel name is specified) and is logged in); 0 otherwise.

Module: irc

-
-
+ +

isaway <nickname> [channel]

-

Description: determine if a user is marked as ‘away’ on a server. IMPORTANT: this command is only “mostly” reliable on its own when the IRCv3 away-notify capability is available and negotiated with the IRC server (if you didn’t add this to your config file, it likely isn’t enabled- you can confirm using the cap Tcl command). Additionally, there is no way for Eggdrop (or any client) to capture a user’s away status when the user first joins a channel (they are assumed present by Eggdrop on join). To use this command without the away-notify capability negotiated, or to get a user’s away status on join (via a JOIN bind), use refreshchan <channel> w on a channel the user is on, which will refresh the current away status stored by Eggdrop for all users on the channel.

+

Description: determine if a user is marked as ‘away’ on a server. IMPORTANT: this command is only “mostly” reliable on its own when the IRCv3 away-notify capability is available and negotiated with the IRC server (if you didn’t add this to your config file, it likely isn’t enabled- you can confirm using the cap Tcl command). Additionally, there is no way for Eggdrop (or any client) to capture a user’s away status when the user first joins a channel (they are assumed present by Eggdrop on join). To use this command without the away-notify capability negotiated, or to get a user’s away status on join (via a JOIN bind), use refreshchan <channel> w on a channel the user is on, which will refresh the current away status stored by Eggdrop for all users on the channel.

Returns: 1 if Eggdrop is currently tracking someone by that nickname marked as ‘away’ (again, see disclaimer above) by an IRC server; 0 otherwise.

Module: irc

-
-
+ +

isircbot <nickname> [channel]

Description: determine if a user has denoted themselves as a bot via an ircd-defined user flag (declared via BOT in a server’s 005/ISUPPORT line). Due to server implementations, accurately monitoring this is incredibly fragile, as the flag can be added and removed by a user without any notification to other users. To ensure this status is current for use, it is recommended to use refreshchan <channel> w on a channel the user is on, which will refresh if the user is a bot or not for all users on the channel. If a server does not advertise BOT in its ISUPPORT line but still supports it (currently the case for unrealircd), you can manually set it by adding “BOT=B” (or whatever flag is used) to the isupport-default setting in your eggdrop.conf file.

Returns: 1 if Eggdrop is currently tracking someone by that nickname marked as a bot by an IRC server; 0 otherwise.

-
-
+ +

onchan <nickname> [channel]

Returns: 1 if someone by that nickname is on the specified channel (or any channel if none is specified); 0 otherwise

Module: irc

-
-
-

monitor <command> [nickname]

+ +
+

monitor <add/delete/list/online/offline/status/clear> [nickname]

-

Description: interacts with the list of nicknames Eggdrop has asked the IRC server to track. valid commands are add, delete, list, online, offline, status, and clear. The ‘add’ command sends ‘nickname’ to the server to track. The ‘delete’ command removes ‘nickname’ from being tracked by the server (or returns an error if the nickname is not present). The ‘list’ command returns a list of all nicknames the IRC server is tracking on behalf of Eggdrop. The ‘online’ command returns a string of tracked nicknames that are currently online. The ‘offline’ command returns a list of tracked nicknames that are currently offline.

-

Returns: The ‘status’ command returns a ‘1’ if ‘nickname’ is online or a 0 if ‘nickname’ is offline. The ‘clear’ command removes all nicknames from the list the server is monitoring.

+

Description: interacts with the list of nicknames Eggdrop has asked the IRC server to track. valid sub-commands are add, delete, list, online, offline, status, and clear. The ‘add’ command sends ‘nickname’ to the server to track. The ‘delete’ command removes ‘nickname’ from being tracked by the server (or returns an error if the nickname is not present). The ‘list’ command returns a list of all nicknames the IRC server is tracking on behalf of Eggdrop. The ‘online’ command returns a string of tracked nicknames that are currently online. The ‘offline’ command returns a list of tracked nicknames that are currently offline.

+

Returns: The ‘add’ sub-command returns a ‘1’ if the nick was succssfully added, a ‘0’ if the nick is already in the monitor list, and a ‘2’ if the nick could not be added. The ‘delete’ sub-command returns a ‘1’ if the nick is removed, or an error if the nick is not found. The ‘status’ sub-command returns a ‘1’ if ‘nickname’ is online or a 0 if ‘nickname’ is offline. The ‘clear’ command removes all nicknames from the list the server is monitoring.

Module: irc

-
-
+ +

accounttracking

Description: checks to see if the three required functionalities to enable proper account tracking are available (and enabled) to Eggdrop. This checks if the extended-join and account-notify IRCv3 capabilities are currently enabled, and checks if the server supports WHOX (based on the type of server selected in the config file, or the use-354 variable being set to 1 when seleceting an “Other” server).

Returns: a ‘1’ if all three functionalities are present, a ‘0’ if one or more are missing.

Module: irc

-
-
+ +

getaccount <nickname> [channel]

Returns: the services account name associated with nickname, “*” if the user is not logged into services, or “” if eggdrop does not know the account status of the user.

NOTE: the three required IRC components for account tracking are: the WHOX feature, the extended-join IRCv3 capability and the account-notify IRCv3 capability. if only some of the three feature are available, eggdrop provides best-effort account tracking. please see doc/ACCOUNTS for additional information.

-
-
+ +

nick2hand <nickname> [channel]

Returns: the handle of a nickname on a channel. If a channel is not specified, the bot will check all of its channels. If the nick is not found, “” is returned. If the nick is found but does not have a handle, “*” is returned. If no channel is specified, all channels are checked.

Module: irc

-
-
+ +

account2nicks <handle> [channel]

Returns: a de-duplicated Tcl list of the nickname(s) on the specified channel (if one is specified) whose nickname matches the given account; “” is returned if no match is found. This command will only work if a server supports (and Eggdrop has enabled) the account-notify and extended-join capabilities, and the server understands WHOX requests (also known as raw 354 responses). If no channel is specified, all channels are checked.

Module: irc

-
-
+ +

hand2nick <handle> [channel]

Returns: nickname of the first person on the specified channel (if one is specified) whose nick!user@host matches the given handle; “” is returned if no match is found. If no channel is specified, all channels are checked.

Module: irc

-
-
+ +

hand2nicks <handle> [channel]

Returns: a de-duplicated Tcl list of the nickname(s) on the specified channel (if one is specified) whose nick!user@host matches the given handle; “” is returned if no match is found. If no channel is specified, all channels are checked.

Module: irc

-
-
+ +

handonchan <handle> [channel]

Returns: 1 if the the nick!user@host for someone on the channel (or any channel if no channel name is specified) matches for the handle given; 0 otherwise

Module: irc

-
-
+ +

ischanban <ban> <channel>

Returns: 1 if the specified ban is on the given channel’s ban list (not the bot’s banlist for the channel)

Module: irc

-
-
+ +

ischanexempt <exempt> <channel>

Returns: 1 if the specified exempt is on the given channel’s exempt list (not the bot’s exemptlist for the channel)

Module: irc

-
-
+ +

ischaninvite <invite> <channel>

Returns: 1 if the specified invite is on the given channel’s invite list (not the bot’s invitelist for the channel)

Module: irc

-
-
+ +

chanbans <channel>

Returns: a list of the current bans on the channel. Each element is a sublist of the form {<ban> <bywho> <age>}. age is seconds from the bot’s point of view

Module: irc

-
-
+ +

chanexempts <channel>

Returns: a list of the current exempts on the channel. Each element is a sublist of the form {<exempts> <bywho> <age>}. age is seconds from the bot’s point of view

Module: irc

-
-
+ +

chaninvites <channel>

Returns: a list of the current invites on the channel. Each element is a sublist of the form {<invites> <bywho> <age>}. age is seconds from the bot’s point of view

Module: irc

-
-
+ +

resetbans <channel>

Description: removes all bans on the channel that aren’t in the bot’s ban list and refreshes any bans that should be on the channel but aren’t

Returns: nothing

Module: irc

-
-
+ +

resetexempts <channel>

Description: removes all exempt on the channel that aren’t in the bot’s exempt list and refreshes any exempts that should be on the channel but aren’t

Returns: nothing

Module: irc

-
-
+ +

resetinvites <channel>

Description: removes all invites on the channel that aren’t in the bot’s invite list and refreshes any invites that should be on the channel but aren’t

Returns: nothing

Module: irc

-
-
+ +

resetchanidle [nick] <channel>

Description: resets the channel idle time for the given nick or for all nicks on the channel if no nick is specified.

Returns: nothing

Module: irc

-
-
+ +

resetchanjoin [nick] <channel>

Description: resets the channel join time for the given nick or for all nicks on the channel if no nick is specified.

Returns: nothing

Module: irc

-
-
+ +

resetchan <channel> [flags]

Description: clears the channel info Eggdrop is currently storing for a channel, then rereads the channel info from the server. Useful if Eggdrop gets into a bad state on a server with respect to a channel userlist, for example. If flags are specified, only the required information will be reset, according to the given flags. Available flags:

- +
--++ - - - + + + - - + + - - + + - - + + - - + +
bchannel bans

b

channel bans

echannel exempts

e

channel exempts

Ichannel invites

I

channel invites

mchannel modes

m

channel modes

wmemberlist (who & away info)

w

memberlist (who & away info)

Returns: nothing

Module: irc

-
-
+ +

refreshchan <channel> [flags]

Description: An alternative to resetchan, refresh rereads the channel info from the server without first clearing out the previously stored information. Useful for updating a user’s away status without resetting their idle time, for example. If flags are specified, only the required information will be refreshed, according to the given flags. Available flags:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + +
bchannel bans

b

channel bans

echannel exempts

e

channel exempts

Ichannel invites

I

channel invites

mchannel modes

m

channel modes

tchannel topic

t

channel topic

wmemberlist (who & away info)

w

memberlist (who & away info)

Returns: nothing

Module: irc

-
-
+ +

getchanhost <nickname> [channel]

Returns: user@host of the specified nickname (the nickname is not included in the returned host). If a channel is not specified, bot will check all of its channels. If the nickname is not on the channel(s), “” is returned.

Module: irc

-
-
+ +

getchanjoin <nickname> <channel>

Returns: timestamp (unixtime format) of when the specified nickname joined the channel if available, 0 otherwise. Note that after a channel reset this information will be lost, even if previously available.

Module: irc

-
-
+ +

onchansplit <nick> [channel]

Returns: 1 if that nick is split from the channel (or any channel if no channel is specified); 0 otherwise

Module: irc

-
-
+ +

chanlist <channel> [flags][<&|>chanflags]

Description: flags are any global flags; the ‘&’ or ‘|’ denotes to look for channel specific flags, where ‘&’ will return users having ALL chanflags and ‘|’ returns users having ANY of the chanflags (See Flag Masks for additional information).

-

Returns: Searching for flags optionally preceded with a ‘+’ will return a list of nicknames that have all the flags listed. Searching for flags preceded with a ‘-‘ will return a list of nicknames that do not have have any of the flags (differently said, ‘-‘ will hide users that have all flags listed). If no flags are given, all of the nicknames on the channel are returned.

+

Returns: Searching for flags optionally preceded with a ‘+’ will return a list of nicknames that have all the flags listed. Searching for flags preceded with a ‘-’ will return a list of nicknames that do not have have any of the flags (differently said, ‘-’ will hide users that have all flags listed). If no flags are given, all of the nicknames on the channel are returned.

Please note that if you’re executing chanlist after a part or sign bind, the gone user will still be listed, so you can check for wasop, isop, etc.

Module: irc

-
-
+ +

getchanidle <nickname> <channel>

Returns: number of minutes that person has been idle; -1 if the specified user isn’t on the channel

Module: irc

-
-
+ +

getchanmode <channel>

Returns: string of the type “+ntik key” for the channel specified

Module: irc

-
-
+ +

jump [server [[+]port [password]]]

Description: jumps to the server specified, or (if none is specified) the next server in the bot’s serverlist. If you prefix the port with a plus sign (e.g. +6697), SSL connection will be attempted.

Returns: nothing

Module: server

-
-
+ +

pushmode <channel> <mode> [arg]

Description: sends out a channel mode change (ex: pushmode #lame +o goober) through the bot’s queuing system. All the mode changes will be sent out at once (combined into one line as much as possible) after the script finishes, or when ‘flushmode’ is called.

Returns: nothing

Module: irc

-
-
+ +

flushmode <channel>

Description: forces all previously pushed channel mode changes to be sent to the server, instead of when the script is finished (just for the channel specified)

Returns: nothing

Module: irc

-
-
+ +

topic <channel>

Returns: string containing the current topic of the specified channel

Module: irc

-
-
+ +

validchan <channel>

Description: checks if the bot has a channel record for the specified channel. Note that this does not necessarily mean that the bot is ON the channel.

Returns: 1 if the channel exists, 0 if not

Module: channels

-
-
+ +

isdynamic <channel>

Returns: 1 if the channel is a dynamic channel; 0 otherwise

Module: channels

-
-
+ +

setudef <flag/int/str> <name>

Description: initializes a user defined channel flag, string or integer setting. You can use it like any other flag/setting. IMPORTANT: Don’t forget to reinitialize your flags/settings after a restart, or it’ll be lost.

Returns: nothing

Module: channels

-
-
+ +

renudef <flag/int/str> <oldname> <newname>

Description: renames a user defined channel flag, string, or integer setting.

Returns: nothing

Module: channels

-
-
+ +

deludef <flag/int/str> <name>

Description: deletes a user defined channel flag, string, or integer setting.

Returns: nothing

Module: channels

-
-
+ +

getudefs [flag/int/str]

Returns: a list of user defined channel settings of the given type, or all of them if no type is given.

Module: channels

-
-
+ +

chansettype <setting>

Returns: The type of the setting you specify. The possible types are flag, int, str, pair. A flag type references a channel flag setting that can be set to either + or -. An int type is a channel setting that is set to a number, such as ban-time. A str type is a channel setting that stores a string, such as need-op. A pair type is a setting that holds a value couple, such as the flood settings.

Module: channels

-
-
+ +

isupport get [key]

Description: @@ -1460,234 +1461,242 @@

isupport get [key] +

+

isupport isset <key>

Description: Returns 0/1 depending on whether the key has a value.

Returns: 0 or 1

Module: server

-
- -
+ + +

DCC Commands

-
-

putdcc <idx> <text> [-raw]

+
+

putdcc <idx> <text> [-raw]

Description: sends text to the idx specified. If -raw is specified, the text will be sent as is, without forced new lines or limits to line length.

Returns: nothing

Module: core

-
-
+
+
+

putidx <idx> <text> -[raw]

+
+

Description. Alias for the putdcc command.

+

Returns: nothing

+

Module: core

+
+
+

dccbroadcast <message>

Description: sends a message to everyone on the party line across the botnet, in the form of “*** <message>” for local users, “*** (Bot) <message>” for users on other bots with version below 1.8.4, and “(Bot) <message>” for users on other bots with version 1.8.4+ and console log mode ‘l’ enabled

Returns: nothing

Module: core

-
-
+ +

dccputchan <channel> <message>

Description: sends your message to everyone on a certain channel on the botnet, in a form exactly like dccbroadcast does. Valid channels are 0 through 99999.

Returns: nothing

Module: core

-
-
+ +

boot <user@bot> [reason]

Description: boots a user from the partyline

Returns: nothing

Module: core

-
-
+ +

dccsimul <idx> <text>

Description: simulates text typed in by the dcc user specified. Note that in v0.9, this only simulated commands; now a command must be preceded by a ‘.’ to be simulated.

Returns: nothing

Module: core

-
-
+ +

hand2idx <handle>

Returns: the idx (a number greater than or equal to zero) for the user given if the user is on the party line in chat mode (even if she is currently on a channel or in chat off), the file area, or in the control of a script. -1 is returned if no idx is found. If the user is on multiple times, the oldest idx is returned.

Module: core

-
-
+ +

idx2hand <idx>

Returns: handle of the user with the given idx

Module: core

-
-
+ +

valididx <idx>

Returns: 1 if the idx currently exists; 0 otherwise

Module: core

-
-
+ +

getchan <idx>

Returns: the current party line channel for a user on the party line; “0” indicates he’s on the group party line, “-1” means he has chat off, and a value from 1 to 99999 is a private channel

Module: core

-
-
+ +

setchan <idx> <channel>

Description: sets a party line user’s channel. The party line user is not notified that she is now on a new channel. A channel name can be used (provided it exists).

Returns: nothing

Module: core

-
-
+ +

console <idx> [channel] [console-modes]

Description: changes a dcc user’s console mode, either to an absolute mode (like “mpj”) or just adding/removing flags (like “+pj” or “-moc” or “+mp-c”). The user’s console channel view can be changed also (as long as the new channel is a valid channel).

Returns: a list containing the user’s (new) channel view and (new) console modes, or nothing if that user isn’t currently on the partyline

Module: core

-
-
+ +

resetconsole <idx>

Description: changes a dcc user’s console mode to the default setting in the configfile.

Returns: a list containing the user’s channel view and (new) console modes, or nothing if that user isn’t currently on the partyline

Module: core

-
-
+ +

echo <idx> [status]

Description: turns a user’s echo on or off; the status has to be a 1 or 0

Returns: new value of echo for that user (or the current value, if status was omitted)

Module: core

-
-
+ +

strip <idx> [+/-strip-flags]

Description: modifies the strip-flags for a user. The supported strip-flags are:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
cremove all color codes

c

remove all color codes

bremove all boldface codes

b

remove all boldface codes

rremove all reverse video codes

r

remove all reverse video codes

uremove all underline codes

u

remove all underline codes

aremove all ANSI codes

a

remove all ANSI codes

gremove all ctrl-g (bell) codes

g

remove all ctrl-g (bell) codes

oremove all ordinary codes (ctrl+o, terminates bold/color/..)

o

remove all ordinary codes (ctrl+o, terminates bold/color/..)

iremove all italics codes

i

remove all italics codes

*remove all of the above

*

remove all of the above

Returns: new strip-flags for the specified user (or the current flags, if strip-flags was omitted)

Module: core

-
-
+ +

putbot <bot-nick> <message>

Description: sends a message across the botnet to another bot. If no script intercepts the message on the other end, the message is ignored.

Returns: nothing

Module: core

-
-
+ +

putallbots <message>

Description: sends a message across the botnet to all bots. If no script intercepts the message on the other end, the message is ignored.

Returns: nothing

Module: core

-
-
+ +

killdcc <idx>

Description: kills a partyline or file area connection

Returns: nothing

Module: core

-
-
+ +

bots

Returns: list of the bots currently connected to the botnet

Module: core

-
-
+ +

botlist

Returns: a list of bots currently on the botnet. Each item in the list is a sublist with four elements: bot, uplink, version, and sharing status:

- +
--++ - - - + + + - - + + - - + + - - + +
botthe bot’s botnetnick

bot

the bot’s botnetnick

uplinkthe bot the bot is connected to

uplink

the bot the bot is connected to

versionit’s current numeric version

version

it’s current numeric version

sharinga “+” if the bot is a sharebot; “-” otherwise

sharing

a “+” if the bot is a sharebot; “-” otherwise

Module: core

-
-
+ +

islinked <bot>

Returns: 1 if the bot is currently linked; 0 otherwise

Module: core

-
-
+ +

dccused

Returns: number of dcc connections currently in use

Module: core

-
-
+ +

dcclist [type]

Returns: a list of active connections, each item in the list is a sublist containing seven elements: @@ -1695,94 +1704,94 @@

dcclist [type] +

+

socklist [type]

Returns: a list of active connections, each item in the list is a sublist containing eight elements (in dict-readable format). The order of items returned should not be considered static or permanent, so it is recommended to access the items as key/value pairs with the dict command, as opposed to something like lindex, to extract values. The possible keys returned are:

- +
--++ - - - + + + - - + +connected user for an established connection

- - + + - - + + - - + +connections.

- - + + - - + + - - + + - - + +
idxinteger value assigned to Eggdrop connections

idx

integer value assigned to Eggdrop connections

handlepossible values are (telnet), (bots), (users), +

handle

possible values are (telnet), (bots), (users), (script) for a listening socket, or the handle of the -connected user for an established connection

hostthe hostname of the connection, if it is known; -otherwise a *

host

the hostname of the connection, if it is known; +otherwise a *

ipthe ip of the connection

ip

the ip of the connection

portthe port number associated with the connection (local +

port

the port number associated with the connection (local port for listening connections, remote port for server -connections.

secure1 if SSL/TLS is used for the connect; 0 otherwise

secure

1 if SSL/TLS is used for the connect; 0 otherwise

typethe type of connection (TELNET, CHAT, SERVER, etc)

type

the type of connection (TELNET, CHAT, SERVER, etc)

infoextra information associated with the connection

info

extra information associated with the connection

timetimestamp of when the socket was established

time

timestamp of when the socket was established

Module: core

-
-
+ +

whom <chan>

-

Returns: list of people on the botnet who are on that channel. 0 is the default party line. Each item in the list is a sublist with six elements: nickname, bot, hostname, access flag (‘-‘, ‘@’, ‘+’, or ‘*’), minutes idle, and away message (blank if the user is not away). If you specify * for channel, every user on the botnet is returned with an extra argument indicating the channel the user is on.

+

Returns: list of people on the botnet who are on that channel. 0 is the default party line. Each item in the list is a sublist with six elements: nickname, bot, hostname, access flag (‘-’, ‘@’, ‘+’, or ‘*’), minutes idle, and away message (blank if the user is not away). If you specify * for channel, every user on the botnet is returned with an extra argument indicating the channel the user is on.

Module: core

-
-
+ +

getdccidle <idx>

Returns: number of seconds the dcc chat/file system/script user has been idle

Module: core

-
-
+ +

getdccaway <idx>

Returns: away message for a dcc chat user (or “” if the user is not set away)

Module: core

-
-
+ +

setdccaway <idx> <message>

Description: sets a party line user’s away message and marks them away. If set to “”, the user is marked as no longer away.

Returns: nothing

Module: core

-
-
+ +

connect <host> <[+]port>

Description: makes an outgoing connection attempt and creates a dcc entry for it. A ‘control’ command should be used immediately after a successful ‘connect’ so no input is lost. If the port is prefixed with a plus sign, SSL encrypted connection will be attempted.

Returns: idx of the new connection

Module: core

-
-
+ +

listen [ip] <port> <type> [options [flag]]

Description: opens a listening port to accept incoming telnets; type must be one of “bots”, “all”, “users”, “script”, or “off”. Prefixing the port with a plus sign will make eggdrop accept SSL connections on it. An IP may optionally be listed before the mandatory port argument. If no IP is specified, all available interfaces are used.

@@ -1815,19 +1824,19 @@

listen [ip] <port> <type> [options [flag]]

Module: core

- -
+ +

dccdumpfile <idx> <filename>

Description: dumps out a file from the text directory to a dcc chat user. The flag matching that’s used everywhere else works here, too.

Returns: nothing

Module: core

-
- -
+ + +

Notes Module

-
+

notes <user> [numberlist]

Returns: -1 if no such user, -2 if notefile failure. If a numberlist is not specified, the number of notes stored for the user is returned. Otherwise, a list of sublists containing information about notes stored for the user is returned. Each sublist is in the format of:

@@ -1836,479 +1845,479 @@

notes <user> [numberlist] +

+

erasenotes <user> <numberlist>

-

Description: erases some or all stored notes for a user. Use ‘-‘ to erase all notes.

+

Description: erases some or all stored notes for a user. Use ‘-’ to erase all notes.

Returns: -1 if no such user, -2 if notefile failure, 0 if no such note, or number of erased notes.

Module: notes

-
-
+
+

listnotes <user> <numberlist>

Description: lists existing notes according to the numberlist (ex: “2-4;8;16-“)

Returns: -1 if no such user, -2 if notefile failure, 0 if no such note, list of existing notes.

Module: notes

-
-
+ +

storenote <from> <to> <msg> <idx>

Description: stores a note for later reading, notifies idx of any results (use idx -1 for no notify).

Returns: 0 on success; non-0 on failure

Module: notes

-
- -
+ + +

Assoc Module

-
+

assoc <chan> [name]

Description: sets the name associated with a botnet channel, if you specify one

Returns: current name for that channel, if any

Module: assoc

-
-
+
+

killassoc <chan>

Description: removes the name associated with a botnet channel, if any exists. Use ‘killassoc &’ to kill all assocs.

Returns: nothing

Module: assoc

-
- -
+ + +

Compress Module

-
+

compressfile [-level <level>] <src-file> [target-file]

-
+

and

-
-
+
+

uncompressfile <src-file> [target-file]

Description: compresses or un-compresses files. The level option specifies the compression mode to use when compressing. Available modes are from 0 (minimum CPU usage, minimum compression) all the way up to 9 (maximum CPU usage, maximum compression). If you don’t specify the target-file, the src-file will be overwritten.

Returns: nothing

Module: compress

-
-
-
+ + +

iscompressed <filename>

Description: determines whether <filename> is gzip compressed.

Returns: 1 if it is, 0 if it isn’t, and 2 if some kind of error prevented the checks from succeeding.

Module: compress

-
- -
+ + +

Filesys Module

-
+

setpwd <idx> <dir>

Description: changes the directory of a file system user, in exactly the same way as a ‘cd’ command would. The directory can be specified relative or absolute.

Returns: nothing

Module: filesys

-
-
+
+

getpwd <idx>

Returns: the current directory of a file system user

Module: filesys

-
-
+ +

getfiles <dir>

Returns: a list of files in the directory given; the directory is relative to dcc-path

Module: filesys

-
-
+ +

getdirs <dir>

Returns: a list of subdirectories in the directory given; the directory is relative to dcc-path

Module: filesys

-
-
+ +

dccsend <filename> <ircnick>

Description: attempts to start a dcc file transfer to the given nick; the filename must be specified either by full pathname or in relation to the bot’s startup directory

Returns:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + +
0success

0

success

1the dcc table is full (too many connections)

1

the dcc table is full (too many connections)

2can’t open a socket for the transfer

2

can’t open a socket for the transfer

3the file doesn’t exist

3

the file doesn’t exist

4the file was queued for later transfer, which means that person has -too many file transfers going right now

4

the file was queued for later transfer, which means that person has +too many file transfers going right now

5copy-to-tmp is enabled and the file already exists in the temp -directory

5

copy-to-tmp is enabled and the file already exists in the temp +directory

Module: transfer

-
-
+ +

filesend <idx> <filename> [ircnick]

Description: like dccsend, except it operates for a current filesystem user, and the filename is assumed to be a relative path from that user’s current directory

Returns: 0 on failure; 1 on success (either an immediate send or a queued send)

Module: filesys

-
-
+ +

fileresend <idx> <filename> [ircnick]

Description: functions like filesend, only that it sends a DCC RESEND instead of a DCC SEND, which allows people to resume aborted file transfers if their client supports that protocol. ircII/BitchX/etc. support it; mIRC does not.

Returns: 0 on failure; 1 on success (either an immediate send or a queued send)

Module: filesys

-
-
+ +

setdesc <dir> <file> <desc>

Description: sets the description for a file in a file system directory; the directory is relative to dcc-path

Returns: nothing

Module: filesys

-
-
+ +

getdesc <dir> <file>

Returns: the description for a file in the file system, if one exists

Module: filesys

-
-
+ +

setowner <dir> <file> <handle>

Description: changes the owner for a file in the file system; the directory is relative to dcc-path

Returns: nothing

Module: filesys

-
-
+ +

getowner <dir> <file>

Returns: the owner of a file in the file system

Module: filesys

-
- - -
+ +

getfileq <handle>

Returns: list of files queued by someone; each item in the list will be a sublist with two elements: nickname the file is being sent to and the filename

Module: transfer

-
-
+ +

getfilesendtime <idx>

Returns: the unixtime value from when a file transfer started, or a negative number:

- +
--++ - - - + + + - - + +
-1no matching transfer with the specified idx was found

-1

no matching transfer with the specified idx was found

-2the idx matches an entry which is not a file transfer

-2

the idx matches an entry which is not a file transfer

Module: transfer

-
-
+ +

mkdir <directory> [<required-flags> [channel]]

Description: creates a directory in the file system. Only users with the required flags may access it.

Returns:

- +
--++ - - - + + + - - + + - - + + - - + +
0success

0

success

1can’t create directory

1

can’t create directory

2directory exists but is not a directory

2

directory exists but is not a directory

-3could not open filedb

-3

could not open filedb

Module: filesys

-
-
+ +

rmdir <directory>

Description: removes a directory from the file system.

Returns: 0 on success; 1 on failure

Module: filesys

-
-
+ +

mv <file> <destination>

Description: moves a file from its source to the given destination. The file can also be a mask, such as /incoming/*, provided the destination is a directory.

Returns: If the command was successful, the number of files moved will be returned. Otherwise, a negative number will be returned:

- +
--++ - - - + + + - - + + - - + + - - + +
-1invalid source file

-1

invalid source file

-2invalid destination

-2

invalid destination

-3destination file exists

-3

destination file exists

-4no matches found

-4

no matches found

Module: filesys

-
-
+ +

cp <file> <destination>

Description: copies a file from its source to the given destination. The file can also be a mask, such as /incoming/*, provided the destination is a directory.

Returns: If the command was successful, the number of files copied will be returned. Otherwise, a negative number will be returned:

- +
--++ - - - + + + - - + + - - + + - - + +
-1invalid source file

-1

invalid source file

-2invalid destination

-2

invalid destination

-3destination file exists

-3

destination file exists

-4no matches found

-4

no matches found

Module: filesys

-
-
+ +

getflags <dir>

Returns: the flags required to access a directory

Module: filesys

-
-
+ +

setflags <dir> [<flags> [channel]]

Description: sets the flags required to access a directory

Returns: 0 on success; -1 or -3 on failure

Module: filesys

-
- -
+ + +

Miscellaneous Commands

-
+

bind <type> <flags> <keyword/mask> [proc-name]

Description: You can use the ‘bind’ command to attach Tcl procedures to certain events. flags are the flags the user must have to trigger the event (if applicable). proc-name is the name of the Tcl procedure to call for this command (see below for the format of the procedure call). If the proc-name is omitted, no binding is added. Instead, the current binding is returned (if it’s stackable, a list of the current bindings is returned).

Returns: name of the command that was added, or (if proc-name was omitted), a list of the current bindings for this command

Module: core

-
-
+
+

unbind <type> <flags> <keyword/mask> <proc-name>

Description: removes a previously created bind

Returns: name of the command that was removed

Module: core

-
-
+ +

binds [type/mask]

-
-
Returns: a list of Tcl binds, each item in the list is a sublist of five elements:
-
{<type> <flags> <name> <hits> <proc>}
+
+
Returns: a list of Tcl binds, each item in the list is a sublist of five elements:

{<type> <flags> <name> <hits> <proc>}

+

Module: core

-
-
+ +

logfile [<modes> <channel> <filename>]

Description: creates a new logfile, which will log the modes given for the channel listed. If no logfile is specified, a list of existing logfiles will be returned. “*” indicates all channels. You can also change the modes and channel of an existing logfile with this command. Entering a blank mode and channel (“”) makes the bot stop logging there.

Logfile flags:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
binformation about bot linking and userfile sharing

b

information about bot linking and userfile sharing

ccommands

c

commands

dmisc debug information

d

misc debug information

graw outgoing share traffic

g

raw outgoing share traffic

hraw incoming share traffic

h

raw incoming share traffic

jjoins, parts, quits, topic changes, and netsplits on the channel

j

joins, parts, quits, topic changes, and netsplits on the channel

kkicks, bans, and mode changes on the channel

k

kicks, bans, and mode changes on the channel

llinked bot messages

l

linked bot messages

mprivate msgs, notices and ctcps to the bot

m

private msgs, notices and ctcps to the bot

omisc info, errors, etc (IMPORTANT STUFF)

o

misc info, errors, etc (IMPORTANT STUFF)

ppublic text on the channel

p

public text on the channel

rraw incoming server traffic

r

raw incoming server traffic

sserver connects, disconnects, and notices

s

server connects, disconnects, and notices

traw incoming botnet traffic

t

raw incoming botnet traffic

uraw outgoing botnet traffic

u

raw outgoing botnet traffic

vraw outgoing server traffic

v

raw outgoing server traffic

wwallops (make sure the bot sets +w in init-server)

w

wallops (make sure the bot sets +w in init-server)

xfile transfers and file-area commands

x

file transfers and file-area commands

Returns: filename of logfile created, or, if no logfile is specified, a list of logfiles such as: {mco * eggdrop.log} {jp #lame lame.log}

Module: core

-
-
+ +

maskhost <nick!user@host> [masktype]

Returns: masked hostmask for the string given according to the masktype (the default is 3).

Available types are:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
0*!user@host

0

*!user@host

1*!*user@host

1

*!*user@host

2*!*@host

2

*!*@host

3*!*user@*.host

3

*!*user@*.host

4*!*@*.host

4

*!*@*.host

5nick!user@host

5

nick!user@host

6nick!*user@host

6

nick!*user@host

7nick!*@host

7

nick!*@host

8nick!*user@*.host

8

nick!*user@*.host

9nick!*@*.host

9

nick!*@*.host

@@ -2319,340 +2328,341 @@

maskhost < +

+

timer <minutes> <tcl-command> [count [timerName]]

Description: executes the given Tcl command after a certain number of minutes have passed, at the top of the minute (ie, if a timer is started at 10:03:34 with 1 minute specified, it will execute at 10:04:00. If a timer is started at 10:06:34 with 2 minutes specified, it will execute at 10:08:00). If count is specified, the command will be executed count times with the given interval in between. If you specify a count of 0, the timer will repeat until it’s removed with killtimer or until the bot is restarted. If timerName is specified, it will become the unique identifier for the timer. If no timerName is specified, Eggdrop will assign a timerName in the format of “timer<integer>”.

Returns: a timerName

Module: core

-
-
+ +

utimer <seconds> <tcl-command> [count [timerName]]

Description: executes the given Tcl command after a certain number of seconds have passed. If count is specified, the command will be executed count times with the given interval in between. If you specify a count of 0, the utimer will repeat until it’s removed with killutimer or until the bot is restarted. If timerName is specified, it will become the unique identifier for the timer. If timerName is not specified, Eggdrop will assign a timerName in the format of “timer<integer>”.

Returns: a timerName

Module: core

-
-
+ +

timers

Description: lists all active minutely timers.

Returns: a list of active minutely timers, with each timer sub-list containing the number of minutes left until activation, the command that will be executed, the timerName, and the remaining number of repeats.

Module: core

-
-
+ +

utimers

Description: lists all active secondly timers.

Returns: a list of active secondly timers, with each timer sub-list containing the number of minutes left until activation, the command that will be executed, the timerName, and the remaining number of repeats.

Module: core

-
-
+ +

killtimer <timerName>

Description: removes the timerName minutely timer from the timer list.

Returns: nothing

Module: core

-
-
+ +

killutimer <timerName>

Description: removes the timerName secondly timer from the timer list.

Returns: nothing

Module: core

-
-
+ +

unixtime

Returns: a long integer which represents the number of seconds that have passed since 00:00 Jan 1, 1970 (GMT).

Module: core

-
-
+ +

duration <seconds>

Returns: the number of seconds converted into years, weeks, days, hours, minutes, and seconds. 804600 seconds is turned into 1 week 2 days 7 hours 30 minutes.

Module: core

-
-
+ +

strftime <formatstring> [time]

Returns: a formatted string of time using standard strftime format. If time is specified, the value of the specified time is used. Otherwise, the current time is used. Note: The implementation of strftime varies from platform to platform, so the user should only use POSIX-compliant format specifiers to ensure fully portable code.

Module: core

-
-
+ +

ctime <unixtime>

Returns: a formatted date/time string based on the current locale settings from the unixtime string given; for example “Fri Aug 3 11:34:55 1973”

Module: core

-
-
+ +

myip

Returns: a long number representing the bot’s IP address, as it might appear in (for example) a DCC request

Module: core

-
-
+ +

rand <limit>

Returns: a random integer between 0 and limit-1. Limit must be greater than 0 and equal to or less than RAND_MAX, which is generally 2147483647. The underlying pseudo-random number generator is not cryptographically secure.

Module: core

-
-
+ +

control <idx> <command>

Description: removes an idx from the party line and sends all future input to the Tcl command given. The command will be called with two parameters: the idx and the input text. The command should return 0 to indicate success and 1 to indicate that it relinquishes control of the user back to the bot. If the input text is blank (“”), it indicates that the connection has been dropped. Also, if the input text is blank, never call killdcc on it, as it will fail with “invalid idx”.

Returns: nothing

Module: core

-
-
+ +

sendnote <from> <to[@bot]> <message>

Description: simulates what happens when one user sends a note to another

Returns:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + +
0the send failed

0

the send failed

1the note was delivered locally or sent to another bot

1

the note was delivered locally or sent to another bot

2the note was stored locally

2

the note was stored locally

3the user’s notebox is too full to store a note

3

the user’s notebox is too full to store a note

4a Tcl binding caught the note

4

a Tcl binding caught the note

5the note was stored because the user is away

5

the note was stored because the user is away

Module: core

-
- - -
+ +

encrypt <key> <string>

Returns: encrypted string (using the currently loaded encryption module), encoded into ASCII using base-64. As of v1.8.4, the default blowfish encryption module can use either the older ECB mode (currently used by default for compatibility reasons), or the more recent and more-secure CBC mode. You can explicitly request which encryption mode to use by prefixing the encryption key with either “ecb:” or “cbc:”, or by using the blowfish-use-mode setting in the config file. Note: the default encryption mode for this function is planned to transition from ECB to CBC in v1.9.0.

Module: encryption

-
-
+ +

decrypt <key> <encrypted-base64-string>

Returns: decrypted string (using the currently loaded encryption module). If the default blowfish encryption module is used, this automatically picks the right decryption mode. You may still prefix the key with “ecb:” or “cbc:” or use the blowfish-use-mode setting in the config file (see the encrypt command for more detailed information).

Module: encryption

-
-
+ +

encpass <password>

Returns: encrypted string (using the currently loaded encryption module)

Module: encryption

-
-
+ +

die [reason]

Description: causes the bot to log a fatal error and exit completely. If no reason is given, “EXIT” is used.

Returns: none

Module: core

-
-
+ +

unames

Returns: the current operating system the bot is using

Module: core

-
-
+ +

dnslookup <ip-address/hostname> <proc> [[arg1] [arg2] … [argN]]

Description: This issues an asynchronous dns lookup request. The command will block if dns module is not loaded; otherwise it will either return immediately or immediately call the specified proc (e.g. if the lookup is already cached).

As soon as the request completes, the specified proc will be called as follows:

-
<proc> <ipaddress> <hostname> <status> [[arg1] [arg2] … [argN]]
+

<proc> <ipaddress> <hostname> <status> [[arg1] [arg2] … [argN]]

+

status is 1 if the lookup was successful and 0 if it wasn’t. All additional parameters (called arg1, arg2 and argN above) get appended to the proc’s other parameters.

Returns: nothing

Module: core

- -
+ +

md5 <string>

Returns: the 128 bit MD5 message-digest of the specified string

Module: core

-
-
+ +

callevent <event>

Description: triggers the evnt bind manually for a certain event. You can call arbitrary events here, even ones that are not pre-defined by Eggdrop. For example: callevent rehash, or callevent myownevent123.

Returns: nothing

Module: core

-
-
+ +

traffic

Returns: a list of sublists containing information about the bot’s traffic usage in bytes. Each sublist contains five elements: type, in-traffic today, in-traffic total, out-traffic today, out-traffic total (in that order).

Module: core

-
-
+ +

modules

Returns: a list of sublists containing information about the bot’s currently loaded modules. Each sublist contains three elements: module, version, and dependencies. Each dependency is also a sublist containing the module name and version.

Module: core

-
-
+ +

loadmodule <module>

Description: attempts to load the specified module.

Returns: “Already loaded.” if the module is already loaded, “” if successful, or the reason the module couldn’t be loaded.

Module: core

-
-
+ +

unloadmodule <module>

Description: attempts to unload the specified module.

Returns: “No such module” if the module is not loaded, “” otherwise.

Module: core

-
-
+ +

loadhelp <helpfile-name>

Description: attempts to load the specified help file from the help/ directory.

Returns: nothing

Module: core

-
-
+ +

unloadhelp <helpfile-name>

Description: attempts to unload the specified help file.

Returns: nothing

Module: core

-
-
+ +

reloadhelp

Description: reloads the bot’s help files.

Returns: nothing

Module: core

-
-
+ +

restart

Description: rehashes the bot, kills all timers, reloads all modules, and reconnects the bot to the next server in its list.

Returns: nothing

Module: core

-
-
+ +

rehash

Description: rehashes the bot

Returns: nothing

Module: core

-
-
+ +

stripcodes <strip-flags> <string>

Description: strips specified control characters from the string given. strip-flags can be any combination of the following:

- +
--++ - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
cremove all color codes

c

remove all color codes

bremove all boldface codes

b

remove all boldface codes

rremove all reverse video codes

r

remove all reverse video codes

uremove all underline codes

u

remove all underline codes

aremove all ANSI codes

a

remove all ANSI codes

gremove all ctrl-g (bell) codes

g

remove all ctrl-g (bell) codes

oremove all ordinary codes (ctrl+o, terminates bold/color/..)

o

remove all ordinary codes (ctrl+o, terminates bold/color/..)

iremove all italics codes

i

remove all italics codes

*remove all of the above

*

remove all of the above

Returns: the stripped string.

Module: core

-
-
+ +

matchaddr <hostmask> <address>

Description: checks if the address matches the hostmask given. The address should be in the form nick!user@host.

Returns: 1 if the address matches the hostmask, 0 otherwise.

Module: core

-
-
+ +

matchcidr <block> <address> <prefix>

Description: performs a cidr match on the specified ip addresses. IPv6 is supported, if enabled at compile time.

@@ -2660,282 +2670,282 @@

matchcidr <block> <address> <prefix>Returns: 1 if the address matches the block prefix, 0 otherwise.

Module: core

-
-
+ +

matchstr <pattern> <string>

Description: checks if pattern matches string. Only two wildcards are supported: ‘*’ and ‘?’. Matching is case-insensitive. This command is intended as a simplified alternative to Tcl’s string match.

Returns: 1 if the pattern matches the string, 0 if it doesn’t.

Module: core

-
-
+ +

rfcequal <string1> <string2>

Description: Checks if two strings are equal. Case is ignored, and this uses RFC1459 matching {}|~ == []^, depending on the rfc_compliant setting.

Returns: 1 if equal, 0 if not.

Module: core

-
-
+ +

status [type]

Description: provides eggdrop status information similar to the .status command in partyline. The available types of information are:

- +
--++ - - - + + + - - + + - - + + - - + +
cputotal cpu time spent by eggdrop

cpu

total cpu time spent by eggdrop

memdynamically allocated memory excluding the Tcl interpreter

mem

dynamically allocated memory excluding the Tcl interpreter

cacheuser entries cache hits (in %)

cache

user entries cache hits (in %)

ipv6shows whether IPv6 support was compiled in

ipv6

shows whether IPv6 support was compiled in

Returns: the requested information type or all information if type isn’t specified. The format is a flat list of name-value pairs.

Module: core

-
-
+ +

istls <idx>

Description: checks if a connection is encrypted or cleartext. This command is available on TLS-enabled bots only.

Returns: 1 if the idx is a TLS connection, 0 if it’s plaintext.

Module: core

-
-
+ +

starttls <idx>

Description: establishes a secure (using TLS) connection over idx. The TLS connection should be first negotiated over the plaintext link, or using other means. Both parties must switch to TLS simultaneously. This command is available on TLS-enabled bots only.

Returns: nothing

Module: core

-
-
+ +

tlsstatus <idx>

Description: provides information about an established TLS connection This includes certificate and cipher information as well as protocol version. This command is available on TLS-enabled bots only.

Returns: a flat list of name-value pairs

Module: core

-
- -
+ + +

Global Variables

NOTE: All config file variables are also global.

-
+

botnick

Value: the current nickname the bot is using (for example: “Valis”, “Valis0”, etc.)

Module: server

-
-
+
+

botname

Value: the current nick!user@host that the server sees (for example: “Valis!valis@crappy.com”)

Module: server

-
-
+ +

server

Value: the current server’s real name (what server calls itself) and port bot is connected to (for example: “irc.math.ufl.edu:6667”) Note that this does not necessarily match the servers internet address.

Module: server

-
-
+ +

serveraddress

Value: the current server’s internet address (hostname or IP) and port bot is connected to. This will correspond to the entry in server list (for example: “eu.undernet.org:6667”). Note that this does not necessarily match the name server calls itself.

Module: server

-
-
+ +

version

Value: current bot version “1.1.2+pl1 1010201”; first item is the text version, to include a patch string if present, and second item is a numerical version

Module: core

-
-
+ +

numversion*

Value: the current numeric bot version (for example: “1010201”). Numerical version is in the format of “MNNRRPP”, where:

- +
--++ - - - + + + - - + + - - + + - - + +
Mmajor release number

M

major release number

NNminor release number

NN

minor release number

RRsub-release number

RR

sub-release number

PPpatch level for that sub-release

PP

patch level for that sub-release

Module: core

-
-
+ +

uptime

Value: the unixtime value for when the bot was started

Module: core

-
-
+ +

server-online

Value: the unixtime value when the bot connected to its current server, or ‘0’ if the bot is currently disconnected from a server.

Module: server

-
-
+ +

lastbind

Value: the last command binding which was triggered. This allows you to identify which command triggered a Tcl proc.

Module: core

-
-
+ +

isjuped

Value: 1 if bot’s nick is juped(437); 0 otherwise

Module: server

-
-
+ +

handlen

Value: the value of the HANDLEN define in src/eggdrop.h

Module: core

-
-
+ +

config

Value: the filename of the config file Eggdrop is currently using

Module: core

-
-
+ +

configureargs

Value: a string (not list) of configure arguments in shell expansion (single quotes)

Module: core

-
-
+ +

language

Value: a string containing the language with the highest priority for use by Eggdrop. This commonly reflects what is added with addlang in the config file

Module: core

-
- -
+ + +

Binds

You can use the ‘bind’ command to attach Tcl procedures to certain events. For example, you can write a Tcl procedure that gets called every time a user says “danger” on the channel. When a bind is triggered, ALL of the Tcl procs that are bound to it will be called. Raw binds are triggered before builtin binds, as a builtin bind has the potential to modify args.

-
+

Stackable binds

Some bind types are marked as “stackable”. That means that you can bind multiple commands to the same trigger. Normally, for example, a bind such as ‘bind msg - stop msg:stop’ (which makes a msg-command “stop” call the Tcl proc “msg:stop”) will overwrite any previous binding you had for the msg command “stop”. With stackable bindings, like ‘msgm’ for example, you can bind the same command to multiple procs.

-
-
+
+

Removing a bind

To remove a bind, use the ‘unbind’ command. For example, to remove the bind for the “stop” msg command, use ‘unbind msg - stop msg:stop’.

-
-
+ +

Flag Masks

-

In the Bind Types section (and other commands, such as `matchattr`_), you will see several references to the “flags” argument. The “flags” argument takes a flag mask, which is a value that represents the type of user that is allowed to trigger the procedure associated to that bind. The flags can be any of the standard Eggdrop flags (o, m, v, etc). Additionally, when used by itself, a “-” or “*” can be used to skip processing for a flag type. A flag mask has three sections to it- global, channel, and bot flag sections. Each section is separated by the | or & logical operators ( the | means “OR” and the & means “AND; if nothing proceeds the flag then Eggdrop assumes it to be an OR). Additionally, a ‘+’ and ‘-‘ can be used in front of a flag to check if the user does (+) have it, or does not (-) have it.

+

In the Bind Types section (and other commands, such as matchattr), you will see several references to the “flags” argument. The “flags” argument takes a flag mask, which is a value that represents the type of user that is allowed to trigger the procedure associated to that bind. The flags can be any of the standard Eggdrop flags (o, m, v, etc). Additionally, when used by itself, a “-” or “*” can be used to skip processing for a flag type. A flag mask has three sections to it- global, channel, and bot flag sections. Each section is separated by the | or & logical operators ( the | means “OR” and the & means “AND; if nothing proceeds the flag then Eggdrop assumes it to be an OR). Additionally, a ‘+’ and ‘-’ can be used in front of a flag to check if the user does (+) have it, or does not (-) have it.

The easiest way to explain how to build a flag mask is by demonstration. A flag mask of “v” by itself means “has a global v flag”. To also check for a channel flag, you would use the flag mask “v|v”. This checks if the user has a global “v” flag, OR a channel “v” flag (again, the | means “OR” and ties the two types of flags together). You could change this mask to be “v&v”, which would check if the user has a global “v” flag AND a channel “v” flag. Lastly, to check if a user ONLY has a channel flag, you would use “*|v” as a mask, which would not check global flags but does check if the user had a channel “v” flag.

You will commonly see flag masks for global flags written “ov”; this is the same as “|ov” or “*|ov”.

Some additional examples:

- +
--++ - - - + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
Flag MaskAction

Flag Mask

Action

m, +m, m|*Checks if the user has the m global flag

m, +m, m|*

Checks if the user has the m global flag

+mnChecks if the user has the m OR n global flag

+mn

Checks if the user has the m OR n global flag

|+mnChecks if the user has the m OR n channel flag

|+mn

Checks if the user has the m OR n channel flag

|+mn #fooChecks if the user has the m OR n channel flag for #foo

|+mn #foo

Checks if the user has the m OR n channel flag for #foo

&+mnChecks if the user has the m AND n channel flag

&+mn

Checks if the user has the m AND n channel flag

&mn #fooChecks if the user has the m AND n channel flag for #foo

&mn #foo

Checks if the user has the m AND n channel flag for #foo

|+o #fooChecks if the user has the o channel flag for #foo

|+o #foo

Checks if the user has the o channel flag for #foo

+o|+n #fooChecks if the user has the o global flag OR the n channel flag -for #foo

+o|+n #foo

Checks if the user has the o global flag OR the n channel flag +for #foo

+m&+v #fooChecks if the user has the m global flag AND the v channel flag -for #foo

+m&+v #foo

Checks if the user has the m global flag AND the v channel flag +for #foo

-mChecks if the user does not have the m global flag

-m

Checks if the user does not have the m global flag

|-n #fooChecks if the user does not have the n channel flag for #foo

|-n #foo

Checks if the user does not have the n channel flag for #foo

+m|-n #fooChecks if the user has the global m flag OR does not have a -channel n flag for #foo

+m|-n #foo

Checks if the user has the global m flag OR does not have a +channel n flag for #foo

-n&-m #fooChecks if the user does not have the global n flag AND does -not have the channel m flag for #foo

-n&-m #foo

Checks if the user does not have the global n flag AND does +not have the channel m flag for #foo

||+bChecks if the user has the bot flag b

||+b

Checks if the user has the bot flag b

-

As a side note, Tcl scripts historically have used a ‘-‘ to skip processing of a flag type (Example: -|o). It is unknown where and why this practice started, but as a style tip, Eggdrop developers recommend using a ‘*’ to skip processing, so as not to confuse a single “-” meaning “skip processing” with a preceding “-ov” which means “not these flags”.

-
-
+

As a side note, Tcl scripts historically have used a ‘-’ to skip processing of a flag type (Example: -|o). It is unknown where and why this practice started, but as a style tip, Eggdrop developers recommend using a ‘*’ to skip processing, so as not to confuse a single “-” meaning “skip processing” with a preceding “-ov” which means “not these flags”.

+ +

Bind Types

The following is a list of bind types and how they work. Below each bind type is the format of the bind command, the list of arguments sent to the Tcl proc, and an explanation.

    -
  1. MSG
  2. +
  3. MSG

bind msg <flags> <command> <proc>

@@ -2944,7 +2954,7 @@

Bind Types -
  • DCC
  • +
  • DCC

  • bind dcc <flags> <command> <proc>

    @@ -2953,7 +2963,7 @@

    Bind Types -
  • FIL
  • +
  • FIL

  • bind fil <flags> <command> <proc>

    @@ -2962,7 +2972,7 @@

    Bind Types -
  • PUB
  • +
  • PUB

  • bind pub <flags> <command> <proc>

    @@ -2971,7 +2981,7 @@

    Bind Types -
  • MSGM (stackable)
  • +
  • MSGM (stackable)

  • bind msgm <flags> <mask> <proc>

    @@ -2980,28 +2990,27 @@

    Bind Types -
  • PUBM (stackable)
  • +
  • PUBM (stackable)

  • bind pubm <flags> <mask> <proc>

    procname <nick> <user@host> <handle> <channel> <text>

    Description: just like MSGM, except it’s triggered by things said on a channel instead of things /msg’d to the bot. The mask is matched against the channel name followed by the text and can contain wildcards. If the proc returns 1, Eggdrop will not log the message that triggered this bind. PUBM binds are processed before PUB binds. If the exclusive-binds setting is enabled, PUB binds will not be triggered by text that a PUBM bind has already handled.

    -
    -
    Examples:
    -
    -
    bind pubm * “#eggdrop Hello*” myProc
    -
    Listens on #eggdrop for any line that begins with “Hello”
    -
    bind pubm * “% Hello*” myProc
    -
    Listens on any channel for any line that begins with “Hello”
    -
    bind pubm * “% !command” myProc
    -
    Listens on any channel for a line that ONLY contains “!command”
    +
    +
    Examples:
    +
    bind pubm * “#eggdrop Hello*” myProc

    Listens on #eggdrop for any line that begins with “Hello”

    +
    +
    bind pubm * “% Hello*” myProc

    Listens on any channel for any line that begins with “Hello”

    +
    +
    bind pubm * “% !command” myProc

    Listens on any channel for a line that ONLY contains “!command”

    +

    Module: irc

      -
    1. NOTC (stackable)
    2. +
    3. NOTC (stackable)

    bind notc <flags> <mask> <proc>

    @@ -3018,7 +3027,7 @@

    Bind Types -
  • JOIN (stackable)
  • +
  • JOIN (stackable)

  • bind join <flags> <mask> <proc>

    @@ -3027,7 +3036,7 @@

    Bind Types -
  • PART (stackable)
  • +
  • PART (stackable)

  • bind part <flags> <mask> <proc>

    @@ -3041,7 +3050,7 @@

    Bind Types -
  • SIGN (stackable)
  • +
  • SIGN (stackable)

  • bind sign <flags> <mask> <proc>

    @@ -3050,7 +3059,7 @@

    Bind Types -
  • TOPC (stackable)
  • +
  • TOPC (stackable)

  • bind topc <flags> <mask> <proc>

    @@ -3059,7 +3068,7 @@

    Bind Types -
  • KICK (stackable)
  • +
  • KICK (stackable)

  • bind kick <flags> <mask> <proc>

    @@ -3068,7 +3077,7 @@

    Bind Types -
  • NICK (stackable)
  • +
  • NICK (stackable)

  • bind nick <flags> <mask> <proc>

    @@ -3077,7 +3086,7 @@

    Bind Types -
  • MODE (stackable)
  • +
  • MODE (stackable)

  • bind mode <flags> <mask> <proc>

    @@ -3103,7 +3112,7 @@

    Bind Types -
  • CTCP (stackable)
  • +
  • CTCP (stackable)

  • bind ctcp <flags> <keyword> <proc>

    @@ -3112,7 +3121,7 @@

    Bind Types -
  • CTCR (stackable)
  • +
  • CTCR (stackable)

  • bind ctcr <flags> <keyword> <proc>

    @@ -3121,7 +3130,7 @@

    Bind Types -
  • RAW (stackable)
  • +
  • RAW (stackable)

  • bind raw <flags> <mask> <proc>

    @@ -3131,7 +3140,7 @@

    Bind Types -
  • BOT
  • +
  • BOT

  • bind bot <flags> <command> <proc>

    @@ -3140,7 +3149,7 @@

    Bind Types -
  • CHON (stackable)
  • +
  • CHON (stackable)

  • bind chon <flags> <mask> <proc>

    @@ -3149,7 +3158,7 @@

    Bind Types -
  • CHOF (stackable)
  • +
  • CHOF (stackable)

  • bind chof <flags> <mask> <proc>

    @@ -3158,7 +3167,7 @@

    Bind Types -
  • SENT (stackable)
  • +
  • SENT (stackable)

  • bind sent <flags> <mask> <proc>

    @@ -3167,7 +3176,7 @@

    Bind Types -
  • RCVD (stackable)
  • +
  • RCVD (stackable)

  • bind rcvd <flags> <mask> <proc>

    @@ -3176,17 +3185,17 @@

    Bind Types -
  • CHAT (stackable)
  • +
  • CHAT (stackable)

  • bind chat <flags> <mask> <proc>

    procname <handle> <channel#> <text>

    -

    Description: when a user says something on the botnet, it invokes this binding. Flags are ignored; handle could be a user on this bot (“DronePup”) or on another bot (“Eden@Wilde”) and therefore you can’t rely on a local user record. The mask is checked against the entire line of text and supports wildcards.

    +

    Description: when a user says something on the botnet, it invokes this binding. Flags are ignored; handle could be a user on this bot (“DronePup”) or on another bot (“Eden@Wilde”) and therefore you can’t rely on a local user record. The mask is checked against the entire line of text and supports wildcards. Eggdrop passes the partyline channel number the user spoke on to the proc in “channel#”.

    NOTE: If a BOT says something on the botnet, the BCST bind is invoked instead.

    Module: core

      -
    1. LINK (stackable)
    2. +
    3. LINK (stackable)

    bind link <flags> <mask> <proc>

    @@ -3195,7 +3204,7 @@

    Bind Types -
  • DISC (stackable)
  • +
  • DISC (stackable)

  • bind disc <flags> <mask> <proc>

    @@ -3204,7 +3213,7 @@

    Bind Types -
  • SPLT (stackable)
  • +
  • SPLT (stackable)

  • bind splt <flags> <mask> <proc>

    @@ -3213,7 +3222,7 @@

    Bind Types -
  • REJN (stackable)
  • +
  • REJN (stackable)

  • bind rejn <flags> <mask> <proc>

    @@ -3222,7 +3231,7 @@

    Bind Types -
  • FILT (stackable)
  • +
  • FILT (stackable)

  • bind filt <flags> <mask> <proc>

    @@ -3231,7 +3240,7 @@

    Bind Types -
  • NEED (stackable)
  • +
  • NEED (stackable)

  • bind need <flags> <mask> <proc>

    @@ -3245,7 +3254,7 @@

    Bind Types -
  • FLUD (stackable)
  • +
  • FLUD (stackable)

  • bind flud <flags> <type> <proc>

    @@ -3254,7 +3263,7 @@

    Bind Types -
  • NOTE (stackable)
  • +
  • NOTE (stackable)

  • bind note <flags> <mask> <proc>

    @@ -3263,7 +3272,7 @@

    Bind Types -
  • ACT (stackable)
  • +
  • ACT (stackable)

  • bind act <flags> <mask> <proc>

    @@ -3272,7 +3281,7 @@

    Bind Types -
  • WALL (stackable)
  • +
  • WALL (stackable)

  • bind wall <flags> <mask> <proc>

    @@ -3281,7 +3290,7 @@

    Bind Types -
  • BCST (stackable)
  • +
  • BCST (stackable)

  • bind bcst <flags> <mask> <proc>

    @@ -3291,7 +3300,7 @@

    Bind Types -
  • CHJN (stackable)
  • +
  • CHJN (stackable)

  • bind chjn <flags> <mask> <proc>

    @@ -3300,7 +3309,7 @@

    Bind Types -
  • CHPT (stackable)
  • +
  • CHPT (stackable)

  • bind chpt <flags> <mask> <proc>

    @@ -3309,7 +3318,7 @@

    Bind Types -
  • TIME (stackable)
  • +
  • TIME (stackable)

  • bind time <flags> <mask> <proc>

    @@ -3318,7 +3327,7 @@

    Bind Types -
  • AWAY (stackable)
  • +
  • AWAY (stackable)

  • bind away <flags> <mask> <proc>

    @@ -3327,7 +3336,7 @@

    Bind Types -
  • LOAD (stackable)
  • +
  • LOAD (stackable)

  • bind load <flags> <mask> <proc>

    @@ -3336,7 +3345,7 @@

    Bind Types -
  • UNLD (stackable)
  • +
  • UNLD (stackable)

  • bind unld <flags> <mask> <proc>

    @@ -3346,7 +3355,7 @@

    Bind Types -
  • NKCH (stackable)
  • +
  • NKCH (stackable)

  • bind nkch <flags> <mask> <proc>

    @@ -3355,7 +3364,7 @@

    Bind Types -
  • EVNT (stackable)
  • +
  • EVNT (stackable)

  • bind evnt <flags> <type> <proc>

    @@ -3377,13 +3386,14 @@

    Bind Types -
  • LOST (stackable)
  • +
  • LOST (stackable)

  • bind lost <flags> <mask> <proc>

    @@ -3392,7 +3402,7 @@

    Bind Types -
  • TOUT (stackable)
  • +
  • TOUT (stackable)

  • bind tout <flags> <mask> <proc>

    @@ -3401,7 +3411,7 @@

    Bind Types -
  • OUT (stackable)
  • +
  • OUT (stackable)

  • bind out <flags> <mask> <proc>

    @@ -3410,7 +3420,7 @@

    Bind Types -
  • CRON (stackable)
  • +
  • CRON (stackable)

  • bind cron <flags> <mask> <proc>

    @@ -3419,7 +3429,7 @@

    Bind Types -
  • LOG (stackable)
  • +
  • LOG (stackable)

  • bind log <flags> <mask> <proc>

    @@ -3428,7 +3438,7 @@

    Bind Types -
  • TLS (stackable)
  • +
  • TLS (stackable)

  • bind tls <flags> <mask> <proc>

    @@ -3437,7 +3447,7 @@

    Bind Types -
  • DIE (stackable)
  • +
  • DIE (stackable)

  • bind die <flags> <mask> <proc>

    @@ -3446,7 +3456,7 @@

    Bind Types -
  • IRCAWAY (stackable)
  • +
  • IRCAWAY (stackable)

  • bind ircaway <flags> <mask> <proc>

    @@ -3455,7 +3465,7 @@

    Bind Types -
  • INVT (stackable)
  • +
  • INVT (stackable)

  • bind invt <flags> <mask> <proc>

    @@ -3463,7 +3473,7 @@

    Bind Typesuser@host is the user@host of the person sending the invite, channel is the channel the invitee is being invited to, and invitee is the target (nickname only) of the invite. The invitee argument was added to support the IRCv3 invite-notify capability, where the eggdrop may be able to see invite messages for other people that are not the eggdrop.

      -
    1. RAWT (stackable)
    2. +
    3. RAWT (stackable)

    bind rawt <flags> <mask> <proc>

    @@ -3471,7 +3481,7 @@

    Bind Typesnick!ident@host (depending on the keyword); flags are ignored. “tag” is a dictionary (flat key/value list) of the message tags with “” for empty values (e.g. “account eggdrop realname LamestBot”). If the proc returns 1, Eggdrop will not process the line any further, to include not being processed by a RAW bind (this could cause unexpected behavior in some cases). As of 1.9.0, it is recommended to use the RAWT bind instead of the RAW bind.

      -
    1. ACCOUNT (stackable)
    2. +
    3. ACCOUNT (stackable)

    bind account <flags> <mask> <proc>

    @@ -3480,7 +3490,7 @@

    Bind Types -
  • ISUPPORT (stackable)
  • +
  • ISUPPORT (stackable)

  • bind isupport <flags> <mask> <proc>

    @@ -3489,7 +3499,7 @@

    Bind Types -
  • MONITOR (stackable)
  • +
  • MONITOR (stackable)

  • bind monitor <flags> <nick> <proc>

    @@ -3497,66 +3507,59 @@

    Bind Types +
      +
    1. CHGHOST

    2. +
    +
    +

    bind chghost <flags> <mask> <proc>

    +

    procname <nick> <old user@host> <handle> <channel> <new user@host>

    +

    Description: triggered when a server sends an IRCv3 spec CHGHOST message to change a user’s hostmask. The new host is matched against mask in the form of “#channel nick!user@host” and can contain wildcards. The specified proc will be called with the nick of the user whose hostmask changed; the hostmask the affected user had before the change, the handle of the affected user (or * if no handle is present), the channel the user was on when the bind triggered, and the new hostmask of the affected user. This bind will trigger once for each channel the user is on.

    +
    +

    +

    Return Values

    Several bindings pay attention to the value you return from the proc(using ‘return <value>’). Usually, they expect a 0 or 1, and returning an empty return is interpreted as a 0. Be aware if you omit the return statement, the result of the last Tcl command executed will be returned by the proc. This will not likely produce the results you intended (this is a “feature” of Tcl).

    Here’s a list of the bindings that use the return value from procs they trigger:

      -
    1. MSG Return 1 to make Eggdrop log the command as:

      +
    2. MSG Return 1 to make Eggdrop log the command as:

      (nick!user@host) !handle! command
       
    3. -
    4. DCC Return 1 to make Eggdrop log the command as:

      +
    5. DCC Return 1 to make Eggdrop log the command as:

      #handle# command
       
    6. -
    7. FIL Return 1 to make Eggdrop log the command as:

      +
    8. FIL Return 1 to make Eggdrop log the command as:

      #handle# files: command
       
    9. -
    10. PUB Return 1 to make Eggdrop log the command as:

      +
    11. PUB Return 1 to make Eggdrop log the command as:

      <<nick>> !handle! command
       
    12. -
    13. CTCP Return 1 to ask the bot not to process the CTCP command on its own. Otherwise, it would send its own response to the CTCP (possibly an error message if it doesn’t know how to deal with it).

      -
    14. -
    15. FILT Return “” to indicate the text has been processed, and the bot should just ignore it. Otherwise, it will treat the text like any other.

      -
    16. -
    17. FLUD Return 1 to ask the bot not to take action on the flood. Otherwise it will do its normal punishment.

      -
    18. -
    19. RAW Return 1 to ask the bot not to process the server text. This can affect the bot’s performance by causing it to miss things that it would normally act on – you have been warned.

      -
    20. -
    21. CHON Return 1 to ask the bot not to process the partyline join event.

      -
    22. -
    23. CHOF Return 1 to ask the bot not to process the partyline part event.

      -
    24. -
    25. WALL Return 1 to make Eggdrop not log the message that triggered this bind.

      -
    26. -
    27. NOTE Return 1 to make Eggdrop not process the note any further. This includes stacked note bindings that would be processed after this one, as well as the built-in eggdrop note handling routines.

      -
    28. -
    29. MSGM Return 1 to make Eggdrop not log the message that triggered this bind.

      -
    30. -
    31. PUBM Return 1 to make Eggdrop not log the message that triggered this bind.

      -
    32. -
    33. NOTC Return 1 to make Eggdrop not log the message that triggered this bind.

      -
    34. -
    35. OUT Return 1 to make Eggdrop drop the message instead of sending it. Only meaningful for messages with status “queued”.

      -
    36. -
    37. EVNT Return 1 to make Eggdrop not to take the default action for the event. Used for signal type events, ignored for others.

      -
    38. -
    39. TLS Return 1 to disable verbose ssl information for the handshake.

      -
    40. -
    41. RAWT Return 1 to ask the bot not to process the server text. This can affet the bot’s performance by causing it to miss things that it would normally act on – you have been warned. Again.

      -
    42. +
    43. CTCP Return 1 to ask the bot not to process the CTCP command on its own. Otherwise, it would send its own response to the CTCP (possibly an error message if it doesn’t know how to deal with it).

    44. +
    45. FILT Return “” to indicate the text has been processed, and the bot should just ignore it. Otherwise, it will treat the text like any other.

    46. +
    47. FLUD Return 1 to ask the bot not to take action on the flood. Otherwise it will do its normal punishment.

    48. +
    49. RAW Return 1 to ask the bot not to process the server text. This can affect the bot’s performance by causing it to miss things that it would normally act on – you have been warned.

    50. +
    51. CHON Return 1 to ask the bot not to process the partyline join event.

    52. +
    53. CHOF Return 1 to ask the bot not to process the partyline part event.

    54. +
    55. WALL Return 1 to make Eggdrop not log the message that triggered this bind.

    56. +
    57. NOTE Return 1 to make Eggdrop not process the note any further. This includes stacked note bindings that would be processed after this one, as well as the built-in eggdrop note handling routines.

    58. +
    59. MSGM Return 1 to make Eggdrop not log the message that triggered this bind.

    60. +
    61. PUBM Return 1 to make Eggdrop not log the message that triggered this bind.

    62. +
    63. NOTC Return 1 to make Eggdrop not log the message that triggered this bind.

    64. +
    65. OUT Return 1 to make Eggdrop drop the message instead of sending it. Only meaningful for messages with status “queued”.

    66. +
    67. EVNT Return 1 to make Eggdrop not to take the default action for the event. Used for signal type events, ignored for others.

    68. +
    69. TLS Return 1 to disable verbose ssl information for the handshake.

    70. +
    71. RAWT Return 1 to ask the bot not to process the server text. This can affet the bot’s performance by causing it to miss things that it would normally act on – you have been warned. Again.

    -
    - -
    + + +

    Control Procedures

    Using the ‘control’ command, you can put a DCC connection (or outgoing TCP connection) in control of a script. All text received from the @@ -3577,8 +3580,8 @@

    Control Procedures +

    +

    TCP Connections

    Eggdrop allows you to make two types of TCP (“telnet”) connections: outgoing and incoming. For an outgoing connection, you specify the @@ -3599,8 +3602,8 @@

    TCP Connections -
  • assume the connection succeeded immediately
  • -
  • if the connection failed, an EOF will arrive for that idx
  • +
  • assume the connection succeeded immediately

  • +
  • if the connection failed, an EOF will arrive for that idx

  • The only time a ‘connect’ will return an error is if you give it a @@ -3638,43 +3641,45 @@

    TCP Connections + +

    Match Characters

    Many of the bindings allow match characters in the arguments. Here are the four special characters:

    - +
    --++ - - - + + + - - + + - - + + - - + + - - + +
    ?matches any single character

    ?

    matches any single character

    *matches 0 or more characters of any type

    *

    matches 0 or more characters of any type

    %matches 0 or more non-space characters (can be used to match a single -word) (This character only works in binds, not in regular matching)

    %

    matches 0 or more non-space characters (can be used to match a single +word) (This character only works in binds, not in regular matching)

    ~matches 1 or more space characters (can be used for whitespace between -words) (This char only works in binds, not in regular matching)

    ~

    matches 1 or more space characters (can be used for whitespace between +words) (This char only works in binds, not in regular matching)

    \*matches a literal *, but please note that Tcl needs escaping as well, -so a bind would have to use “\*” or {*} for a mask argument

    \*

    matches a literal *, but please note that Tcl needs escaping as well, +so a bind would have to use “\*” or {*} for a mask argument

    -
    Copyright (C) 1999 - 2022 Eggheads Development Team
    - - +

    Copyright (C) 1999 - 2023 Eggheads Development Team

    +
    +
    + +
    @@ -3699,9 +3704,9 @@

    TCP Connections
    diff --git a/doc/html/using/text-sub.html b/doc/html/using/text-sub.html index 2eb4ed8f4..0f1a11190 100644 --- a/doc/html/using/text-sub.html +++ b/doc/html/using/text-sub.html @@ -1,30 +1,25 @@ - + - + - - - Textfile Substitutions — Eggdrop 1.9.4 documentation - - - - - - - + + + + Textfile Substitutions — Eggdrop 1.9.5 documentation + + + + + @@ -233,9 +220,9 @@

    Textfile Substitutions
    diff --git a/doc/html/using/tls.html b/doc/html/using/tls.html index 09531799b..55eb28a60 100644 --- a/doc/html/using/tls.html +++ b/doc/html/using/tls.html @@ -1,30 +1,25 @@ - + - + - - - TLS support — Eggdrop 1.9.4 documentation - - - - - - - + + + + TLS support — Eggdrop 1.9.5 documentation + + + + +
    -
    control ssl certificate verification. A value of 0 disables +

    control ssl certificate verification. A value of 0 disables verification completely. A value of 1 enables full verification. Higher values enable specific exceptions like allowing self-signed -or expired certificates. Details are documented in eggdrop.conf.

    +or expired certificates. Details are documented in eggdrop.conf.

    -

    Copyright (C) 2010 - 2022 Eggheads Development Team

    - - + +

    Copyright (C) 2010 - 2023 Eggheads Development Team

    + + +
    @@ -325,9 +324,9 @@

    SSL/TLS Settings
    diff --git a/doc/html/using/tricks.html b/doc/html/using/tricks.html index a63929472..a429394fc 100644 --- a/doc/html/using/tricks.html +++ b/doc/html/using/tricks.html @@ -1,30 +1,25 @@ - + - + - - - Advanced Tips — Eggdrop 1.9.4 documentation - - - - - - - + + + + Advanced Tips — Eggdrop 1.9.5 documentation + + + + + @@ -174,9 +172,9 @@

    Variables in Your Config
    diff --git a/doc/html/using/twitch-tcl-commands.html b/doc/html/using/twitch-tcl-commands.html index c973faeb1..4b6d3978a 100644 --- a/doc/html/using/twitch-tcl-commands.html +++ b/doc/html/using/twitch-tcl-commands.html @@ -1,30 +1,25 @@ - + - + - - - Eggdrop Twitch Tcl Commands — Eggdrop 1.9.4 documentation - - - - - - - + + + + Eggdrop Twitch Tcl Commands — Eggdrop 1.9.5 documentation + + + + + + + + +
    @@ -309,9 +303,9 @@

    Bind Types
    diff --git a/doc/html/using/twitchinfo.html b/doc/html/using/twitchinfo.html index 76ba167ed..6a3200e8b 100644 --- a/doc/html/using/twitchinfo.html +++ b/doc/html/using/twitchinfo.html @@ -1,30 +1,25 @@ - + - + - - - Twitch — Eggdrop 1.9.4 documentation - - - - - - - + + + + Twitch — Eggdrop 1.9.5 documentation + + + + +
    diff --git a/doc/html/using/users.html b/doc/html/using/users.html index 174947f73..6f478e43a 100644 --- a/doc/html/using/users.html +++ b/doc/html/using/users.html @@ -1,30 +1,25 @@ - + - + - - - Users and Flags — Eggdrop 1.9.4 documentation - - - - - - - + + + + Users and Flags — Eggdrop 1.9.5 documentation + + + + +