diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml deleted file mode 100644 index 485733521..000000000 --- a/.github/workflows/ccpp.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: C/C++ CI - -on: - pull_request: - branches: - - develop - -jobs: - build: - name: compile test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v1 - - name: install dependencies - run: sudo apt-get install tcl tcl-dev openssl libssl-dev - - name: configure - run: ./configure - - name: make config - run: make config - - name: make - run: make - - name: make install - run: make install diff --git a/.github/workflows/configure_flags.yml b/.github/workflows/configure_flags.yml deleted file mode 100644 index 60a8c07bb..000000000 --- a/.github/workflows/configure_flags.yml +++ /dev/null @@ -1,41 +0,0 @@ -on: - workflow_dispatch: - inputs: - name: - description: 'Test configure flags' - -jobs: - configure-nosslflag: - name: Configure, --disable-tls - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get install tcl tcl-dev - - run: ./configure --disable-tls - - run: make config - - run: make - - run: make install - - - configure-noipv6: - name: Configure, --disable-ipv6 - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get install tcl tcl-dev - - run: ./configure --disable-ipv6 - - run: make config - - run: make - - run: make install - - - configure-notdns: - name: Configure, --disable-tdns - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - run: sudo apt-get install tcl tcl-dev - - run: ./configure --disable-tdns - - run: make config - - run: make - - run: make install diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml new file mode 100644 index 000000000..246f35043 --- /dev/null +++ b/.github/workflows/dependencies.yml @@ -0,0 +1,116 @@ +name: Tcl/SSL Versions + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + tcl-versions: + name: Tcl Versions + strategy: + matrix: + tcl_version: [ '8.5.19', '8.6.14', '8.7a5', '9.0b2' ] + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install openssl libssl-dev + - name: Build Tcl + run: | + wget http://prdownloads.sourceforge.net/tcl/tcl${{ matrix.tcl_version }}-src.tar.gz && \ + tar xzf tcl${{ matrix.tcl_version }}-src.tar.gz && \ + cd tcl${{ matrix.tcl_version }}/unix && \ + ./configure --prefix=$HOME/tcl && \ + make -j4 && make install + - name: Build + run: ./configure --with-tcl=$HOME/tcl/lib && LD_LIBRARY_PATH=$HOME/tcl/lib make config eggdrop + ssl-version-098: + name: OpenSSL 0.9.8 + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - name: Build OpenSSL + run: | + wget https://www.openssl.org/source/old/0.9.x/openssl-0.9.8zh.tar.gz && \ + sha256sum --status --check <(echo f1d9f3ed1b85a82ecf80d0e2d389e1fda3fca9a4dba0bf07adbf231e1a5e2fd6 openssl-0.9.8zh.tar.gz) && \ + tar xzf openssl-0.9.8zh.tar.gz && \ + cd openssl-0.9.8zh && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib && LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop + ssl-version-10: + name: OpenSSL 1.0 + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - name: Build OpenSSL + run: | + wget https://www.openssl.org/source/old/1.0.2/openssl-1.0.2u.tar.gz && \ + sha256sum --status --check <(echo ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16 openssl-1.0.2u.tar.gz) && \ + tar xzf openssl-1.0.2u.tar.gz && \ + cd openssl-1.0.2u && ./config --prefix=$HOME/ssl -fPIC && make -j4 && make install_sw + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib && LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop + ssl-version-11: + name: OpenSSL 1.1 + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + repository: openssl/openssl + ref: 'OpenSSL_1_1_1w' + path: 'openssl' + - name: Build OpenSSL + run: | + cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib && LD_LIBRARY_PATH=$HOME/ssl/lib make config eggdrop + ssl-versions-3x: + name: OpenSSL 3.x + strategy: + matrix: + ssl_version: [ '3.0', '3.1', '3.2', '3.3' ] + continue-on-error: true + runs-on: ubuntu-latest + steps: + - uses: oprypin/find-latest-tag@v1 + with: + repository: openssl/openssl + releases-only: true + prefix: 'openssl-' + regex: "${{ matrix.ssl_version }}.[0-9]+" + sort-tags: true + id: openssl + - uses: actions/checkout@v4 + with: + repository: openssl/openssl + ref: ${{ steps.openssl.outputs.tag }} + path: 'openssl' + - name: Build OpenSSL + run: | + cd $GITHUB_WORKSPACE/openssl && ./config --prefix=$HOME/ssl && make -j4 && make install_sw + - uses: actions/checkout@v4 + with: + path: 'eggdrop' + - name: install dependencies + run: sudo apt-get install tcl tcl-dev + - name: Build + run: cd $GITHUB_WORKSPACE/eggdrop && ./configure --with-sslinc=$HOME/ssl/include --with-ssllib=$HOME/ssl/lib64 && LD_LIBRARY_PATH=$HOME/ssl/lib64 make config eggdrop diff --git a/.github/workflows/make.yml b/.github/workflows/make.yml new file mode 100644 index 000000000..e1dc3be6b --- /dev/null +++ b/.github/workflows/make.yml @@ -0,0 +1,39 @@ +name: Eggdrop Compile + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + default-build: + name: Compile Test + strategy: + matrix: + cc: [ 'gcc', 'clang' ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install clang tcl tcl-dev openssl libssl-dev + - name: Build + env: + CC: ${{ matrix.cc }} + run: ./configure && make config && make -j4 && make install + feature-test: + name: Features + continue-on-error: true + needs: default-build + strategy: + matrix: + conf_tls: [ '', '--disable-tls' ] + conf_ipv6: [ '', '--disable-ipv6' ] + conf_tdns: [ '', '--disable-tdns' ] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install tcl tcl-dev openssl libssl-dev + - name: Build + run: ./configure ${{ matrix.conf_tls }} ${{ matrix.conf_ipv6 }} ${{ matrix.conf_tdns }} && make config && make -j4 diff --git a/.github/workflows/misc.yml b/.github/workflows/misc.yml new file mode 100644 index 000000000..b6a894b30 --- /dev/null +++ b/.github/workflows/misc.yml @@ -0,0 +1,45 @@ +name: Check autotools/makedepend + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + autotools-check: + name: Check if misc/runautotools needs to be run + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install build-essential autoconf + - name: Stage configure with revision removed + run: | + for i in `find . -name configure`; do sed -i 's/From configure.ac .*//' $i; git add $i; done + - name: Run autotools + run: misc/runautotools + - name: Remove configure revision again + run: | + for i in `find . -name configure`; do sed -i 's/From configure.ac .*//' $i; done + - name: Check diff + run: | + git diff | tee .gitdiff + if [ -s .gitdiff ]; then + exit 1 + fi + makedepend-check: + name: Check if misc/makedepend needs to be run + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: install dependencies + run: sudo apt-get install build-essential autoconf tcl-dev tcl openssl libssl-dev + - name: Run makedepend + run: misc/makedepend + - name: Check diff + run: | + git diff | tee .gitdiff + if [ -s .gitdiff ]; then + exit 1 + fi diff --git a/.gitignore b/.gitignore index 52806ce03..37ee0f2d9 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,4 @@ config.cache eggdrop EGGMOD.stamp mod.xlibs +__pycache__ diff --git a/AUTHORS b/AUTHORS index dc4275d08..02a5fa5f4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -104,4 +104,4 @@ See also: THANKS, doc/Versions, doc/Changes ------------------------------------------------------------------------------ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/CONTENTS b/CONTENTS index 6b5dbc606..5b622bba6 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 - 2023 Eggheads Development Team + Copyright (C) 2003 - 2024 Eggheads Development Team diff --git a/FEATURES b/FEATURES index 4de630f7e..ac5095619 100644 --- a/FEATURES +++ b/FEATURES @@ -44,4 +44,4 @@ Eggdrop Features Copyright (C) 1997 Robey Pointer -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/INSTALL b/INSTALL index 81e2a5184..1db949afb 100644 --- a/INSTALL +++ b/INSTALL @@ -158,5 +158,5 @@ the README file. If not, then READ IT!&@#%@! Have fun with Eggdrop! - Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2023 Eggheads + Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/Makefile.in b/Makefile.in index 733e3e613..93de77211 100644 --- a/Makefile.in +++ b/Makefile.in @@ -490,6 +490,7 @@ install-doc: install-start cd doc/ && $(MAKE_INSTALL) install install-scripts: install-start - +@cd scripts/ && $(MAKE_INSTALL) install + +@cd scripts/ && $(MAKE_INSTALL) install; \ + cd ../src/mod && $(MAKE_INSTALL) install-scripts #safety hash diff --git a/NEWS b/NEWS index e6e210449..827acab07 100644 --- a/NEWS +++ b/NEWS @@ -317,4 +317,4 @@ Eggdrop v1.9.0: ________________________________________________________________________ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/README b/README index 9696eee5d..468549297 100644 --- a/README +++ b/README @@ -61,7 +61,7 @@ FTP The latest Eggdrop stable source code is always located at https://geteggdrop.com. You can also download the current stable, previous stable, and development snapshot via FTP at - ftp.eggheads.org/pub/Eggdrop/source + ftp://ftp.eggheads.org/pub/eggdrop/source Git Development Snapshot @@ -216,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 - 2023 Eggheads +Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/aclocal.m4 b/aclocal.m4 index f0df8ce91..748fb2969 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 - 2023 Eggheads Development Team +dnl Copyright (C) 1999 - 2024 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 @@ -20,6 +20,9 @@ dnl dnl Load tcl macros builtin(include,m4/tcl.m4) +dnl Load python macros +builtin(include,m4/python.m4) + dnl Load gnu autoconf archive macros builtin(include,m4/ax_create_stdint_h.m4) builtin(include,m4/ax_lib_socket_nsl.m4) @@ -192,12 +195,12 @@ dnl Check for a working C99 C compiler. dnl AC_DEFUN([EGG_CHECK_CC_C99], [ - if test "$ac_cv_prog_cc_c99" = no; then + if test "$ac_cv_prog_cc_c11" = no && test "$ac_cv_prog_cc_c99" = no; then cat << 'EOF' >&2 configure: error: - This C compiler does not appear to have a working C99 mode. - A working C99 C compiler is required to compile Eggdrop. + This C compiler does not appear to have a working C99/C11 mode. + A working C99/C11 C compiler is required to compile Eggdrop. EOF exit 1 @@ -313,32 +316,24 @@ AC_DEFUN([EGG_FUNC_B64_NTOP], # Check for b64_ntop. If we have b64_ntop, we assume b64_pton as well. AC_MSG_CHECKING(for b64_ntop) - AC_TRY_LINK( - [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include - ], - [b64_ntop(NULL, 0, NULL, 0);], - found_b64_ntop=yes, - found_b64_ntop=no - ) + ]], [[b64_ntop(NULL, 0, NULL, 0);]])],[found_b64_ntop=yes],[found_b64_ntop=no + ]) if test "x$found_b64_ntop" = xno; then AC_MSG_RESULT(no) AC_MSG_CHECKING(for b64_ntop with -lresolv) OLD_LIBS="$LIBS" LIBS="$LIBS -lresolv" - AC_TRY_LINK( - [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include - ], - [b64_ntop(NULL, 0, NULL, 0);], - found_b64_ntop=yes, - found_b64_ntop=no - ) + ]], [[b64_ntop(NULL, 0, NULL, 0);]])],[found_b64_ntop=yes],[found_b64_ntop=no + ]) if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" AC_MSG_RESULT(no) @@ -346,16 +341,12 @@ AC_DEFUN([EGG_FUNC_B64_NTOP], AC_MSG_CHECKING(for b64_ntop with -lnetwork) OLD_LIBS="$LIBS" LIBS="-lnetwork" - AC_TRY_LINK( - [ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include - ], - [b64_ntop(NULL, 0, NULL, 0);], - found_b64_ntop=yes, - found_b64_ntop=no - ) + ]], [[b64_ntop(NULL, 0, NULL, 0);]])],[found_b64_ntop=yes],[found_b64_ntop=no + ]) if test "x$found_b64_ntop" = xno; then LIBS="$OLD_LIBS" AC_MSG_RESULT(no) @@ -1429,22 +1420,20 @@ if test "$enable_ipv6" = "yes"; then if test "$egg_cv_var_have_in6_addr" = "yes"; then # Check for in6addr_any AC_CACHE_CHECK([for the in6addr_any constant], [egg_cv_var_have_in6addr_any], [ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include - ], [struct in6_addr i6 = in6addr_any;], - [egg_cv_var_have_in6addr_any="yes"], [egg_cv_var_have_in6addr_any="no"]) + ]], [[struct in6_addr i6 = in6addr_any;]])],[egg_cv_var_have_in6addr_any="yes"],[egg_cv_var_have_in6addr_any="no"]) ]) if test "$egg_cv_var_have_in6addr_any" = "yes"; then AC_DEFINE(HAVE_IN6ADDR_ANY, 1, [Define to 1 if you have the in6addr_any constant.]) fi # Check for in6addr_loopback AC_CACHE_CHECK([for the in6addr_loopback constant], [egg_cv_var_have_in6addr_loopback], [ - AC_TRY_COMPILE([ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include #include - ], [struct in6_addr i6 = in6addr_loopback;], - [egg_cv_var_have_in6addr_loopback="yes"], [egg_cv_var_have_in6addr_loopback="no"]) + ]], [[struct in6_addr i6 = in6addr_loopback;]])],[egg_cv_var_have_in6addr_loopback="yes"],[egg_cv_var_have_in6addr_loopback="no"]) ]) if test "$egg_cv_var_have_in6addr_loopback" = "yes"; then AC_DEFINE(HAVE_IN6ADDR_LOOPBACK, 1, [Define to 1 if you have the in6addr_loopback constant.]) @@ -1530,13 +1519,10 @@ AC_DEFUN([EGG_TLS_ENABLE], [ AC_MSG_CHECKING([whether to enable TLS support]) AC_ARG_ENABLE(tls, - [ --enable-tls enable TLS support (autodetect)], - [enable_tls="$enableval"]) - AC_ARG_ENABLE(tls, - [ --disable-tls disable TLS support ], [enable_tls="$enableval"], - [enable_tls="autodetect"]) + [ --disable-tls disable TLS support ], [tls_enabled="$enableval"], + [tls_enabled="yes"]) - AC_MSG_RESULT([$enable_tls]) + AC_MSG_RESULT([$tls_enabled]) ]) @@ -1546,14 +1532,14 @@ AC_DEFUN(EGG_TLS_WITHSSL, [ save_LIBS="$LIBS" AC_ARG_WITH(sslinc, [ --with-sslinc=PATH Path to OpenSSL headers], [ - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -d "$withval"; then save_CC="$CC" save_CPP="$CPP" CC="$CC -I$withval" CPP="$CPP -I$withval" AC_CHECK_HEADERS([openssl/ssl.h openssl/x509v3.h], [sslinc="-I$withval"], [ - AC_MSG_WARN([Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files.]) + AC_MSG_ERROR([Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files.]) sslinc="" break ], [[ @@ -1567,25 +1553,25 @@ AC_DEFUN(EGG_TLS_WITHSSL, CC="$save_CC" CPP="$save_CPP" else - AC_MSG_WARN([Invalid path to OpenSSL headers. $withval is not a directory.]) + AC_MSG_ERROR([Invalid path to OpenSSL headers. $withval is not a directory.]) fi fi ]) AC_ARG_WITH(ssllib, [ --with-ssllib=PATH Path to OpenSSL libraries], [ - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -d "$withval"; then AC_CHECK_LIB(crypto, X509_digest, , [havessllib="no"], [-L$withval -lssl]) AC_CHECK_LIB(ssl, SSL_accept, , [havessllib="no"], [-L$withval -lcrypto]) if test "$havessllib" = "no"; then - AC_MSG_WARN([Invalid path to OpenSSL libs. $withval doesn't contain the required files.]) + AC_MSG_ERROR([Invalid path to OpenSSL libs. $withval doesn't contain the required files.]) else AC_SUBST(SSL_LIBS, [-L$withval]) LDFLAGS="${LDFLAGS} -L$withval" fi else - AC_MSG_WARN([You have specified an invalid path to OpenSSL libs. $withval is not a directory.]) + AC_MSG_ERROR([You have specified an invalid path to OpenSSL libs. $withval is not a directory.]) fi fi ]) @@ -1596,8 +1582,7 @@ dnl EGG_TLS_DETECT dnl AC_DEFUN([EGG_TLS_DETECT], [ - tls_enabled="no" - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "no"; then if test -z "$SSL_INCLUDES"; then AC_CHECK_HEADERS([openssl/ssl.h openssl/x509v3.h], , [havesslinc="no"], [ #ifdef CYGWIN_HACKS @@ -1610,11 +1595,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]) @@ -1631,20 +1617,20 @@ AC_DEFUN([EGG_TLS_DETECT], break ]]) ) - if test "$enable_tls" = "yes"; then - if test "$havesslinc" = "no"; then - AC_MSG_WARN([Cannot find OpenSSL headers.]) - AC_MSG_WARN([Please specify the path to the openssl include dir using --with-sslinc=path]) - fi - if test "$havessllib" = "no"; then - AC_MSG_WARN([Cannot find OpenSSL libraries.]) - AC_MSG_WARN([Please specify the path to libssl and libcrypto using --with-ssllib=path]) - fi + if test "$havesslinc" = "no"; then + AC_MSG_WARN([Cannot find OpenSSL headers.]) + AC_MSG_WARN([Please specify the path to the openssl include dir using --with-sslinc=path]) + fi + if test "$havessllib" = "no"; then + AC_MSG_WARN([Cannot find OpenSSL libraries.]) + AC_MSG_WARN([Please specify the path to libssl and libcrypto using --with-ssllib=path]) fi AC_MSG_CHECKING([for OpenSSL]) if test "$havesslinc" = "no" || test "$havessllib" = "no"; then - AC_MSG_RESULT([no (make sure you have version 0.9.8 or higher installed)]) - LIBS="$save_LIBS" + AC_MSG_RESULT([no]) + AC_MSG_RESULT([* We tried, but couldn't find TLS libraries. If installed, please specify their paths using the configure flags above]) + AC_MSG_RESULT([* While not recommended, you can continue without TLS protection by specifying the --disable-tls configure flag]) + AC_MSG_ERROR([TLS Libraries not found]) else AC_MSG_RESULT([yes]) if test "$EGG_CYGWIN" = "yes"; then @@ -1659,7 +1645,6 @@ AC_DEFUN([EGG_TLS_DETECT], ) dnl EVP_PKEY_get1_EC_KEY: OpenSSL without EC (SunOS 5.11 Solaris 11.3 I love you Oracle) AC_CHECK_FUNCS([EVP_PKEY_get1_EC_KEY]) - tls_enabled="yes" EGG_MD5_COMPAT fi fi diff --git a/config.h.in b/config.h.in index cec70a8a3..4ac55ced2 100644 --- a/config.h.in +++ b/config.h.in @@ -2,7 +2,7 @@ /* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2023 Eggheads Development Team + * Copyright (C) 1999 - 2024 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 @@ -132,9 +132,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the `isascii' function. */ -#undef HAVE_ISASCII - /* Define to 1 if you have the `crypto' library (-lcrypto). */ #undef HAVE_LIBCRYPTO @@ -156,9 +153,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_LOCALE_H -/* Define to 1 if you have the `lrand48' function. */ -#undef HAVE_LRAND48 - /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_DYLD_H @@ -174,12 +168,15 @@ /* 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_explicit' function. */ +#undef HAVE_MEMSET_EXPLICIT /* 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 @@ -213,12 +210,6 @@ /* Have PTHREAD_PRIO_INHERIT. */ #undef HAVE_PTHREAD_PRIO_INHERIT -/* Define to 1 if you have the `rand' function. */ -#undef HAVE_RAND - -/* Define to 1 if you have the `random' function. */ -#undef HAVE_RANDOM - /* Define to 1 if you have the header file. */ #undef HAVE_RLD_H @@ -293,6 +284,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H +/* Define to 1 if you have the header file. */ +#undef HAVE_TIME_H + /* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE @@ -387,15 +381,14 @@ /* 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 . */ -#undef TIME_WITH_SYS_TIME - /* Define this to enable SSL support. */ #undef TLS @@ -406,21 +399,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 @@ -436,16 +495,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 @@ -466,7 +515,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 2815718c8..9c1c4eeb9 100755 --- a/configure +++ b/configure @@ -1,32 +1,35 @@ #! /bin/sh -# From configure.ac 1d62d238. +# From configure.ac 4af46aa3. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop 1.9.5. +# 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 - 2023 Eggheads Development Team +# Copyright (C) 1999 - 2024 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 @@ -586,52 +617,49 @@ PACKAGE_TARNAME='eggdrop' PACKAGE_VERSION='1.9.5' PACKAGE_STRING='Eggdrop 1.9.5' PACKAGE_BUGREPORT='bugs@eggheads.org' -PACKAGE_URL='' +PACKAGE_URL='https://www.eggheads.org' 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 DEST EGGVERSION +egg_with_python_config SSL_LIBS SSL_INCLUDES DEBCFLGS @@ -684,6 +712,9 @@ PTHREAD_LIBS PTHREAD_CXX PTHREAD_CC ax_pthread_config +EGREP +GREP +CPP SED host_os host_vendor @@ -706,9 +737,6 @@ INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM EGGEXEC -EGREP -GREP -CPP OBJEXT EXEEXT ac_ct_CC @@ -774,6 +802,7 @@ enable_tls with_sslinc with_ssllib enable_tdns +with_python_config ' ac_precious_vars='build_alias host_alias @@ -852,8 +881,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 +921,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 +947,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 +1160,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 +1176,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 +1222,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 +1240,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 +1304,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 @@ -1429,11 +1456,11 @@ Optional Features and Packages: --with-handlen=VALUE set the maximum length a handle on the bot can be --enable-ipv6 enable IPv6 support (autodetect) --disable-ipv6 disable IPv6 support - --enable-tls enable TLS support (autodetect) --disable-tls disable TLS support --with-sslinc=PATH Path to OpenSSL headers --with-ssllib=PATH Path to OpenSSL libraries --disable-tdns disable threaded DNS core + --with-python-config=PATH Path to python-config Some influential environment variables: CC C compiler command @@ -1449,6 +1476,7 @@ Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . +Eggdrop home page: . _ACEOF ac_status=$? fi @@ -1464,9 +1492,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 +1522,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 +1531,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 @@ -1512,13 +1541,13 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop configure 1.9.5 -generated by GNU Autoconf 2.69 +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 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team _ACEOF exit fi @@ -1533,14 +1562,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 +1577,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 +1595,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 +1602,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 +1634,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 +1649,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 +1675,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 +1732,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 +1752,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 +1825,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 +1844,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 +1858,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 +1882,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 +1901,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 +1918,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 +1970,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 +2001,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 +2011,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 +2029,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 +2040,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 +2057,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 +2075,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 +2086,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 +2101,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 +2111,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 +2127,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 +2160,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.5, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -2258,8 +2235,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 +2275,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 +2310,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 +2327,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 +2352,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 +2360,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 +2375,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 +2391,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 +2406,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 +2457,598 @@ 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/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 +3056,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 +3075,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 +3092,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 +3105,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 +3124,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 +3140,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 +3149,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 +3175,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 +3183,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int -main () +main (void) { ; @@ -2819,9 +3195,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 +3218,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 +3240,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 +3256,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 +3309,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 +3326,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 +3338,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 +3347,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 +3358,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 +3405,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 +3419,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 +3454,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 +3489,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,770 +3557,355 @@ 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 "$ac_cv_prog_cc_c99" = no; then + if test "x$cross_compiling" = x; then cat << 'EOF' >&2 configure: error: - This C compiler does not appear to have a working C99 mode. - A working C99 C compiler is required to compile Eggdrop. + This system does not appear to have a working C compiler. + A working C compiler is required to compile Eggdrop. EOF exit 1 fi -# 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 -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 : + if test "$ac_cv_prog_cc_c11" = no && test "$ac_cv_prog_cc_c99" = no; then + cat << 'EOF' >&2 +configure: error: -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext + This C compiler does not appear to have a working C99/C11 mode. + A working C99/C11 C compiler is required to compile Eggdrop. - # 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 +EOF + exit 1 + 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 +# These 3 need to be done before any AC_COMPILE_IFELSE()'s. -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 +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 : + 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 -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 -{ $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 +if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes +then : + +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 +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 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 +{ 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; } -fi + printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h -# 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 + printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h -fi + printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h -done + printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h + printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h + printf "%s\n" "#define _OPENBSD_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 _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h - if test "$MINIX" = yes; then + printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h -$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + 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 "#define _MINIX 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h - fi + printf "%s\n" "#define _TANDEM_SOURCE 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 "$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 _POSIX_SOURCE 1" >>confdefs.h -# define __EXTENSIONS__ 1 - $ac_includes_default -int -main () -{ + printf "%s\n" "#define _POSIX_1_SOURCE 2" >>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 +else $as_nop + MINIX= 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 - - $as_echo "#define _ALL_SOURCE 1" >>confdefs.h - - $as_echo "#define _GNU_SOURCE 1" >>confdefs.h - - $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h - - $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + if test $ac_cv_safe_to_define___extensions__ = yes +then : + printf "%s\n" "#define __EXTENSIONS__ 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,13 +4805,13 @@ 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" - $as_echo '' >> "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 @@ -4802,23 +4839,299 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } +{ 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" + 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_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 +{ 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,172 @@ 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 +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" "time.h" "ac_cv_header_time_h" "$ac_includes_default" +if test "x$ac_cv_header_time_h" = xyes +then : + printf "%s\n" "#define HAVE_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 +6983,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 +7011,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 +7027,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 +7059,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 +7084,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 +7093,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 +7105,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 +7114,7 @@ if ac_fn_c_try_compile "$LINENO"; then : #include int -main () +main (void) { #if BYTE_ORDER != BIG_ENDIAN not big endian @@ -6652,14 +7124,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 +7141,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 +7151,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 +7169,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 +7203,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 +7224,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 +7246,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 +7258,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 +7276,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 +7321,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 +7334,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 +7387,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 +7468,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 +7605,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 +7650,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 +7705,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 +7722,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 +7765,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 +7786,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 +7867,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 +7914,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 +7954,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 +7987,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 +8020,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 +8053,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 +8086,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 +8102,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 +8123,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 +8138,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,46 +8174,87 @@ 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" + + + +# Checks for functions and their arguments. +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 +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 + +fi +ac_fn_c_check_func "$LINENO" "memset_explicit" "ac_cv_func_memset_explicit" +if test "x$ac_cv_func_memset_explicit" = xyes +then : + printf "%s\n" "#define HAVE_MEMSET_EXPLICIT 1" >>confdefs.h + +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 + +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 -# ----------------- DONE inttypes.h checks START header ------------- -ac_config_commands="$ac_config_commands $ac_stdint_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" "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 -# 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 +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 -done -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 -done -{ $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 +{ 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 +8268,7 @@ $ac_includes_default #endif int -main () +main (void) { extern int select ($ac_arg1, $ac_arg234, $ac_arg234, $ac_arg234, @@ -7629,46 +8277,46 @@ 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; } + if test "$cross_compiling" = yes +then : + { { 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 run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7677,30 +8325,40 @@ $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_run "$LINENO" +then : found_b64_ntop=yes -else +else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + 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 + if test "$cross_compiling" = yes +then : + { { 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 run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -7708,31 +8366,41 @@ $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_run "$LINENO" +then : found_b64_ntop=yes -else +else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + 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 + if test "$cross_compiling" = yes +then : + { { 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 run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -7740,34 +8408,37 @@ $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_run "$LINENO" +then : found_b64_ntop=yes -else +else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + 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 +8449,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 +8510,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 +8543,7 @@ char *malloc (); #endif /* no HAVE_GETPAGESIZE */ int -main () +main (void) { char *data, *data2, *data3; const char *cdata2; @@ -7961,9 +8616,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 +8627,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 @@ -8018,8 +8674,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 +8705,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 +8727,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 +8737,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 +8849,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,15 +8866,15 @@ 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 - # like AC_PROG_CC and AC_TRY_COMPILE from adding "-g -O2". + # like AC_PROG_CC and AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[],[]) from adding "-g -O2". if test "${CFLAGS+set}" != "set" ; then CFLAGS="" fi @@ -8226,11 +8884,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 +8897,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 +8917,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 +8957,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 +8991,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 +9009,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 +9124,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 +9198,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 +9216,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 +9240,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 +9260,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 +9303,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 +9323,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 +9353,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 +9366,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 +9420,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 +9447,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 +9482,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 +9509,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 +9551,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 +9566,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,22 +9591,22 @@ $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; } @@ -8967,72 +9647,82 @@ EOF # 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 @@ -9094,8 +9784,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 @@ -9166,8 +9856,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 @@ -9176,7 +9866,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 @@ -9195,18 +9885,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 @@ -9216,13 +9905,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. */ @@ -9232,7 +9923,7 @@ else #include int -main () +main (void) { int s = socket(AF_INET6, SOCK_STREAM, 0); @@ -9246,18 +9937,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. */ @@ -9266,7 +9958,7 @@ else #include int -main () +main (void) { int s = socket(AF_INET6, SOCK_STREAM, 0); @@ -9280,11 +9972,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" @@ -9295,33 +9988,35 @@ 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 @@ -9333,24 +10028,24 @@ if test "$enable_ipv6" = "yes"; then #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. */ @@ -9359,34 +10054,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. */ @@ -9395,26 +10092,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" " @@ -9422,18 +10120,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 @@ -9441,39 +10138,36 @@ 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; } - # Check whether --enable-tls was given. -if test "${enable_tls+set}" = set; then : - enableval=$enable_tls; enable_tls="$enableval" -fi - + { 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 : - enableval=$enable_tls; enable_tls="$enableval" -else - enable_tls="autodetect" +if test ${enable_tls+y} +then : + enableval=$enable_tls; tls_enabled="$enableval" +else $as_nop + tls_enabled="yes" 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: $tls_enabled" >&5 +printf "%s\n" "$tls_enabled" >&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 "$tls_enabled" != "no"; then if test -d "$withval"; then save_CC="$CC" 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 @@ -9482,29 +10176,27 @@ 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;} + as_fn_error $? "Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." "$LINENO" 5 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;} + as_fn_error $? "Invalid path to OpenSSL headers. $withval is not a directory." "$LINENO" 5 fi fi @@ -9513,15 +10205,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 "$tls_enabled" != "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 @@ -9530,45 +10224,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 @@ -9577,51 +10269,46 @@ 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;} + as_fn_error $? "Invalid path to OpenSSL libs. $withval doesn't contain the required files." "$LINENO" 5 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;} + as_fn_error $? "You have specified an invalid path to OpenSSL libs. $withval is not a directory." "$LINENO" 5 fi fi @@ -9629,12 +10316,11 @@ fi - tls_enabled="no" - if test "$enable_tls" != "no"; then + if test "$tls_enabled" != "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 @@ -9643,24 +10329,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 @@ -9669,45 +10356,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 @@ -9716,69 +10401,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 @@ -9789,16 +10482,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 @@ -9808,105 +10503,104 @@ fi 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;} - 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;} - fi + if test "$havesslinc" = "no"; then + { 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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for OpenSSL" >&5 -$as_echo_n "checking for OpenSSL... " >&6; } + if test "$havessllib" = "no"; then + { 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 + { 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; } - LIBS="$save_LIBS" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: * We tried, but couldn't find TLS libraries. If installed, please specify their paths using the configure flags above" >&5 +printf "%s\n" "* We tried, but couldn't find TLS libraries. If installed, please specify their paths using the configure flags above" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: * While not recommended, you can continue without TLS protection by specifying the --disable-tls configure flag" >&5 +printf "%s\n" "* While not recommended, you can continue without TLS protection by specifying the --disable-tls configure flag" >&6; } + as_fn_error $? "TLS Libraries not found" "$LINENO" 5 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" save_CC="$CC" 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" @@ -9919,9 +10613,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 @@ -9930,12 +10625,32 @@ 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 +# Check for Python + + +# Check whether --with-python-config was given. +if test ${with_python_config+y} +then : + withval=$with_python_config; + if test -d "$withval" || test -x "$withval"; then + egg_with_python_config="$withval" + else + egg_with_python_config="no" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&5 +printf "%s\n" "$as_me: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&2;} + fi + +fi + + + + # Substitute Makefile variables. @@ -9944,9 +10659,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 @@ -9973,11 +10686,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 @@ -10015,8 +10729,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) ;; #( @@ -10046,15 +10760,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 @@ -10068,8 +10782,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 @@ -10086,7 +10800,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" @@ -10103,8 +10817,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 @@ -10127,14 +10841,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 ;; #( @@ -10144,46 +10860,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 || @@ -10192,13 +10908,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 #(( @@ -10207,8 +10916,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 @@ -10220,30 +10933,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] @@ -10256,13 +10949,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. @@ -10289,18 +10983,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 @@ -10312,12 +11008,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` @@ -10348,7 +11045,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 @@ -10370,6 +11067,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*) @@ -10383,6 +11084,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 @@ -10424,7 +11131,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" @@ -10433,7 +11140,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 @@ -10496,7 +11203,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop $as_me 1.9.5, which was -generated by GNU Autoconf 2.69. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -10555,17 +11262,20 @@ $config_headers Configuration commands: $config_commands -Report bugs to ." +Report bugs to . +Eggdrop home page: ." _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.5 -configured by $0, generated by GNU Autoconf 2.69, +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." @@ -10604,15 +11314,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'" @@ -10620,7 +11330,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;; @@ -10629,7 +11339,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=: ;; @@ -10657,7 +11367,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 "\$@" @@ -10671,7 +11381,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 @@ -10683,7 +11393,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" @@ -10731,9 +11441,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 @@ -11069,7 +11779,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 @@ -11077,17 +11787,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 @@ -11104,7 +11814,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 @@ -11128,9 +11838,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/ ;; @@ -11187,8 +11897,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=' @@ -11231,9 +11941,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" @@ -11249,35 +11959,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 @@ -11708,15 +12418,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 @@ -11797,26 +12507,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 @@ -11842,79 +12552,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 defe04557..86756534d 100644 --- a/configure.ac +++ b/configure.ac @@ -1,20 +1,20 @@ dnl configure.ac: this file is processed by autoconf to produce ./configure. -AC_PREREQ(2.61) -AC_INIT([Eggdrop],[1.9.5],[bugs@eggheads.org]) -AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) +AC_PREREQ([2.71]) +AC_INIT([Eggdrop],[1.9.5],[bugs@eggheads.org],[eggdrop],[https://www.eggheads.org]) +AC_COPYRIGHT([Copyright (C) 1999 - 2024 Eggheads Development Team]) AC_LANG([C]) AC_REVISION([m4_esyscmd([misc/getcommit])]) AC_CONFIG_SRCDIR(src/eggdrop.h) AC_CONFIG_AUX_DIR(misc) -AC_CONFIG_HEADER(config.h) +AC_CONFIG_HEADERS([config.h]) AC_PREFIX_DEFAULT([\${HOME}/eggdrop]) AC_PRESERVE_HELP_ORDER dnl config.h stuff AH_TOP([/* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2023 Eggheads Development Team + * Copyright (C) 1999 - 2024 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 @@ -43,13 +43,12 @@ EGG_SAVE_PARAMETERS # Check for a working C compiler AC_PROG_CC([gcc cc clang]) EGG_CHECK_CC -AC_PROG_CC_C99 EGG_CHECK_CC_C99 # These 3 need to be done before any AC_COMPILE_IFELSE()'s. -AC_AIX -AC_ISC_POSIX -AC_MINIX +AC_USE_SYSTEM_EXTENSIONS +AC_SEARCH_LIBS([strerror],[cposix]) +AC_USE_SYSTEM_EXTENSIONS # Check C compiler characteristics. EGG_CHECK_ICC @@ -92,8 +91,8 @@ EGG_CHECK_OS # Checks for header files. EGG_HEADER_STDC AC_HEADER_DIRENT -AC_HEADER_TIME -AC_CHECK_HEADERS([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]) + +AC_CHECK_HEADERS([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 time.h unistd.h wchar.h]) # Checks for typedefs, structures, and compiler characteristics. @@ -113,7 +112,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 memset_s snprintf strlcpy vsnprintf]) AC_FUNC_SELECT_ARGTYPES EGG_FUNC_B64_NTOP AC_FUNC_MMAP @@ -164,6 +163,9 @@ EGG_TLS_DETECT # Threaded DNS core EGG_TDNS_ENABLE +# Check for Python +EGG_PYTHON_WITHCONFIG + # Substitute Makefile variables. EGG_SUBST_EGGVERSION diff --git a/doc/ABOUT b/doc/ABOUT index dd7301edd..615223797 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 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/AUTOSCRIPTS b/doc/AUTOSCRIPTS new file mode 100644 index 000000000..fb427f1d8 --- /dev/null +++ b/doc/AUTOSCRIPTS @@ -0,0 +1,249 @@ +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 .autoscript on the +partyline. This will open up a special Eggdrop console that doesn't +require you to prefix commands with a '.' . 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 - - + + + + + @@ -45,6 +44,7 @@

Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -99,7 +99,7 @@

    Search

    About Eggdrop Last revised: July 27, 2010

    -

    About Eggdrop¶

    +

    About Eggdrop¶

    Eggdrop was created around December 1993 to help stop the incessant wars on #gayteen. It spawned from another bot that was in the process of being @@ -144,7 +144,7 @@

    About Eggdrop

    diff --git a/doc/html/about/legal.html b/doc/html/about/legal.html index 118cf44cf..5e510d5b1 100644 --- a/doc/html/about/legal.html +++ b/doc/html/about/legal.html @@ -1,17 +1,16 @@ - - + - + Boring legal stuff — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -42,6 +41,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -94,7 +94,7 @@

    Search

    diff --git a/doc/html/index.html b/doc/html/index.html index 456b4d60d..fedeb01b5 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,17 +1,16 @@ - - + - + Eggdrop, an open source IRC bot — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -42,6 +41,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -94,10 +94,10 @@

    Search

    -

    Eggdrop, an open source IRC bot¶

    +

    Eggdrop, an open source IRC bot¶

    Eggdrop is a free, open source software program built to assist in managing an IRC channel. It is the world’s oldest actively-maintained IRC bot and was designed to be easily used and expanded on via it’s ability to run Tcl scripts. Eggdrop can join IRC channels and perorm automated tasks such as protecting the channel from abuse, assisting users obtain their op/voice status, provide information and greetings, host games, etc.

    -

    Some things you can do with Eggdrop¶

    +

    Some things you can do with Eggdrop¶

    Eggdrop has a large number of features, such as:

    -

    How to install Eggdrop¶

    +

    How to install Eggdrop¶

    -

    Installation Pre-requisites¶

    +

    Installation Pre-requisites¶

    Eggdrop requires Tcl (and its development header files) to be present on the system it is compiled on. It is also strongly encouraged to install openssl (and its development header files) to enable TLS-protected network communication.

    -

    Installation¶

    +

    Installation¶

    A guide to quickly installing Eggdrop can be found here.

    -

    Where to find more help¶

    +

    Where to find more help¶

    The Eggheads development team can be found lurking on #eggdrop on the Libera network (irc.libera.chat).

    Installing Eggdrop

    @@ -175,6 +175,13 @@

    Where to find more help
  • The Party Line
  • +
  • Eggdrop Autoscripts +
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • diff --git a/doc/html/install/install.html b/doc/html/install/install.html index ced86fd5e..2455a4844 100644 --- a/doc/html/install/install.html +++ b/doc/html/install/install.html @@ -1,17 +1,16 @@ - - + - + Installing Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -50,6 +49,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -102,14 +102,14 @@

    Search

    -

    Installing Eggdrop¶

    +

    Installing Eggdrop¶

    This is the quick install guide; if you have had little or no experience with UNIX or Eggdrop, READ THE README FILE NOW! This file is best for experienced users.

    For more information on compiling Eggdrop, see the Compile Guide in doc/COMPILE-GUIDE (and of course, the README FILE).

    -

    Quick Startup¶

    +

    Quick Startup¶

    Eggdrop uses the GNU autoconfigure scripts to make things easier.

    1. @@ -220,7 +220,7 @@

      Quick Startup -

      Cygwin Requirements (Windows)¶

      +

      Cygwin Requirements (Windows)¶

      Eggdrop requires the following packages to be added from the Cygwin installation tool prior to compiling:

      Interpreters: tcl, tcl-devel
      @@ -231,7 +231,7 @@ 

      Cygwin Requirements (Windows) -

      Modules¶

      +

      Modules¶

      Modules are small pieces of code that can either be compiled into the binary or can be compiled separately into a file. This allows for a much smaller binary.

      @@ -249,7 +249,7 @@

      Modules

      diff --git a/doc/html/install/readme.html b/doc/html/install/readme.html index 4f5cfe083..c1d48b064 100644 --- a/doc/html/install/readme.html +++ b/doc/html/install/readme.html @@ -1,17 +1,16 @@ - - + - + README — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -57,6 +56,7 @@

      Table of Contents

    2. Eggdrop Features
    3. Eggdrop Core Settings
    4. The Party Line
    5. +
    6. Eggdrop Autoscripts
    7. Users and Flags
    8. Bans, Invites, and Exempts
    9. Botnet Sharing and Linking
    10. @@ -109,13 +109,13 @@

      Search

      -

      README¶

      +

      README¶

      Please, at least SKIM this document before asking questions. In fact, READ IT if you’ve never successfully set up an Eggdrop bot before.

      -

      Notice¶

      +

      Notice¶

      Make SURE that you select your +n (owner) users wisely. They have 100% access to your bot and account. ONLY GIVE THIS POWER TO SOMEONE YOU @@ -123,7 +123,7 @@

      Notice

      -

      What is Eggdrop?¶

      +

      What is Eggdrop?¶

      Eggdrop is the world’s most popular Internet Relay Chat (IRC) bot; it is freely distributable under the GNU General Public License (GPL). Eggdrop @@ -160,16 +160,16 @@

      What is Eggdrop? -

      How to Get Eggdrop¶

      +

      How to Get Eggdrop¶

      There are two official methods to download Eggdrop source code. Alternately, Eggdrop also comes as a docker image.

      -

      FTP¶

      +

      FTP¶

      -

      The latest Eggdrop stable source code is always located at https://geteggdrop.com. You can also download the current stable, previous stable, and development snapshot via FTP at ftp.eggheads.org/pub/Eggdrop/source

      +

      The latest Eggdrop stable source code is always located at https://geteggdrop.com. You can also download the current stable, previous stable, and development snapshot via FTP at ftp://ftp.eggheads.org/pub/eggdrop/source

      -

      Git Development Snapshot¶

      +

      Git Development Snapshot¶

      Eggdrop development has moved from a CVS-based version control system to git. If you are interested in trying out the VERY LATEST updates to @@ -190,7 +190,7 @@

      Git Development Snapshot -

      Docker¶

      +

      Docker¶

      You can pull the official Eggdrop Docker image via:

      docker pull eggdrop:latest
      @@ -201,26 +201,26 @@ 

      Docker

      -

      System Pre-Requisites¶

      +

      System Pre-Requisites¶

      Before you can compile Eggdrop, Tcl must be installed on your system. Many systems have Tcl installed on them by default (you can check by trying the command “tclshâ€; if you are given a ‘%’ for a prompt, it is, and you can type ‘exit’ to exit the Tcl shell. However, Eggdrop also requires the Tcl development header files to be installed. They can often be installed via an OS package manager, usually called something similar to ‘tcl-dev’ for the package name. You can also download Tcl source from https://www.tcl.tk/software/tcltk/download.html.

      It is also strongly recommended to install openssl (and its development headers) in order to enable SSL/TLS protection of network data. The header files are often called something similar to ‘libssl-dev’.

      -

      Quick Startup¶

      +

      Quick Startup¶

      Please see the Install file after you finish reading this file.

      -

      Upgrading¶

      +

      Upgrading¶

      The upgrade process for Eggdrop is very simple, simply download the new source code and repeat the compile process. You will want to read the NEWS for any new configuration file settings you want to add. Please see Upgrading for full details.

      -

      Command Line¶

      +

      Command Line¶

      Eggdrop has some command line options - not many, because most things should be defined through the config file. However, sometimes you may @@ -251,7 +251,7 @@

      Command Line -

      Auto-starting Eggdrop¶

      +

      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 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.

      To auto-generate a systemd job, from the Eggdrop install directory, simply run:

      @@ -270,7 +270,7 @@

      Auto-starting Eggdrop

      -

      Documentation¶

      +

      Documentation¶

      We’re trying to keep the documentation up to date. If you feel that anything is missing here or that anything should be added, etc, please @@ -279,7 +279,7 @@

      Documentation -

      Obtaining Help¶

      +

      Obtaining Help¶

      You can obtain help with Eggdrop in the following IRC channels:

      @@ -305,7 +305,7 @@

      Obtaining Help

      diff --git a/doc/html/install/upgrading.html b/doc/html/install/upgrading.html index 165962f46..97559ee4f 100644 --- a/doc/html/install/upgrading.html +++ b/doc/html/install/upgrading.html @@ -1,17 +1,16 @@ - - + - + Upgrading Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -49,6 +48,7 @@

      Table of Contents

    11. Eggdrop Features
    12. Eggdrop Core Settings
    13. The Party Line
    14. +
    15. Eggdrop Autoscripts
    16. Users and Flags
    17. Bans, Invites, and Exempts
    18. Botnet Sharing and Linking
    19. @@ -101,13 +101,13 @@

      Search

      -

      Upgrading Eggdrop¶

      +

      Upgrading Eggdrop¶

      It is easy to upgrade Eggdrop to a new version! To have a full picture of the changes made since your last upgrade, we recommend reading the NEWS file. Upgrades from the 1.6 and 1.8 lines of Eggdrop should take place with little to no issues. The config file, user files, and channel files can all be reused.

      For support, feel free to visit us on Libera #eggdrop.

      -

      How to Upgrade¶

      +

      How to Upgrade¶

      To upgrade to a newer version of Eggdrop, first backup your .config file, .user file, and .chan file. While they are saved and should not be overwritten by the upgrade process, it never hurts to make anothere copy :)

      Next, view the NEWS file to see what changes have been made, paying particular attention to the config file section to see what new/different commands have been added. Update your config file appropriately.

      @@ -115,10 +115,10 @@

      How to Upgrade -

      Must-read changes for Eggdrop v1.9¶

      +

      Must-read changes for Eggdrop v1.9¶

      These are NOT all the changes or new settings; rather just the “killer†changes that may directly affect Eggdrop’s previous performance without modification.

      -

      Config file changes¶

      +

      Config file changes¶

      To migrate from a 1.8 to a 1.9 Eggdrop, some changes are suggested to be made in your configuration file:

      • Eggdrop has deprecated the blowfish module for password hashing in favor of the PBKDF2 module. This is a BIG change which, if done carelessly, has the potential to render stored passwords useless. Please see doc/PBKDF2 for information on how to properly migrate your userfiles and passwords to the new module.

      • @@ -138,23 +138,23 @@

        Config file changes -

        Modules¶

        +

        Modules¶

        While most 3rd party modules that worked on Eggdrop v1.6/v1.8 should still work with Eggdrop v1.9, many of them contain a version check that only allows them to run on 1.6.x bots. We have removed the version check from some of the more popular modules provide them at ftp://eggheads.org/pub/eggdrop/modules/1.9/

      -

      Scripts¶

      +

      Scripts¶

      All 3rd party Tcl scripts that work with Eggdrop v1.6/v1.8 should fully work with Eggdrop v1.9.

      -

      Botnet¶

      +

      Botnet¶

      In Eggdrop v1.8, Eggdrop bots would automatically attempt to upgrade any botnet link to an SSL/TLS connection. In v1.9, the user is required to explicitly request an SSL/TLS connection by prefixing the port with a ‘+’. If you wish your botnet to take advantage of encryption, use the .chaddr command to update your ports to start with a ‘+’.

      -

      Tcl Commands¶

      +

      Tcl Commands¶

      A lot of backwards-compatible additions and changes have been made to Tcl commands. Please look at doc/tcl-commands.doc to see them.

      -

      Documentation¶

      +

      Documentation¶

      Documentation has been updated to reflect new and removed commands and variables.

      @@ -186,9 +186,9 @@

      Documentation

      diff --git a/doc/html/modules/assoc.html b/doc/html/modules/assoc.html index e00b9a19d..4ebbdb2ef 100644 --- a/doc/html/modules/assoc.html +++ b/doc/html/modules/assoc.html @@ -102,7 +102,7 @@

      Search

      loadmodule assoc
       
      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

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

      Search

      loadmodule blowfish
       
      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

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

      Search

      }

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/compress.html b/doc/html/modules/compress.html index f73333233..f720e6883 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/console.html b/doc/html/modules/console.html index fea12a5fd..e4128e02e 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/ctcp.html b/doc/html/modules/ctcp.html index 1f1926884..d41fe637d 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/dns.html b/doc/html/modules/dns.html index 6450379bc..a46cf62b9 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/filesys.html b/doc/html/modules/filesys.html index 9574e8bcc..715609cf0 100644 --- a/doc/html/modules/filesys.html +++ b/doc/html/modules/filesys.html @@ -332,7 +332,7 @@

    .filesys moduleSearch

    for potential ways to implement this setting. -

    Copyright (C) 2019 - 2023 Eggheads Development Team

    +

    Copyright (C) 2019 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/included.html b/doc/html/modules/included.html index 4af3d9154..2c4be443c 100644 --- a/doc/html/modules/included.html +++ b/doc/html/modules/included.html @@ -1,17 +1,16 @@ - - + - + Modules included with Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -118,12 +119,20 @@

    Search

    -

    Modules included with Eggdrop¶

    +

    Modules included with Eggdrop¶

    diff --git a/doc/html/modules/index.html b/doc/html/modules/index.html index 2fa12be11..12b535244 100644 --- a/doc/html/modules/index.html +++ b/doc/html/modules/index.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Module Information — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -104,20 +104,20 @@

    Search

    Eggdrop Module Information Last revised: Jul 25, 2016

    -

    Eggdrop Module Information¶

    +

    Eggdrop Module Information¶

    -

    What are modules?¶

    +

    What are modules?¶

    Modules are independent portions of code that are loaded separately from the main core code of Eggdrop. This allows users to only implement the features they desire without adding the extra overhead or “bloat†of those they don’t, or even write their own module to add an enhancement not currently implemented by the Eggdrop development team. For example, the transfer module provides the ability to transfer files to and from the Eggdrop, and the ident module provides the ability to run an ident server to answer ident requests.

    -

    How to install a module¶

    +

    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. -
    4. Run ./configure (from eggdrop1.9.x/).

    5. +
    6. Run ./configure (from eggdrop-1.9.5/).

    7. Type ‘make config’ or ‘make iconfig’.

    8. Type ‘make’.

    9. Copy the compiled module file (modulename.so) into your bot’s @@ -130,12 +130,12 @@

      How to install a moduleTo view your currently loaded modules, type ‘.module’.

    -

    Can I compile Eggdrop without dynamic modules? (Static compile)¶

    +

    Can I compile Eggdrop without dynamic modules? (Static compile)¶

    Yes, you can. If the configure script detects that your system CAN’T run modules, it will setup ‘make’ to link the modules in statically for you. You can choose this option yourself by using ‘make static’. You can also try to compile dynamic modules on a static-only system by using ‘make eggdrop’.

    -

    Do I still need to ‘loadmodule’ modules?¶

    +

    Do I still need to ‘loadmodule’ modules?¶

    YES, when you compile statically, all the modules are linked into the main executable. HOWEVER, they are not enabled until you use loadmodule to enable them, hence you get nearly the same functionality with static modules as with dynamic modules.

    -

    Copyright (C) 1999 - 2023 Eggheads Development Team

    +

    Copyright (C) 1999 - 2024 Eggheads Development Team

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

    Do I still need to ‘loadmodule’ modules?

    diff --git a/doc/html/modules/internals.html b/doc/html/modules/internals.html index 3cbe25beb..c94ad6489 100644 --- a/doc/html/modules/internals.html +++ b/doc/html/modules/internals.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Bind Internals — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -107,13 +107,13 @@

    Search

    -

    Eggdrop Bind Internals¶

    +

    Eggdrop Bind Internals¶

    This document is intended for C developers who want to understand how Eggdrop’s Tcl binds or C binds work.

    For documentation purposes the “dcc†bind type is used as an example.

    It already exists and is suitable to illustrate the details of bind handling in Eggdrop.

    Note: All code snippets are altered for brevity and simplicity, see original source code for the full and current versions.

    -

    Bind Table Creation¶

    +

    Bind Table Creation¶

    The bind table is added by calling, either at module initialization or startup:

    /* Global symbol, available to other C files with
      * extern p_tcl_bind_list H_dcc;
    @@ -133,7 +133,7 @@ 

    Bind Table CreationH_dcc can be exported from core and imported into modules as any other variable or function. That should be explained in a separate document.

    -

    Stackable Binds: HT_STACKABLE¶

    +

    Stackable Binds: HT_STACKABLE¶

    HT_STACKABLE means that multiple binds can exist for the same mask.

    bind dcc - test proc1; # not stackable
     bind dcc - test proc2; # overwrites the first one, only proc2 will be called
    @@ -142,7 +142,7 @@ 

    Stackable Binds: HT_STACKABLETriggering any Bind section for details.

    -

    Tcl Binding¶

    +

    Tcl Binding¶

    After the bind table is created with add_bind_table, Tcl procs can already be registered to this bind by calling:

    bind dcc -|- test myproc
     proc myproc {args} {
    @@ -160,7 +160,7 @@ 

    Tcl Binding -

    Triggering the Bind¶

    +

    Triggering the Bind¶

    To trigger the bind and call it with the desired arguments, a function is created.

    int check_tcl_dcc(const char *cmd, int idx, const char *args) {
       struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 };
    @@ -189,7 +189,7 @@ 

    Triggering the Bindcheck_tcl_dcc can be found in the DCC parsing in src/dcc.c.

    -

    Triggering any Bind¶

    +

    Triggering any Bind¶

    check_tcl_bind is used by all binds and does the following:

    /* Generic function to call one/all matching binds
      * @param[in] tcl_bind_list_t *tl      Bind table (e.g. H_dcc)
    @@ -231,7 +231,7 @@ 

    Triggering any BindHT_STACKABLE AND check_tcl_bind must be called with BIND_STACKABLE.

    -

    C Binding¶

    +

    C Binding¶

    To create a C function that is called by the bind, Eggdrop provides the add_builtins function.

    /* Add a list of C function callbacks to a bind
      * @param[in] tcl_bind_list_t *  the bind type (e.g. H_dcc)
    @@ -266,7 +266,7 @@ 

    C Binding -

    C Handler¶

    +

    C Handler¶

    The example handler for DCC looks as follows:

    /* Typical Tcl_Command arguments, just like e.g. tcl_putdcc is a Tcl/C command for [putdcc] */
     static int builtin_dcc (ClientData cd, Tcl_Interp *irp, int argc, char *argv[]) {
    @@ -319,7 +319,7 @@ 

    C Handler -

    Summary¶

    +

    Summary¶

    In summary, this is how the dcc bind is called:

    diff --git a/doc/html/modules/irc.html b/doc/html/modules/irc.html index 868377b61..7960f9dd2 100644 --- a/doc/html/modules/irc.html +++ b/doc/html/modules/irc.html @@ -255,7 +255,7 @@

    Search

    set this to 0.
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index a52851467..0bfefacd8 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -1,17 +1,16 @@ - - + - + Assoc Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Assoc Module¶

    +

    Assoc Module¶

    This module provides assoc support, i.e. naming channels on the botnet.

    This module requires: none

    Put this line into your Eggdrop configuration file to load the assoc @@ -127,7 +128,7 @@

    Search

    loadmodule assoc
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -156,9 +157,9 @@

    Search

    diff --git a/doc/html/modules/mod/blowfish.html b/doc/html/modules/mod/blowfish.html index cad1a8540..40372bb17 100644 --- a/doc/html/modules/mod/blowfish.html +++ b/doc/html/modules/mod/blowfish.html @@ -1,17 +1,16 @@ - - + - + Blowfish Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 28, 2003

    -

    Blowfish Module¶

    +

    Blowfish Module¶

    Eggdrop can encrypt your userfile, so users can have secure passwords. Please note that when you change your encryption method later (i.e. using @@ -131,7 +132,7 @@

    Search

    loadmodule blowfish
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -161,9 +162,9 @@

    Search

    diff --git a/doc/html/modules/mod/channels.html b/doc/html/modules/mod/channels.html index 4290b2e0d..fdf0cfdcb 100644 --- a/doc/html/modules/mod/channels.html +++ b/doc/html/modules/mod/channels.html @@ -1,17 +1,16 @@ - - + - + Channels Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: October 25, 2010

    -

    Channels Module¶

    +

    Channels Module¶

    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.

    @@ -131,8 +132,7 @@

    Search

    There are also some variables you can set in your config file:

    -
    -
    +
    set chanfile “LamestBot.chanâ€

    Enter here the filename where dynamic channel settings are stored.

    set force-expire 0

    Set this setting to 1 if you want your bot to expire bans/exempts/invites @@ -148,11 +148,25 @@

    Search

    Make sure your server supports +ps mixing or you may get endless mode floods.

    -
    channel add #channel { SETTINGS }

    Add each static channel you want your bot to sit in using this command. -There are many different possible settings you can insert into this -command, which are explained below.

    -
    -
    chanmode +/-<modes>

    This setting makes the bot enforce channel modes. It will always add +

    channel add #channel { SETTINGS }

    This command adds a static channel to your bot (it cannot be removed via the partyline- we recommend using the .+chan command on the partyline instead). This command will add the channel preconfigured with the specified settings. A full list of settings is defined in Channel Settings.

    +
    +
    +
    +
    +

    Channel Settings¶

    +

    There are two types of channel settings: value-based settings (where you configure a setting with a number or string), and enable/disable-based settings (where you turn a setting on or off). These settings can be configured via Tcl using the ‘channel set’ command:

    +
    +
    +
    channel set <chan> <setting>

    This command modifies a specific channel setting for a channel. There are many different options for channels which you can define. +Some settings are enabled or disabled by a plus or minus in front of them, and others directly take text or integer values.

    +
    +
    +
    +
    +

    Value-based Channel Settings¶

    +
    +
    +
    chanmode +/-<modes>

    This setting makes the bot enforce channel modes. It will always enforce the +<modes> and remove the -<modes> modes.

    idle-kick 0

    This setting will make the bot check every minute for idle users. Set @@ -337,14 +351,15 @@

    Search

    - -
    channel set <chan> +/-<setting>

    There are many different options for channels which you can define. -They can be enabled or disabled by a plus or minus in front of them.

    -

    A complete list of all available channel settings:

    +
    +
    +
    +

    Enable/Disable Channel Settings¶

    +

    These settings should be preceded by a + or - to enable or disable the setting, respctively.

    enforcebans

    When a ban is set, kick people who are on the channel and match -the ban?

    +the ban

    dynamicbans

    Only activate bans on the channel when necessary? This keeps the channel’s ban list from getting excessively long. The bot still @@ -372,21 +387,21 @@

    Search

    userinvites

    Allow invites to be made by users directly? If turned off, the bot will require all invites to be made through the bot’s console.

    -
    autoop

    Op users with the +o flag as soon as they join the channel? +

    autoop

    Op users with the +o flag as soon as they join the channel This is insecure and not recommended.

    autohalfop

    Halfop users with the +l flag as soon as they join the channel? This is insecure and not recommended.

    -
    bitch

    Only let users with the +o flag have op on the channel?

    +
    bitch

    Only let users with the +o flag have op on the channel

    -
    greet

    Say a user’s info line when they join the channel?

    +
    greet

    Say a user’s info line when they join the channel

    protectops

    Re-op a user with the +o flag if they get deopped?

    -
    protecthalfops

    Re-halfop a user with the +l flag if they get dehalfopped?

    +
    protecthalfops

    Re-halfop a user with the +l flag if they get dehalfopped

    -
    protectfriends

    Re-op a user with the +f flag if they get deopped?

    +
    protectfriends

    Re-op a user with the +f flag if they get deopped

    statuslog

    Log the channel status line every 5 minutes? This shows the bot’s status on the channel (op, voice, etc.), the channel’s modes, and @@ -426,14 +441,18 @@

    Search

    fighting with services such as ChanServ, or from kicking IRCops when setting channel modes without having ops.

    -
    static

    Allow only permanent owners to remove the channel?

    +
    static

    Allow only permanent owners to remove the channel

    - - -

    The following settings are used as default values when you .+chan #chan or .tcl -channel add #chan. Look in the section above for explanation of every option.

    +
    +
    +
    +

    Default Channel Values¶

    +
    +
    +

    The following settings are used as default values when you .+chan #chan or .tcl +channel add #chan. You can modify these default values by adding the below values to your config fil. Look in the Channel Settings for an explanation of each option.

    set default-flood-chan 15:60

    set default-flood-deop 3:10

    @@ -484,8 +503,9 @@

    Search

    }

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    +
    @@ -514,9 +534,9 @@

    Search

    diff --git a/doc/html/modules/mod/compress.html b/doc/html/modules/mod/compress.html index 59c3e79ae..5f3e14696 100644 --- a/doc/html/modules/mod/compress.html +++ b/doc/html/modules/mod/compress.html @@ -1,17 +1,16 @@ - - + - + Compress Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: May 27, 2004

    -

    Compress Module¶

    +

    Compress Module¶

    This module provides support for file compression. It can be used to compress files via Tcl or to transfer the userfile compressed during the share process, saving bandwidth.

    @@ -140,7 +141,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -169,9 +170,9 @@

    Search

    diff --git a/doc/html/modules/mod/console.html b/doc/html/modules/mod/console.html index e7c98a632..6de9fce47 100644 --- a/doc/html/modules/mod/console.html +++ b/doc/html/modules/mod/console.html @@ -1,17 +1,16 @@ - - + - + Console Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Console Module¶

    +

    Console Module¶

    This module provides storage of console settings when you exit the bot or type .store on the partyline.

    This module requires: none

    @@ -142,7 +143,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -171,9 +172,9 @@

    Search

    diff --git a/doc/html/modules/mod/ctcp.html b/doc/html/modules/mod/ctcp.html index 577039b4d..915b4acbe 100644 --- a/doc/html/modules/mod/ctcp.html +++ b/doc/html/modules/mod/ctcp.html @@ -1,17 +1,16 @@ - - + - + CTCP Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: February 12, 2002

    -

    CTCP Module¶

    +

    CTCP Module¶

    This module provides the normal ctcp replies that you would expect. Without it loaded, CTCP CHAT will not work.

    This module requires: server

    @@ -154,7 +155,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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -183,9 +184,9 @@

    Search

    diff --git a/doc/html/modules/mod/dns.html b/doc/html/modules/mod/dns.html index 158605606..cfffaf7a3 100644 --- a/doc/html/modules/mod/dns.html +++ b/doc/html/modules/mod/dns.html @@ -1,17 +1,16 @@ - - + - + DNS Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: September 26, 2010

    -

    DNS Module¶

    +

    DNS Module¶

    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.

    @@ -155,7 +156,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -184,9 +185,9 @@

    Search

    diff --git a/doc/html/modules/mod/filesys.html b/doc/html/modules/mod/filesys.html index b1e78eb08..aeabce403 100644 --- a/doc/html/modules/mod/filesys.html +++ b/doc/html/modules/mod/filesys.html @@ -1,17 +1,16 @@ - - + - + Filesys Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,12 +120,12 @@

    Search

    Last revised: Dec 30, 2017

    -

    Filesys Module¶

    +

    Filesys Module¶

    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.

    This module requires: transfer

    -

    Config file setup¶

    +

    Config file setup¶

    Put this line into your Eggdrop configuration file to load the filesys module:

    loadmodule filesys
    @@ -159,9 +160,9 @@ 

    Config file setup -

    Partyline usage¶

    +

    Partyline usage¶

    -

    .files¶

    +

    .files¶

    Moves you into the file transfer sub-system, if it has been enabled on this bot. From there you can browse through the files online and use dcc file @@ -169,27 +170,27 @@

    .files

    -

    .cancel <file> [file] …¶

    +

    .cancel <file> [file] …¶

    Tells the bot to stop sending a file that is pending (either queued, waiting, or in the process of being transferred).

    -

    .cd <directory>¶

    +

    .cd <directory>¶

    Changes your current directory if possible. this works exactly like the unix command.

    -

    .cp <source> <dst>¶

    +

    .cp <source> <dst>¶

    Copies a file or group of files from one place to another.

    -

    .desc <file> <description>¶

    +

    .desc <file> <description>¶

    Changes the description for a file. if you are a master or file janitor, you can change the description for any file. @@ -201,20 +202,20 @@

    .desc <file> <description> -

    .filestats <user> [clear]¶

    +

    .filestats <user> [clear]¶

    Reports on the users upload & download statistics. Optional argument ‘clear’ clears a users upload and download statistics.

    -

    .stats¶

    +

    .stats¶

    Clears a users upload & download statistics.

    -

    .get <filename> [nickname]¶

    +

    .get <filename> [nickname]¶

    Sends you the file(s) requested, over IRC. you should get a DCC SEND notice on IRC, and have your client accept it. if @@ -231,14 +232,14 @@

    .get <filename> [nickname] -

    .hide <file> [files] …¶

    +

    .hide <file> [files] …¶

    Marks a file as hidden, so that normal users can’t see it. Only a master or file janitor using %b’lsa’%b can see hidden files.

    -

    .ln <bot:filepath> <localfile>¶

    +

    .ln <bot:filepath> <localfile>¶

    Creates a link to a file on another bot. The filepath has to be complete, like ‘/gifs/uglyman.gif’. If the bot is not @@ -249,7 +250,7 @@

    .ln <bot:filepath> <localfile> -

    .ls [filemask]¶

    +

    .ls [filemask]¶

    Displays the files in the current directory. Subdirectories are shown with “<DIR>†next to them, and other files will display @@ -260,7 +261,7 @@

    .ls [filemask] -

    .mkdir <dir> [flags [channel]]¶

    +

    .mkdir <dir> [flags [channel]]¶

    Creates a subdirectory from this one, with the given name. If flags are specified, then those flags are required to enter or @@ -270,14 +271,14 @@

    .mkdir <dir> [flags [channel]] -

    .mv <source> <dest>¶

    +

    .mv <source> <dest>¶

    Moves a file or group of files from one place to another (it can also be used to rename files).

    -

    .pending¶

    +

    .pending¶

    Gives you a listing of every file you’ve requested which is still waiting, queued, or in the process of transferring. @@ -287,31 +288,31 @@

    .pending -

    .pwd¶

    +

    .pwd¶

    Tells you what your current directory is.

    -

    .quit¶

    +

    .quit¶

    Exits the file system.

    -

    rm <file> [files] …¶

    +

    rm <file> [files] …¶

    Erase a file for good.

    -

    .rmdir <dir>¶

    +

    .rmdir <dir>¶

    Removes an existing directory, if there are no files in it.

    -

    .share <file> [files] …¶

    +

    .share <file> [files] …¶

    Marks a file as shared. This means that other bots can get the file remotely for users on their file systems. By default, @@ -319,7 +320,7 @@

    .share <file> [files] … -

    .optimize¶

    +

    .optimize¶

    Cleans up the current directory’s database. If you have a large directory with many files you may want to use this command if @@ -328,19 +329,19 @@

    .optimize -

    .unhide¶

    +

    .unhide¶

    Makes a file be not hidden any more.

    -

    .unshare <file> [file] …¶

    +

    .unshare <file> [file] …¶

    Removes the shared tag from a file.

    -

    .filesys module¶

    +

    .filesys module¶

    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.

    @@ -350,7 +351,7 @@

    .filesys module

    diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 854645660..249d7ecb5 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -1,17 +1,16 @@ - - + - + Ident Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: June 27, 2019

    -

    Ident Module¶

    +

    Ident Module¶

    This module adds Eggdrop support for the externally-provided oident service, or alternatively the ability for Eggdrop to act as its own ident daemon.

    @@ -193,7 +194,7 @@

    Search

    -

    Copyright (C) 2019 - 2023 Eggheads Development Team

    +

    Copyright (C) 2019 - 2024 Eggheads Development Team

    @@ -222,9 +223,9 @@

    Search

    diff --git a/doc/html/modules/mod/irc.html b/doc/html/modules/mod/irc.html index 7900995d7..3fa36c056 100644 --- a/doc/html/modules/mod/irc.html +++ b/doc/html/modules/mod/irc.html @@ -1,17 +1,16 @@ - - + - + IRC Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: August 21, 2004

    -

    IRC Module¶

    +

    IRC Module¶

    This module controls the bots interaction on IRC. It allows the bot to join channels, etc. You have to load this if you want your bot to come on irc.

    @@ -263,7 +264,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -292,9 +293,9 @@

    Search

    diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index 55227968f..bbdea5dbe 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -1,17 +1,16 @@ - - + - + Notes Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Notes Module¶

    +

    Notes Module¶

    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.

    @@ -150,7 +151,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -179,9 +180,9 @@

    Search

    diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index 7ca50bc9d..7f6f48ac4 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -1,19 +1,18 @@ - - + - + PBKDF2 Module — Eggdrop 1.9.5 documentation - - - - - + + + + + - + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: October 28, 2020

    -

    PBKDF2 Module¶

    +

    PBKDF2 Module¶

    Eggdrop encrypts its userfile, so users can have secure passwords. Eggdrop will not start without an encryption module.

    @@ -148,7 +149,7 @@

    Search

    This module requires: none

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -168,7 +169,7 @@

    Search

    @@ -178,9 +179,9 @@

    Search

    diff --git a/doc/html/modules/mod/python.html b/doc/html/modules/mod/python.html new file mode 100644 index 000000000..66dbab2ea --- /dev/null +++ b/doc/html/modules/mod/python.html @@ -0,0 +1,274 @@ + + + + + + + + Python Module — Eggdrop 1.9.5 documentation + + + + + + + + + + + +
    +
    + +
    + +
    +
    +
    + +

    Last revised: November 03, 2023

    +
    +

    Python Module¶

    +

    This module adds a Python interpreter to Eggdrop, allowing you to run Python scripts.

    +
    +

    Loading Python¶

    +

    Put this line into your Eggdrop configuration file to load the python module:

    +
    loadmodule python
    +
    +
    +

    To load a python script from your config file, place the .py file in the scripts/ folder and add the following line to your config:

    +
    pysource scripts/myscript.py
    +
    +
    +
    +
    +

    Partyline Commands¶

    +
    +

    python <expression>¶

    +

    You can run a python command from the partyline with the .python command, such as:

    +
    .python 1 + 1
    +Python: 2
    +.python from eggdrop.tcl import putmsg; putmsg('#chan', 'Hello world!')
    +Python: None
    +
    +
    +
    +
    +

    .binds python¶

    +

    The python module extends the core .binds partyline command by adding a python mask. This command will list all binds for python scripts.

    +
    +
    +
    +

    Tcl Commands¶

    +
    +

    pysource <path/to/file>¶

    +

    The pysource command is analgous to the Tcl source command, except that it loads a Python script into Eggdrop instead of a Tcl script.

    +
    +
    +
    +

    Eggdrop Python Commands¶

    +

    The Python module is built to use the existing core Tcl commands integrated into Eggdrop via the eggdrop.tcl module. To call an existing Tcl command from Python, you can either load the entire catalog by running import eggdrop.tcl, or be more specific by from eggdrop.tcl import putserv, putlog, chanlist, etc.

    +

    Arguments to the Tcl functions are automatically converted as follows:

    +
      +
    • None is converted to an empty Tcl object (the empty string, "")

    • +
    • List and Tuple is converted to a Tcl list

    • +
    • Dict is converted to a Tcl dictionary

    • +
    • Everything else is converted to a string using the str() method

    • +
    +

    Return values from Tcl functions must be manually converted:

    +
      +
    • "" the empty string is automatically converted to None

    • +
    • everything else is returned as string

    • +
    • Tcl list as string can be converted to a Python List using parse_tcl_list

    • +
    • Tcl dictionary as string can be converted to a Python Dict using parse_tcl_list

    • +
    +

    Additionally, a few extra python commands have been created for use without these conversions:

    +
    +

    bind <arguments>¶

    +

    The python version of the bind command is used to create a bind that triggers a python function. The python bind takes the same arguments as the Tcl binds, but here each argument is passed individually. For example, a bind that would look like bind pub * !foo myproc in Tcl is written as bind("pub", "*", "!foo", myproc). For more information on Eggsrop bind argument syntax please see Bind Types. The eggdrop.tcl.bind command should not be used as it will attempt to call a Tcl proc.

    +
    +
    +

    parse_tcl_list <string>¶

    +

    When a python script calls a Tcl command that returns a list via the eggdrop.tcl module, the return value will be a Tcl-formatted list- also simply known as a string. The parse_tcl_list command will convert the Tcl-formatted list into a Python list, which can then freely be used within the Python script.

    +
    +
    +

    parse_tcl_dict <string>¶

    +

    When a python script calls a Tcl command that returns a dict via the eggdrop.tcl module, the return value will be a Tcl-formatted dict- also simply known as a string. The parse_tcl_dict command will c +onvert the Tcl-formatted dict into a Python list, which can then freely be used within the Python script.

    +
    +
    +
    +

    Config variables¶

    +

    There are also some variables you can set in your config file:

    +
    +
    +
    set allow-resync 0

    When two bots get disconnected, this setting allows them to create a +resync buffer which saves all changes done to the userfile during +the disconnect. When they reconnect, they will not have to transfer +the complete user file, but, instead, just send the resync buffer.

    +
    +
    +
    +
    +
    +

    Writing an Eggdrop Python script¶

    +

    This is how to write a python script for Eggdrop.

    +

    You can view examples of Python scripts in the exampleScripts folder included with this module.

    +
    +
    bestfriend.py¶

    This example script demonstrates how to use the parse_tcl_list() python command to convert a list returned by a Tcl command into a list that is usable by Python.

    +
    +
    greet.py¶

    This is a very basic script that demonstrates how a Python script with binds can be run by Eggdrop.

    +
    +
    imdb.py¶

    This script shows how to use an existing third-party module to extend a Python script, in this case retrieving information from imdb.com.

    +
    +
    listtls.py¶

    This script demonstrates how to use parse-tcl_list() and parse_tcl_dict() to convert a list of dicts provided by Tcl into something that is usuable by Python.

    +
    +
    urltitle.py¶

    This script shows how to use an existing third-party module to extend a Python script, in this case using an http parser to collect title information from a provided web page.

    +
    +
    +
    +

    Header section¶

    +

    An Eggdrop python script requires you to import X Y and Z, in this format.

    +
    +
    +

    Code Section¶

    +

    Normal python code works here. To run a command from the Eggdrop Tcl library, use this format.

    +

    Use this format all over.

    +
    +
    +
    +

    Writing a module for use with Eggdrop¶

    +

    This is how you import a module for use with an egg python script.

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    +
    + + + + + \ No newline at end of file diff --git a/doc/html/modules/mod/seen.html b/doc/html/modules/mod/seen.html index da92f2fa2..762b215de 100644 --- a/doc/html/modules/mod/seen.html +++ b/doc/html/modules/mod/seen.html @@ -1,27 +1,26 @@ - - + - + Seen Module — Eggdrop 1.9.5 documentation - - - - - + + + + + - +
    @@ -367,9 +368,9 @@

    Search

    diff --git a/doc/html/modules/mod/share.html b/doc/html/modules/mod/share.html index 1e672c235..33f66f6ad 100644 --- a/doc/html/modules/mod/share.html +++ b/doc/html/modules/mod/share.html @@ -1,17 +1,16 @@ - - + - + Share Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: November 27, 2003

    -

    Share Module¶

    +

    Share Module¶

    This module provides userfile sharing support between two directly linked bots.

    This module requires: transfer, channels

    @@ -159,7 +160,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -188,9 +189,9 @@

    Search

    diff --git a/doc/html/modules/mod/transfer.html b/doc/html/modules/mod/transfer.html index 69f1f688a..eef7fe318 100644 --- a/doc/html/modules/mod/transfer.html +++ b/doc/html/modules/mod/transfer.html @@ -1,17 +1,16 @@ - - + - + Transfer Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -117,9 +118,9 @@

    Search

    -

    Last revised: January 1, 2002

    +

    Last revised: November 29, 2023

    -

    Transfer Module¶

    +

    Transfer Module¶

    The transfer module provides DCC SEND/GET support and userfile transfer support for userfile sharing.

    This module requires: none

    @@ -138,12 +139,6 @@

    Search

    but admits that may be too small. 1024 is standard these days. Set this to 0 to use turbo-dcc (recommended).

    -
    set copy-to-tmp 1

    Enable this setting if you want to copy files to a temporary location -before sending or receiving them. This might be useful for file -stability, but if your directories are NFS mounted, it’s a pain. -Setting this to 1 is not advised for big files or if you’re low on -disk space.

    -
    set xfer-timeout 30

    Set here the time (in seconds) to wait before an inactive transfer times out.

    @@ -154,7 +149,7 @@

    Search

    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -183,9 +178,9 @@

    Search

    diff --git a/doc/html/modules/mod/twitch.html b/doc/html/modules/mod/twitch.html index c28643a25..ee2929846 100644 --- a/doc/html/modules/mod/twitch.html +++ b/doc/html/modules/mod/twitch.html @@ -1,17 +1,16 @@ - - + - + Twitch Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: April 20, 2020

    -

    Twitch Module¶

    +

    Twitch Module¶

    This module attempts to provide connectivity with the Twitch gaming platform. While Twitch provides an IRC gateway to connect with it’s streaming service, it does not claim to (and certainly does not) follow the IRC RFC in any meaningful way. The intent of this module is not to provide the full spectrum of management functions typically associated with Eggdrop; instead it focuses around the following key functions:

    • Logging of general and Twitch-specific events (raids, blocks, bit donations)

    • @@ -133,7 +134,7 @@

      Search

    and set net-type “Twitch†in your config file.

    -

    Limitations¶

    +

    Limitations¶

    There are a few things you should know about how Twitch provides service through the IRC gateway that affects how well Eggdrop can function: * Twitch does not broadcast JOINs or PARTs for channels over 1,000 users. This renders tracking users on a channel unreliable. * Twitch does not broadcast MODE changes for moderator status. This (mostly) renders tracking the status of users infeasible. (See Tcl below section for workaround) @@ -142,7 +143,7 @@

    Limitations -

    Tcl API¶

    +

    Tcl API¶

    That last section was a little bit of a downer, but don’t worry, we added a TON of functionality to the Tcl API. This module adds binds for the following Twitch events:

    • CLEARCHAT

    • @@ -155,13 +156,13 @@

      Tcl API -

      Partyline commands¶

      +

      Partyline commands¶

      This module adds the following commands to the partyline: * userstate - Lists current userstate on a channel * roomsstate - Lists current roomstate for a channel * twcmd - Issues a traditional Twitch web interface command to the Twitch server (/ban, /block, /host, etc)

      -

      Copyright (C) 2020 - 2023 Eggheads Development Team

      +

      Copyright (C) 2020 - 2024 Eggheads Development Team

    @@ -192,9 +193,9 @@

    Partyline commands
    diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index 971d5676d..c84f8e9ef 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -1,17 +1,16 @@ - - + - + Uptime Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: January 1, 2002

    -

    Uptime Module¶

    +

    Uptime Module¶

    This module reports uptime statistics to 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.

    @@ -135,7 +136,7 @@

    Search

    loadmodule uptime
     
    -

    Copyright (C) 2001 - 2023 Eggheads Development Team

    +

    Copyright (C) 2001 - 2024 Eggheads Development Team

    @@ -164,9 +165,9 @@

    Search

    diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index 53d098b1a..4c175976a 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -1,17 +1,16 @@ - - + - + Woobie Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -84,6 +84,7 @@

    Table of Contents

  • IRC Module
  • Notes Module
  • PBKDF2 Module
  • +
  • Python Module
  • Seen Module
  • Server Module
  • Share Module
  • @@ -119,7 +120,7 @@

    Search

    Last revised: December 31, 2001

    -

    Woobie Module¶

    +

    Woobie Module¶

    This is for demonstrative purposes only. If you are looking for starting point in writing modules, woobie is the right thing.

    This module requires: none

    @@ -128,7 +129,7 @@

    Search

    loadmodule woobie
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -157,9 +158,9 @@

    Search

    diff --git a/doc/html/modules/notes.html b/doc/html/modules/notes.html index d09c2e6ae..b30055d74 100644 --- a/doc/html/modules/notes.html +++ b/doc/html/modules/notes.html @@ -147,7 +147,7 @@

    Search

    any notes. -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/pbkdf2.html b/doc/html/modules/pbkdf2.html index 7cbf42856..a5222aa20 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

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

    Search

    loadmodule seen
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

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

    Search

    Eggdrop is 32. -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/share.html b/doc/html/modules/share.html index 593929171..f4d98cce5 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/transfer.html b/doc/html/modules/transfer.html index 325d7a271..6fbdcc0cd 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 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

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

    Partyline commandsSearch

    loadmodule uptime
     
    -

    Copyright (C) 2001 - 2023 Eggheads Development Team

    +

    Copyright (C) 2001 - 2024 Eggheads Development Team

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

    Search

    loadmodule woobie
     
    -

    Copyright (C) 2000 - 2023 Eggheads Development Team

    +

    Copyright (C) 2000 - 2024 Eggheads Development Team

    diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index 7789198fa..66b823642 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -1,17 +1,16 @@ - - + - + How to Write an Eggdrop Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -101,7 +101,7 @@

    Search

    -

    How to Write an Eggdrop Module¶

    +

    How to Write an Eggdrop Module¶

    Note: This is for a simple module of 1 source file.

      @@ -143,7 +143,7 @@

      Search

    -

    Module requirements¶

    +

    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.

    @@ -152,7 +152,7 @@

    Module requirements -

    MODULE_start¶

    +

    MODULE_start¶

    char *MODULE_start(Function *func_table)
     
     This function is called when the module is first loaded. There are
    @@ -189,7 +189,7 @@ 

    MODULE_start -

    MODULE_table¶

    +

    MODULE_table¶

    static Function *MODULE_table = {
            MODULE_start,
            MODULE_close,
    @@ -206,7 +206,7 @@ 

    MODULE_table -

    MODULE_close ()¶

    +

    MODULE_close ()¶

    static char *MODULE_close ()
     
     This is called when the module is unloaded. Apart from tidying any
    @@ -226,7 +226,7 @@ 

    MODULE_close () -

    MODULE_expmem¶

    +

    MODULE_expmem¶

    static int MODULE_expmem ()
     
     This should tally all memory you allocate/deallocate within the module
    @@ -236,7 +236,7 @@ 

    MODULE_expmem -

    MODULE_report¶

    +

    MODULE_report¶

    static void MODULE_report (int idx)
     
     This should provide a relatively short report of the module's status
    @@ -247,7 +247,7 @@ 

    MODULE_report -

    Additional functions¶

    +

    Additional functions¶

    void *nmalloc(int j);
     
     This allocates j bytes of memory.
    @@ -387,7 +387,7 @@ 

    Additional functions

    -

    What to do with a module?¶

    +

    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, find us in #eggdrop on Libera. Make sure you @@ -423,9 +423,9 @@

    What to do with a module?

    diff --git a/doc/html/objects.inv b/doc/html/objects.inv index e31c384a3..f7c8aaf3d 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 8eb843f1b..423788fbf 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -1,17 +1,16 @@ - - + Search — Eggdrop 1.9.5 documentation - - + + - - - + + + @@ -44,6 +43,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -147,9 +147,9 @@

    Search

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

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -97,7 +97,7 @@

    Search

    -

    Writing an Eggdrop Script¶

    +

    Writing an Eggdrop Script¶

    So you want to write an Eggdrop script, but you don’t really know where to begin. This file will give you a very basic idea about what Eggdrop scripting is like, using a very simple script that may help you get @@ -110,7 +110,7 @@

    Writing an Eggdrop Scriptcore Tcl language commands, especially the string- and list-related commands, as well as Eggdrop’s own library of custom Tcl commands, located in tcl-commands.doc

    +get familiar with the core Tcl language commands, especially the string- and list-related commands, as well as Eggdrop’s own library of custom Tcl commands, located in tcl-commands.doc

    If you have the .tcl command enabled, you can load a script by typing ‘.tcl source script/file.tcl’ to load it. Otherwise, add it to your config file like normal (examples to do so are at the bottom of the config file) and @@ -173,7 +173,7 @@

    Writing an Eggdrop Script
    bind join - * greet
     

    -

    This is a bind. This sets up an action that Eggdrop will react to. You can read all the binds that Eggdrop uses here. Generally, we like to place all binds towards the top of the script so that they are together and easy to find. Now, let’s look at documentation of the bind join together.

    +

    This is a bind. This sets up an action that Eggdrop will react to. You can read all the binds that Eggdrop uses here. Generally, we like to place all binds towards the top of the script so that they are together and easy to find. Now, let’s look at documentation of the bind join together.

    @@ -184,7 +184,7 @@

    Writing an Eggdrop Script

    - +

    bind JOIN

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

    Description: triggered by someone joining the channel. The mask in the bind is matched against “#channel nick!user@hostâ€
    and can contain wildcards.

    Description: triggered by someone joining the channel. The mask in the bind is matched against “#channel nick!user@host†and can contain wildcards.

    @@ -225,7 +225,7 @@

    Writing an Eggdrop Script
    diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index 124977a47..958dd374f 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -1,17 +1,16 @@ - - + - + Common First Steps — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -104,9 +104,9 @@

    Search

    -

    Common First Steps¶

    +

    Common First Steps¶

    -

    Log on to the partyline¶

    +

    Log on to the partyline¶

    Now that your bot is online, you’ll want to join the partyline to further use the bot. First, read what it tells you when you started it up:

    -

    Common first steps¶

    +

    Common first steps¶

    To learn more about any of these commands, type .help <command> on the partyline. It will provide you the syntax you need, as well as a short description of how to use the command.

    -

    Join a Channel¶

    +

    Join a Channel¶

    To tell the Eggdrop to join a channel, use:

    .+chan #channel
     
    -

    Add a User¶

    +

    Add a User¶

    To add a user to the bot, use:

    .+user <handle>
     
    -

    Add a Host to a User¶

    +

    Add a Host to a User¶

    The handle is the name that the bot uses to track a user. No matter what nickname on IRC a user uses, a single handle is used to track the user by their hostmask. To add a hostmask of a user to a handle, use:

    .+host <handle> <hostmask>
     
    @@ -151,7 +151,7 @@

    Add a Host to a Userwhere the hostmask is in the format of <nick>!<ident>@hostname.com . Wildcards can be used; common formats are *!*@hostname.com for static hosts, or *!ident@*.foo.com for dynamic hostnames.

    -

    Assign Permission Flags¶

    +

    Assign Permission Flags¶

    To assign an access level to a user, first read .help whois for a listing of possible access levels and their corresponding flags. Then, assign the desired flag to the user with:

    -

    Configure Channel Settings¶

    +

    Configure Channel Settings¶

    Finally, Eggdrop is often used to moderate and control channels. This is done via the .chanset command. To learn more about the (numerous!) settings that can be used to control a channel, read:

    .help chaninfo
     
    @@ -176,10 +176,10 @@

    Configure Channel Settings -

    Automatically restarting an Eggdrop¶

    +

    Automatically restarting an Eggdrop¶

    A common question asked by users is, how can I configure Eggdrop to automatically restart should it die, such as after a reboot? Historically, Eggdrop relied on the host’s crontab system to run a script (called botchk) every ten minutes to see if the eggdrop is running. If the eggdrop is not running, the script will restart the bot, with an optional email sent to the user informing them of the action. Newer systems come with systemd, which can provide better real-time monitoring of processes such as Eggdrop. You probably want to use systemd if your system has it.

    -

    Crontab Method (Old)¶

    +

    Crontab Method (Old)¶

    1. Enter the directory you installed your Eggdrop to. Most commonly, this is ~/eggdrop (also known as /home/<username>/eggdrop).

    2. Just humor us- run ./scripts/autobotchk without any arguments and read the options available to you. They’re listed there for a reason!

    3. @@ -201,7 +201,7 @@

      Crontab Method (Old)crontab -e to open the crontab file in your system’s default editor and remove the crontab line.

    -

    Systemd Method (Newer Systems)¶

    +

    Systemd Method (Newer Systems)¶

    1. Enter the directory you installed your Eggdrop to. Most commonly, this is ~/eggdrop (also known as /home/<username>/eggdrop).

    2. Install the systemd job for Eggdrop simply by running:

      @@ -235,7 +235,7 @@

      Systemd Method (Newer Systems) -

      Authenticating with NickServ¶

      +

      Authenticating with NickServ¶

      Many IRC features require you to authenticate with NickServ to use them. You can do this from your config file by searching for the line:

      #  putserv "PRIVMSG NickServ :identify <password>"
       
      @@ -243,7 +243,7 @@

      Authenticating with NickServ -

      Setting up SASL authentication¶

      +

      Setting up SASL authentication¶

      Simple Authentication and Security Layer (SASL) is becoming a prevalant method of authenticating with IRC services such as NickServ prior to your client finalizing a connection to the IRC server, eliminating the need to /msg NickServ to identify yourself. In other words, you can authenticate with NickServ and do things like receive a cloaked hostmask before your client ever appears on the IRC server. Eggdrop supports three methods of SASL authentication, set via the sasl-mechanism setting:

      • PLAIN: To use this method, set sasl-mechanism to 0. This method passes the username and password (set in the sasl-username and sasl-password config file settings) to the IRC server in plaintext. If you only connect to the IRC server using a connection protected by SSL/TLS this is a generally safe method of authentication; however you probably want to avoid this method if you connect to a server on a non-protected port as the exchange itself is not encrypted.

      • @@ -303,9 +303,9 @@

        Setting up SASL authentication

      diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html index 95b33b42a..89463216a 100644 --- a/doc/html/tutorials/module.html +++ b/doc/html/tutorials/module.html @@ -1,17 +1,16 @@ - - + - + Writing a Basic Eggdrop Module — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

      Table of Contents

    3. Eggdrop Features
    4. Eggdrop Core Settings
    5. The Party Line
    6. +
    7. Eggdrop Autoscripts
    8. Users and Flags
    9. Bans, Invites, and Exempts
    10. Botnet Sharing and Linking
    11. @@ -105,11 +105,11 @@

      Search

      -

      Writing a Basic Eggdrop Module¶

      +

      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¶

      +

      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
      @@ -130,7 +130,7 @@ 

      Module Header -

      Required Code¶

      +

      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"
      @@ -200,7 +200,7 @@ 

      Required Code -

      Adding a Partyline Command¶

      +

      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)
       {
      @@ -221,7 +221,7 @@ 

      Adding a Partyline Command -

      Adding a Tcl Command¶

      +

      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:

      +

      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:

      -

      Adding a Tcl Bind¶

      +

      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;
       
      @@ -271,7 +270,7 @@ 

      Adding a Tcl Bind -

      Defining bind arguments¶

      +

      Defining bind arguments¶

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

      -

      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:

      +

      Calling the Bind¶

      +

      To call the bind, Eggdrop coding style is 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);
       
       
      @@ -321,11 +320,84 @@ 

      Calling the Bind +

      Bind Configuration Settings¶

      +

      The last argument to check_tcl_bind sets additional configurations for the bind, these are the defined values:

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

      Value

      Description

      MATCH_PARTIAL

      Check the triggering value against the beginning of the bind mask, ie DIR triggers a mask for DIRECTORY (case insensitive)

      MATCH_EXACT

      Check the triggering value exactly against the bind mask value (case insensitive)

      MATCH_CASE

      Check the triggering value exactly against the bind mask value (case sensitive)

      MATCH_MASK

      Check if the bind mask is contained within the triggering value, as a wildcarded value

      MATCH_MODE

      Check if the triggering value is contained within the bind mask, as a wildcarded value

      MATCH_CRON

      Check the triggering value against a bind mask formatted as a cron entry, ie “30 7 6 7 * “ triggers a mask for “30 7 * * * “

      BIND_USE_ATTR

      Check the flags of the user match the flags required to trigger the bind

      BIND_STACKABLE

      Allow multiple binds to call the same Tcl proc

      BIND_WANTRET

      With stacked binds, if the called Tcl proc called returns a ‘1’, halt processing any further binds triggered by the action

      BIND_STACKRET

      Used with BIND_WANTRET; allow stacked binds to continue despite receiving a ‘1’

      BIND_ALTER_ARGS

      Replaces arguments (which ones?) with the result returned from the called Tcl proc

      +

      The value returned by the bind is often matched against a desired value to return a ‘1’ (often used with BIND_WANTRET and BIND_STACKRET) to the calling function.

      +

      +
      +

      Bind Return Values¶

      + + + + + + + + + + + + + + + + + + + + + + + + +

      Value

      Description

      BIND_NOMATCH

      The bind was not triggered due to not meeting the criteria set for the bind

      BIND_AMBIGUOUS

      The bind was ambiguous, similar to this explanation

      BIND_MATCHED

      The bind criteria was met, but the Tcl proc it tried to call could not be found

      BIND_EXECUTED

      The bind criteria was met and the Tcl proc was called

      BIND_EXEC_LOG

      The bind criteria was met, the Tcl proc was called, and Eggdrop logged the bind being called

      BIND_QUIT

      The bind was triggered in conjunction with the target leaving the partyline or filesys area (?)

      +
    -

    Exporting the Bind¶

    +

    Exporting the Bind¶

    Do we need to do this?

    @@ -356,9 +428,9 @@

    Exporting the Bind

    diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index 128c388a9..a2107bad6 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -1,17 +1,16 @@ - - + - + Setting Up Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -105,10 +105,10 @@

    Search

    -

    Setting Up Eggdrop¶

    +

    Setting Up Eggdrop¶

    This guide was based off perhaps the most helpful Eggdrop website ever written, egghelp.org by slennox. As happens with life, slennox has moved on and no longer updates it, but the information here is still incredibly useful. We have updated his setup page here and hope it will continue to prove useful to our users

    -

    Prerequisites¶

    +

    Prerequisites¶

    Make sure Tcl AND it’s dev packages are installed on your system. On Debian-based systems, this is done with:

    sudo apt-get install tcl tcl-dev
     
    @@ -119,12 +119,13 @@

    Prerequisites -

    The super-short version¶

    +

    The super-short version¶

    You can read the Installation section for a more detailed explanation of these steps.

      -
    1. Download the latest stable Eggdrop release to your shell via FTP, or simply type wget geteggdrop.com -O eggdrop-1.9.5.tar.gz

    2. -
    3. From the commadline of your shell, type tar zxvf eggdrop-1.9.5.tar.gz

    4. -
    5. Type cd eggdrop-1.9.5

    6. +
    7. Download the current version of Eggdrop to your shell via FTP, or simply type: wget geteggdrop.com -O eggdrop-1.9.5.tar.gz

    8. +
    9. Next, from the commandline of the shell, ensure you are in the same directory that you downloaded the tar file into

    10. +
    11. Type: tar zxvf eggdrop-1.9.5.tar.gz

    12. +
    13. Type: cd eggdrop-1.9.5

    14. Type ./configure

    15. Type make config

    16. Type make

    17. @@ -135,42 +136,42 @@

      The super-short version

    -

    Getting the source¶

    +

    Getting the source¶

    -

    History¶

    -

    The current supported version of Eggdrop is the 1.9.x tree. The 1.8 and 1.6 series, while still popular, are no longer supported by the developers.

    -

    The most current version of Eggdrop, and the one appropriate for most users, is the current 1.9 series. It added many features such as SASL support, multi-ip listening, and a new password hashing module. It is the most complete, feature-rich, and functional version of Eggdrop. If you’re just starting out with Eggdrop, you should use 1.9.5

    -

    Prior to that, the 1.8 series added several major features, to include IPv6 support and SSL/TLS connections. 1.6.21, which is now over 10 years old, was the last release of the 1.6 series and is still used by users who have become comfortable with that version and may have spent much time applying their own modifications to make it work the way they want, and therefore don’t wish to move to a newer version. The majority of Tcl scripts out there were written for 1.6 bots, but those scripts usually work on 1.8 and 1.9 bots as well.

    +

    History¶

    +

    The current supported version of Eggdrop is the 1.9.x tree. Only the current major version (1.9.x) is supported; earlier major versions are not.

    +

    The most current version of Eggdrop, and the one appropriate for most users, is the current 1.9 series. It added many features such as SASL support, multi-ip listening, and a new password hashing module. It is the most complete, feature-rich, and functional version of Eggdrop. If you’re just starting out with Eggdrop, you should use 1.9.5.

    +

    Prior to that, the 1.8 series added several major features, to include IPv6 support and SSL/TLS connections. 1.6.21, which is now over 10 years old, was the last release of the 1.6 series. Because Eggdrop remained at the 1.6.21 patchlevel for several years it is still often run by users who have become comfortable with that version and don’t wish to move to a newer version- however, it is getting harder and harder to continue running 1.6 bots on modern Linux systems. Tcl scripts written for bots as far back as the 1.6 series generally work on all later versions of Eggdrop as well, so if you haven’t already- upgrade!

    The 1.9 Eggdrop tree is currently under active development and the most recent changes are available in daily snapshots for users to download for testing. While the development snapshot will contain the most current, up-to-date features of Eggdrop, it is not yet considered stable and users stand a higher chance of encountering bugs during use. If you do use it and find a bug, it is highly encouraged to report it via the Eggheads GitHub issues page.

    -

    Download locations¶

    -

    The developers distribute Eggdrop via two main methods: FTP, and GitHub. For FTP, it is packaged in tarball format (with the .tar.gz filename extension), with the version number in the filename. The Eggdrop 1.9.5 source, for example, would be named eggdrop-1.9.5.tar.gz.

    -

    The Eggheads FTP is a repository for the current version of Eggdrop, as well as the most current development snapshot and previous stable releases.

    -

    Eggdrop also maintains a GitHub page where you can download the development snapshot or a stable version, via either git commandline or by downloading a tarball. To download via git, type git clone https://github.com/eggheads/eggdrop.git, then cd eggdrop. This gives you the development version. To switch to the most recent stable version, type git checkout stable/1.9. You can then skip to step 4 in the Installation section below.

    +

    Download locations¶

    +

    The developers distribute Eggdrop via two main methods: FTP, and GitHub. For FTP, it is packaged in tarball format (with the .tar.gz filename extension), with the version number in the filename. The Eggdrop 1.9.5 source, for example, would be named eggdrop-1.9.5.tar.gz.

    +

    The Eggheads FTP is a repository for the current version of Eggdrop, as well as the most current development snapshot and previous stable releases.

    +

    Eggdrop also maintains a GitHub page where you can download the development snapshot or a stable version, via either git commandline or by downloading a tarball. To download via git, type git clone https://github.com/eggheads/eggdrop.git, then cd eggdrop. This gives you the development version. To switch to the most recent stable version, type git checkout stable/1.9. You can then skip to step 4 in the Installation section below.

    -

    Installation¶

    +

    Installation¶

    Installing Eggdrop is a relatively simple process provided your shell has the required tools for successful compilation. On most commercial shell accounts which allow Eggdrop bots you won’t have any problems with installation, but on some private boxes or a shell on your ISP you may experience errors during compilation.

    -

    Below is a step by step guide to the installation process. These instructions apply to 1.9 bots. It assumes you will be installing eggdrop-1.9.5.tar.gz, so just change the numbers if you are installing another version.

    +

    Below is a step by step guide to the installation process. These instructions apply to 1.9 bots. It assumes you will be installing eggdrop-1.9.5.tar.gz, so just change the numbers if you are installing another version.

      -
    1. Put the Eggdrop source on your shell using one of the specified download locations, either by downloading the eggdrop-1.9.5.tar.gz file to your system then uploading it to the shell via FTP, or downloading it directly to the shell via the shell’s FTP client, git, wget, or curl. You don’t need to put the .tar.gz file in its own directory (it’ll be done automatically in the next step).

    2. -
    3. SSH to the shell (if you haven’t already), and type tar zxvf eggdrop-1.9.5.tar.gz (if this doesn’t work, try gunzip eggdrop-1.9.5.tar.gz then tar xvf eggdrop-1.9.5.tar). This will extract the Eggdrop source into its installation directory, named ‘eggdrop-1.9.5’.

    4. -
    5. Type cd eggdrop-1.9.5 switch to the directory the Eggdrop source was extracted to.

    6. +
    7. Put the Eggdrop source on your shell using one of the specified download locations, either by downloading the current version of Eggdrop to your local system and then uploading it to the shell via FTP, or downloading it directly to the shell via the shell’s FTP client, git, wget, or curl. You don’t need to put the .tar.gz file in its own directory (it’ll be done automatically in the next step).

    8. +
    9. SSH to the shell (if you haven’t already), and type tar zxvf eggdrop-1.9.5.tar.gz (if this doesn’t work, try gunzip eggdrop-1.9.5.tar.gz then tar xvf eggdrop-1.9.5.tar). This will extract the Eggdrop source into its installation directory, named eggdrop-1.9.5.

    10. +
    11. Type cd eggdrop-1.9.5 switch to the directory the Eggdrop source was extracted to.

    12. Type ./configure (that’s a period followed by a slash followed by the word ‘configure’). This makes sure the shell has all the right tools for compiling Eggdrop, and helps Eggdrop figure out how to compile on the shell.

    13. When configure is done, type make config. This sets up which modules are to be compiled. For a more efficient installation, you can use make iconfig to select the modules to compile, but if you’re not sure just use make config.

    14. Type make. This compiles the Eggdrop. The process takes a brief moment on fast systems, longer on slow systems.

    15. Type make install DEST=~/botdir. This will install Eggdrop into a directory named ‘botdir’ in your home directory. You can change ‘botdir’ to anything you like. Note that in some cases you may need to specify the full path, e.g. make install DEST=/home/cooldude/botdir, using the ~ character in make install won’t always work. You can get the full path by typing pwd.

    16. -
    17. You can safely delete the installation directory named ‘eggdrop-1.9.5’ (to do this, type cd ~ then rm -rf eggdrop-1.9.5) that was created previously, although some people may find it handy to keep that directory for performing additional or future installations of the same version without recompiling.

    18. +
    19. You can safely delete the installation directory named eggdrop-1.9.5 (to do this, type cd ~ then rm -rf eggdrop-1.9.5) that was created previously, although some people may find it handy to keep that directory for performing additional or future installations of the same version without recompiling.

    That’s it! Eggdrop is now installed into its own directory on the shell. It’s time to edit the configuration files to make Eggdrop work the way you want it to.

    -

    Configuration¶

    +

    Configuration¶

    You will need to edit the configuration file before you can start up your Eggdrop. You can find the example configuration file in the directory you extracted the Eggdrop source to, under the name ‘eggdrop.conf’. If you downloaded Eggdrop to your system, you can unzip the tarball (.tar.gz) file to its own directory using 7-Zip or a similar program, and view the example config file, botchk file, and all the documentation files locally. You can use Notepad to edit these files, although it’s sometimes desirable to use an editor that supports the Unix file format such as EditPlus. To edit the file once it is on your shell, a program such as ‘nano’ or ‘vim’ is recommended.

    -

    Editing the config file¶

    +

    Editing the config file¶

    Eggdrop comes with two versions of the configuration file- eggdrop.conf and eggdrop-basic.conf. While it is recommended that users edit a copy of eggdrop.conf to take advantage of all the features Eggdrop has to offer, using eggdrop-basic.conf to start will be a quicker path for some. Still, it is recommended that you come back to the full config file at some point to see what you are missing.

    It is first recommended to rename the sample config to something other than “eggdrop.confâ€. Giving it the name of the bot’s nick (e.g. NiceBot.conf) is quite common. In the config file, you set up the IRC servers you want the bot to use and set Eggdrop’s options to suit your needs. Eggdrop has many options to configure, and editing the configuration file can take some time. I recommend you go over the entire config file to ensure the bot will be configured properly for your needs. All of the options in the config file have written explanations - be sure to read them carefully. Some of them can be a little bit vague, though.

    To comment out a line (prevent the bot from reading that line), you can add a ‘#’ in front of a line. When you come to a line that you need to edit, one popular option is to comment out the original and add your new line right below it. This preserves the original line as an example. For example:

    @@ -250,14 +251,14 @@

    Editing the config file

    -

    Starting the Eggdrop¶

    +

    Starting the Eggdrop¶

    Phew! Now that you’ve compiled, installed, and configured Eggdrop, it’s time to start it up. Switch to the directory to which you installed the bot, cross your fingers, and type ./eggdrop -m <config> (where <config> is the name you gave to the config file). Eggdrop should start up, and the bot should appear on IRC within a few minutes. The -m option creates a new userfile for your bot, and is only needed the first time you start your Eggdrop. In future, you will only need to type ./eggdrop <config> to start the bot. Make sure you take the time to read what it tells you when you start it up!

    Once your bot is on IRC, it’s important that you promptly introduce yourself to the bot. Msg it the ‘hello’ command you specified in the config file, e.g. /msg <botnick> hello. This will make you the bot’s owner. Once that’s done, you need to set a password using /msg <botnick> pass <password>. You can then DCC chat to the bot.

    Now that your Eggdrop is on IRC and you’ve introduced yourself as owner, it’s time to learn how to use your Eggdrop!

    -

    No show?¶

    +

    No show?¶

    If your bot didn’t appear on IRC, you should log in to the shell and view the bot’s logfile (the default in the config file is “logs/eggdrop.logâ€). Note that logfile entries are not written to disk immediately unless quick-logs is enabled, so you may have to wait a few minutes before the logfile appears, or contains messages that indicate why your bot isn’t showing up.

    -

    Additionally, you can kill the bot via the command line (kill pid, the pid is shown to you when you started the bot or can be viewed by running ps x) and then restart it with the -mnt flag, which will launch you directly into the partyline, to assist with troubleshooting. Note that if you use the -nt flag, the bot will not persist and you will kill it once you quit the partyline.

    +

    Additionally, you can kill the bot via the command line (kill pid, the pid is shown to you when you started the bot or can be viewed by running ps x) and then restart it with the -mnt flag, which will launch you directly into the partyline, to assist with troubleshooting. Note that if you use the -t flag, the bot will not persist and you will kill it once you quit the partyline.

    If you’re still unsure what the problem is, try asking in #eggdrop on Libera, and be sure to include any relevant information from the logfile. Good luck!

    @@ -289,9 +290,9 @@

    No show?

    diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index 85c65a339..b36d8a40c 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -1,17 +1,16 @@ - - + - + Enabling TLS Security on Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -103,11 +103,11 @@

    Search

    -

    Enabling TLS Security on Eggdrop¶

    +

    Enabling TLS Security on Eggdrop¶

    There are several ways TLS encryption can protect communication between your Eggdrop and the world. This guide will walk you through a few common scenarios and how to properly set up TLS protection.

    Sidenote: Despite SSL (Secure Socket Layer) encryption being deprecated and no longer secure, the term “SSL†is a bit of an anachronism and still commonly used interchangeably with TLS (Transport Layer Security). If you see the term “SSL†used to describe a secure connection method, to include with within Eggdrop’s own documentation and configuration files, it is probably safe to assume it is actually referring to the secure TLS protocol. If you talk to someone and they use the term “SSL†be sure to correct them, we’re sure they will definitely appreciate it :)

    -

    Pre-requisites¶

    +

    Pre-requisites¶

    Your server must have OpenSSL (or an equivalent fork) installed. Most commonly this is done through your OS’s package manager. Both the main package as well as the development headers must be installed. On a Debian/Ubuntu distro, this can be done by running:

    apt-get install openssl libssl-dev
     
    @@ -127,7 +127,7 @@

    Pre-requisites -

    Connecting to a TLS-enabled IRC server¶

    +

    Connecting to a TLS-enabled IRC server¶

    Many, if not most, IRC servers offer connection ports that add TLS protection around the data. Eggdrop uses a ‘+’ symbol in front of the port to denote a port as a TLS-enabled port. To add a server in the config file that supports TLS, add it as normal but simply prefix the port with a ‘+’. For example, if irc.pretendNet.org says it offers TLS on port 7000, you would add it to your configuration file as:

    server add irc.pretendNet.org +7000
     
    @@ -135,10 +135,10 @@

    Connecting to a TLS-enabled IRC server -

    Protecting Botnet Communications¶

    +

    Protecting Botnet Communications¶

    Eggdrop has the ability to protect botnet (direct bot to bot) communications with TLS.

    -

    Configuration File Preparation - Generating Keys¶

    +

    Configuration File Preparation - Generating Keys¶

    If an Eggdrop is going to listen/accept connections on a TLS port (more on that in a moment), it must have a public/private certificate pair generated and configured. For most users, a self-signed certificate is sufficient for encryption (a certificate signed by a certificate authority would be more secure, but obtaining one is outside the scope of this tutorial. However, the implementation of a signed keypair is no different than a self-signed pair). To generate a self-signed key pair, enter the Eggdrop source directory (the directory you first compiled Eggdrop from, usually named eggdrop-X.Y.Z) and type:

    make sslcert
     
    @@ -147,7 +147,7 @@

    Configuration File Preparation - Generating Keys -

    Configuration File Preparation - Listening with TLS¶

    +

    Configuration File Preparation - Listening with TLS¶

    Now you need to tell Eggdrop to accept TLS connections. As an example, to listen with TLS on port 5555 on all available IPs, add to the config file:

    listen +5555 all
     
    @@ -155,7 +155,7 @@

    Configuration File Preparation - Listening with TLS(There are numerous ways to format the listen command; read the config file and documentation for other alternatives)

    -

    Connecting to an Eggdrop listening with TLS¶

    +

    Connecting to an Eggdrop listening with TLS¶

    To connect to a bot listening with TLS, prefix the port number with a ‘+’. For example:

    .+bot HubBot 1.2.3.4 +5555
     
    @@ -164,7 +164,7 @@

    Connecting to an Eggdrop listening with TLS -

    Additional Information¶

    +

    Additional Information¶

    For additional information and a more thorough explanation of Eggdrop’s TLS implementation, please read the TLS docs

    @@ -195,9 +195,9 @@

    Additional Information

    diff --git a/doc/html/using/accounts.html b/doc/html/using/accounts.html index 7528db7c6..fdb89efa9 100644 --- a/doc/html/using/accounts.html +++ b/doc/html/using/accounts.html @@ -1,17 +1,16 @@ - - + - + Account tracking in Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -105,26 +105,26 @@

    Search

    -

    Account tracking in Eggdrop¶

    +

    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¶

    +

    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¶

    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¶

    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¶

    ‘WHOX <https://ircv3.net/specs/extensions/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¶

    +

    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
    @@ -136,7 +136,7 @@ 

    Enabling Eggdrop Account Tracking -

    Checking Account-tracking Status¶

    +

    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)
    @@ -155,24 +155,24 @@ 

    Checking Account-tracking Status -

    Determining if a Server Supports Account Capabilities¶

    +

    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¶

    +

    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¶

    +

    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¶

    +

    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.

    @@ -204,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..fc9c81e2e --- /dev/null +++ b/doc/html/using/autoscripts.html @@ -0,0 +1,342 @@ + + + + + + + + Eggdrop Autoscripts — Eggdrop 1.9.5 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 .autoscript on the partyline. This will open up a special Eggdrop console that doesn’t require you to prefix commands with a ‘.’ . 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. To activate this change, use the load command.

    +
    +
    +

    load <script>¶

    +

    This command will activate the script for use. You can also use this command to reload a script after modifying a script variable.

    +
    +
    +

    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.

    +
    +
    +

    update [script]¶

    +

    If no script is specified, this command checks if there any downloaded script has a newer version available. If a script is specified, autoscript will fetch and install the updated script.

    +
    +
    +
    +

    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, we suggest wrapping a custom autoscript inside a namespace eval <scriptname> {} statement as an autoscript best practice, which will lessen the chance of a variable name colliding with a variable from a separate script.

    +
    +
    +

    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:

    +
    {
    +  "schema": 1,
    +  "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,
    +    "udef": {
    +       "myflag": {
    +          "type": "flag",
    +          "description": "Activate the script on <channel> by doing"
    +       },
    +       "mystr1": {
    +          "type": "str",
    +          "description": "Flood limit, modify the channel value for this doing",
    +          "value": "{10:6}"
    +       },
    +       "mystr2": {
    +          "type": "str",
    +          "description": "Change that with",
    +          "value": "Just my string"
    +       }
    +       "myint1": {
    +          "type": "int",
    +          "description": "Number of allowed kicks, could be change with",
    +          "value": 4
    +       }
    +    },
    +    "requires": "tls",
    +    "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"
    +      }
    +    }
    +  }
    +}
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    schema

    The schema version of autoscript (currently 1)

    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-udef-<varname>-type

    Type of the user-defined channel setting, could be flag, str or int.

    config-udef-<varname>-description

    Description of user-defined channel setting used by the script. The description is appended with “ .chanset <channel> <varname> value†in case of int or str, and with “ .channel <channel> +<varname>†when flag

    config-udef-<varname>-value

    Default value of user-defined channel setting 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 tls, http, json, etc.

    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

    +
    +
    +

    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!

    • +
    • Don’t use global statements. Based on the manifest, variables are created by autoscript in the global namespace before the script is loaded. Instead of the global command, use the variable command to access a global variable inside a proc. And because Tcl is awesome, each variable must be declared on its own line, not all on a single line like you can do with global. Sorry!

    • +
    • While we’re talking about variables… make them unique to prevent collisions! We recommend prefixing the script name in front of a variable, such as myscript_setting or ms_setting. Alternatively, you can wrap your autoscript inside a namespace eval <scriptname> {} statement, which create a private namespace for your script to operate within.

    • +
    +
    +
    +

    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 55787dc1b..2257abc79 100644 --- a/doc/html/using/bans.html +++ b/doc/html/using/bans.html @@ -1,17 +1,16 @@ - - + - + Bans, Invites, and Exempts — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -99,7 +99,7 @@

    Search

    Bans, Invites and Exempts Last revised: March 07, 2002

    -

    Bans, Invites, and Exempts¶

    +

    Bans, Invites, and Exempts¶

    I assume that you know how bans work on IRC. Eggdrop handles bans, exempts and invites in various ways, and this file is intended to help clarify how @@ -169,7 +169,7 @@

    Bans, Invites, and Exempts

    diff --git a/doc/html/using/botnet.html b/doc/html/using/botnet.html index 524870353..6bc802079 100644 --- a/doc/html/using/botnet.html +++ b/doc/html/using/botnet.html @@ -1,17 +1,16 @@ - - + - + Botnet Sharing and Linking — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
      @@ -108,19 +108,19 @@

      Search

      Botnet Sharing and Linking

      -

      Botnet Sharing and Linking¶

      +

      Botnet Sharing and Linking¶

      The purpose of this document is to show you what a botnet is and how it could be useful to you. It also covers botflags userfile sharing.

      -

      What is a botnet?¶

      +

      What is a botnet?¶

      A botnet consists of two or more bots linked together. This can allow bots to op each other securely, control floods efficiently, and share user lists, ban lists, exempt/invite lists, and ignore lists (if sharing is enabled).

      -

      Terms¶

      +

      Terms¶

      The following are some common terms used in this document:

      Botnet

      A botnet consists of two or more bots connected together.

      @@ -159,7 +159,7 @@

      Terms

      -

      Example bottree¶

      +

      Example bottree¶

      BotA
         |-+BotB
         `-+BotC
      @@ -168,7 +168,7 @@ 

      Example bottree -

      Bot Flags¶

      +

      Bot Flags¶

      Flags are attributes that determine what a bot can or is allowed to do. Flags can be either global (such as +s) or channel specific (such as |+s #lamest). See ‘.help botattr’ for help with setting these flags.

      @@ -236,7 +236,7 @@

      Bot Flags -

      Adding and linking bots¶

      +

      Adding and linking bots¶

      With the common terms out of the way, we can start with the process of linking two bots. Before you start, you need to know the address and port of each bot you wish to link.

      Here is an example scenario:

      @@ -249,12 +249,12 @@

      Adding and linking bots

      At this point, you can link the two bots by typing ‘.link BotA’ on BotB (or ‘.link BotB’ on BotA). The bots will now give themselves random passwords which are not stored encrypted in the userfile. Note that you can link as many bots as you wish to your botnet.

      -

      Using botflags¶

      +

      Using botflags¶

      Botflags are needed to assign special functions and tasks to your bots. Bot flags are set with the ‘.botattr’ command. See ‘.help botattr’ for help with this command. The following is a list of botflags and their @@ -299,7 +299,7 @@

      Using botflags -

      Making bots share user records¶

      +

      Making bots share user records¶

      Before you start preparing your bots for sharing, make sure that you’ve loaded the transfer and share modules. You also have to ensure @@ -398,9 +398,9 @@

      Making bots share user records -

      Using certificates to authenticate Eggdrops¶

      +

      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 <SHA1 fingerprint> 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

      +

      Copyright (C) 1999 - 2024 Eggheads Development Team

      @@ -430,9 +430,9 @@

      Using certificates to authenticate Eggdrops
      diff --git a/doc/html/using/core.html b/doc/html/using/core.html index 2fa9db43d..21302afdc 100644 --- a/doc/html/using/core.html +++ b/doc/html/using/core.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Core Settings — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -57,6 +56,7 @@

      Table of Contents

  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -108,14 +108,14 @@

    Search

    -

    Last revised: October 25, 2010

    +

    Last revised: August 29, 2023

    -

    Eggdrop Core Settings¶

    +

    Eggdrop Core Settings¶

    This file describes the syntax and all the settings of your Eggdrop configuration file. Please note that you don’t need to set all of these variables to make your bot work properly.

    -

    Executable Path¶

    +

    Executable Path¶

    The first line in an Eggdrop configuration file should contain a fully qualified path to your Eggdrop executable. It has to be implemented in the way the example shows to make the config file @@ -126,7 +126,7 @@

    Executable Path -

    Basic Settings¶

    +

    Basic Settings¶

    You can change the basic Eggdrop appearance and behavior in this section.

    @@ -190,7 +190,7 @@

    Basic Settings -

    Log Files¶

    +

    Log Files¶

    Eggdrop is capable of logging various things, from channel chatter to partyline commands and file transfers.

    Logfiles are normally kept for 24 hours. Afterwards, they will be renamed @@ -341,7 +341,7 @@

    Log Files -

    Console Settings¶

    +

    Console Settings¶

    set console “mkcoblxsâ€

    This is the default console mode. It uses the same event flags as the @@ -353,7 +353,7 @@

    Console Settings -

    File and Directory Settings¶

    +

    File and Directory Settings¶

    set userfile “LamestBot.userâ€

    Specify here the filename your userfile should be saved as.

    @@ -395,7 +395,7 @@

    File and Directory Settings -

    Botnet/Dcc/Telnet Settings¶

    +

    Botnet/Dcc/Telnet Settings¶

    Settings in this section should be unimportant for you until you deal with botnets (multiple Eggdrops connected together to maximize efficiency). You should read doc/BOTNET before modifying these settings.

    @@ -494,7 +494,7 @@

    Botnet/Dcc/Telnet Settings -

    Advanced Settings¶

    +

    Advanced Settings¶

    set firewall “!sun-barr.ebay:3666â€

    Set this to your socks host if your Eggdrop sits behind a firewall. If @@ -571,7 +571,7 @@

    Advanced Settings -

    SSL Settings¶

    +

    SSL Settings¶

    Settings in this section take effect when eggdrop is compiled with TLS support.

    @@ -688,7 +688,7 @@

    SSL Settings -

    Modules¶

    +

    Modules¶

    After the core settings, you should start loading modules. Modules are loaded by the command “loadmodule <module>â€. Eggdrop looks for modules in the directory you specified by the module-path setting in the files @@ -708,13 +708,13 @@

    Modules -

    Scripts¶

    +

    Scripts¶

    The scripts section should be placed at the end of the config file. All modules should be loaded and their variables should be set at this point.

    @@ -732,7 +732,7 @@

    Scripts

    diff --git a/doc/html/using/features.html b/doc/html/using/features.html index 920a81fc0..00387c256 100644 --- a/doc/html/using/features.html +++ b/doc/html/using/features.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Features — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -97,7 +97,7 @@

    Search

    -

    Eggdrop Features¶

    +

    Eggdrop Features¶

    Eggdrop is the most advanced IRC robot available. It has been under development since December 1993, and unlike most other bots, it is still @@ -139,7 +139,7 @@

    Eggdrop Features

    diff --git a/doc/html/using/ipv6.html b/doc/html/using/ipv6.html index 06fcf9d87..396d93b9d 100644 --- a/doc/html/using/ipv6.html +++ b/doc/html/using/ipv6.html @@ -1,17 +1,16 @@ - - + - + IPv6 support — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -106,11 +106,11 @@

    Search

    IPv6 support Last revised: Mar 24, 2021

    -

    IPv6 support¶

    +

    IPv6 support¶

    This document provides information about IPv6 support which is a new eggdrop feature since version 1.8.0.

    -

    About¶

    +

    About¶

    Eggdrop can be compiled with IPv6 support. To make use of this, you need an IPv6-enabled OS and IPv6 connectivity. Every possible type of TCP connection can be established over IPv6 now, @@ -119,7 +119,7 @@

    About commands, telnet and ident lookups.

    -

    Installation¶

    +

    Installation¶

    ./configure and install as usual, the configure script will detect if your system supports IPv6 and will enable it automatically. You can override this behavior and manually enable or disable IPv6 with ./configure –enable-ipv6 @@ -132,7 +132,7 @@

    Installation -

    Usage¶

    +

    Usage¶

    You can use IPv6 addresses wherever you could specify IPv4 ones. IPs and hostnames are interchangeable everywhere. For certain settings and commands, you can enclose IPv6 addresses in square brackets to prevent @@ -141,11 +141,11 @@

    Usage consult them when in doubt.

    -

    CTCP CHAT/CHAT4/CHAT6¶

    +

    CTCP CHAT/CHAT4/CHAT6¶

    When a user sends a CTCP chat request, the request is passed to the bot via the IRC server, hiding the user’s IP. Since Eggdrop is unable to ‘see’ the type IP of the user is using (IPv4 or IPv6), it is thus unable to determine whether it should send back an IPv4 or an IPv6 address for the user to connect to. To work around this problem, the CHAT4 and CHAT6 commands were added to Eggdrop to force it to present an IPv4 or IPv6 address for use with a DCC connection, respectively. Otherwise, the traditional CHAT command will likely result in the Eggdrop presenting an IPv4 address to the user. So in short, if you’re on an IPv6 address and want to use CTCP CHAT to initiate a DCC session for the partyline, use CHAT6, not CHAT as the CTCP argument.

    -

    Settings¶

    +

    Settings¶

    There are four new IPv6 related config variables:

    vhost4

    @@ -171,7 +171,7 @@

    Settings

    diff --git a/doc/html/using/ircv3.html b/doc/html/using/ircv3.html index a15e1f393..1257f7b04 100644 --- a/doc/html/using/ircv3.html +++ b/doc/html/using/ircv3.html @@ -1,17 +1,16 @@ - - + - + IRCv3 support — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -104,18 +104,18 @@

    Search

    IRCv3 support Last revised: November 27, 2021

    -

    IRCv3 support¶

    +

    IRCv3 support¶

    This document provides information about IRCv3 capabilities, as defined via specifications documented by the IRCv3 working group (https://ircv3.net/). Support for some of these specifications was added starting with version 1.9.0, and more capabilities are added as possible with new versions.

    -

    About¶

    +

    About¶

    As more and more IRC servers began to develop and implement their own versions of the IRC protocol (generally defined in RFC1459 and RFC2812), a working group comprised of server, client, and bot developers decided to work together to document these features to make their implementation defined and standardized across servers. What emerged was the IRCv3 set of standards. The specifications developed by the IRCv3 working group was designed to be backwards compatible and are generally implemented via a CAP (capability) request sent at the initialization of an IRC session. A client can optinoally request these “extra†capabilities be enabled through the CAP request, with the assumption that the client can then support the capability requested and enabled. Not all servers or clients support the same capabilities, a general support list can be via the appropriate support table link at https://ircv3.net/.

    -

    Usage¶

    +

    Usage¶

    Within eggdrop.conf, several common IRCv3-defined capabilities are enabled simply changing their setting to ‘1’. Other capabilities without explicit settings in eggdrop.conf may be requested by adding them in a space-separated list to the cap-request setting. For more information on what a specific IRCv3-defined capability does, please consult https://ircv3.net/irc/.

    -

    Supported CAP capabilities¶

    +

    Supported CAP capabilities¶

    The following capabilities are supported by Eggdrop:

    diff --git a/doc/html/using/partyline.html b/doc/html/using/partyline.html index 49265ebd3..3f03d779b 100644 --- a/doc/html/using/partyline.html +++ b/doc/html/using/partyline.html @@ -1,19 +1,18 @@ - - + - + The Party Line — Eggdrop 1.9.5 documentation - - - - - + + + + + - + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -98,7 +98,7 @@

    Search

    Last revised: December 31, 2001

    -

    The Party Line¶

    +

    The Party Line¶

    The most important way you will communicate with your bot is through the party line. The party line is accessible via DCC chat or telnet. It’s pretty much just a miniature, lag-less IRC (see doc/BOTNET), but @@ -126,7 +126,7 @@

    The Party Line previous | - next

    @@ -155,9 +155,9 @@

    The Party Line

    diff --git a/doc/html/using/patch.html b/doc/html/using/patch.html index aac2d4b1f..f83ac29d4 100644 --- a/doc/html/using/patch.html +++ b/doc/html/using/patch.html @@ -1,17 +1,16 @@ - - + - + Patching Eggdrop — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -100,10 +100,10 @@

    Search

    -

    Patching Eggdrop¶

    +

    Patching Eggdrop¶

    Eggdrop is an open source project that depends on contributions of its users- like you! If you come across a feature you’d like to see implemented, find a bug, or think the documentation could be made more clear, you can open an issue on GitHub to discuss your ideas, and then submit a Pull Request to implement it!

    -

    Submitting a patch via GitHub¶

    +

    Submitting a patch via GitHub¶

    To create a patch via github:

      @@ -130,7 +130,7 @@

      Submitting a patch via GitHub

    diff --git a/doc/html/using/pbkdf2.html b/doc/html/using/pbkdf2.html index 17c073be0..75cf54f60 100644 --- a/doc/html/using/pbkdf2.html +++ b/doc/html/using/pbkdf2.html @@ -188,7 +188,7 @@

    Tcl Interface + - + Encryption/Hashing — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -102,12 +102,12 @@

    Search

    -

    Encryption/Hashing¶

    +

    Encryption/Hashing¶

    With the release of Eggdrop 1.9.0, an updated crytopgraphy module (PBKDF2) was released for use with Eggdrop. PBKDF2 is a one-way hashing algorithm used to protect the contents of the password file, as well as for use via the Tcl interface. Prior to this, blowfish was used for cryptographic requirements, such as hashing passwords for storage in the userfile.

    -

    Background¶

    +

    Background¶

    Prior to Eggdrop 1.9.0, the blowfish module was included with Eggdrop to protect sensitive data such as passwords stored in the userfile. While there are no known practical attacks against blowfish at the time of this writing, it was decided that a more modern crypto solution was desirable to be included with Eggdrop. The PBKDF2 (Password-based Key Derivation Function 2) uses a password and salt value to create a password hash (the salt value ensures that the hashes of two identical passwords are different). This process is one-way, which means the hashes cannot be cryptographically reversed and thus are safe for storing in a file.

    The default configuration of Eggdrop 1.9.0 has both the blowfish and pbkdf2 modules enabled (see Hybrid Configuration below). This will allow users upgrading a seamless transition to the PBKDF2 module. For users starting an Eggdrop for the first time, it is recommended to comment out the ‘loadmodule blowfish’ line, in order to implement the Solo Configuration.

    @@ -115,17 +115,17 @@

    Background -

    Usage¶

    +

    Usage¶

    There are two ways to implement PBKDF2- Hybrid configuration, which is recommended for transitioning an already-existing userfile to PBKDF2 by working with the blowfish module, and Solo configuration, which is recommended for use when starting a new Eggdrop for the first time.

    -

    Hybrid Configuration¶

    +

    Hybrid Configuration¶

    With a hybrid configuration, Eggdrop will run both the blowfish and the pbkdf2 modules concurrently. This will allow Eggdrop to authenticate users against their existing blowfish passwords stored in the userfile. However, the first time a user logs in, the pbkdf2 module will hash the (correct) password they enter and save it to the userfile. The pbkdf2-hashed password will then be used for all future logins.

    -

    Enabling hybrid configuration¶

    +

    Enabling hybrid configuration¶

    1. BACK UP YOUR USERFILE! This is the file that usually ends with ‘.user’.

    2. Ensure

    3. @@ -149,13 +149,13 @@

      Enabling hybrid configuration -

      Solo configuration¶

      +

      Solo configuration¶

      With a solo configuration, Eggdrop will only run the pbkdf2 module. Eggdrop will not be able to authenticate against passwords in an already-existing userfile and thus will require every user to set a password again, as if they were just added to Eggdrop. This can be done via the PASS msg command (/msg bot PASS <password>) or by having a user with appropriate permissions (and an already-set password) log into the partyline and use the ‘.chpass’ command.

      SECURITY CONSIDERATION: This configuration is not ideal for transitioning an existing userfile to PBKDF2. Without the blowfish module loaded, every user in the userfile essentially has no password set. This means any other user that matches a hostmask applied to a handle (!*@.aol.com, I’m looking at you) could set the password and gain access to that user’s Eggdrop account.

      -

      Enabling solo configuration¶

      +

      Enabling solo configuration¶

      1. BACK UP YOUR USERFILE! This is the file that usually ends with ‘.user’.

      2. Remove or comment:

        @@ -182,13 +182,13 @@

        Enabling solo configuration -

        Tcl Interface¶

        +

        Tcl Interface¶

        The PBKDF2 module adds the ‘encpass2’ command to the Tcl library. This command takes a string and hashes it using the PBKDF2 algorithm, and returns a string in the following format:

        $<PBK method>$rounds=<rounds>$<salt>$<password hash>
         

        where ‘PBK method’ is the method specified in the configuration file, ‘rounds’ is the number of rounds 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 - 2023 Eggheads Development Team

        +

        Copyright (C) 2000 - 2024 Eggheads Development Team

    @@ -218,9 +218,9 @@

    Tcl Interface

    diff --git a/doc/html/using/tcl-commands.html b/doc/html/using/tcl-commands.html index 68fbadb4d..50cb59f37 100644 --- a/doc/html/using/tcl-commands.html +++ b/doc/html/using/tcl-commands.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Tcl Commands — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -113,9 +113,9 @@

    Search

    Eggdrop Tcl Commands -Last revised: January 24, 2021

    +Last revised: January 6, 2024

    -

    Eggdrop Tcl Commands¶

    +

    Eggdrop Tcl Commands¶

    This is an exhaustive list of all the Tcl commands added to Eggdrop. All of the normal Tcl built-in commands are still there, of course, but you can also use these to manipulate features of the bot. They are listed @@ -127,9 +127,9 @@

    Eggdrop Tcl Commands
    -

    Output Commands¶

    +

    Output Commands¶

    -

    putserv <text> [options]¶

    +

    putserv <text> [options]¶

    Description: sends text to the server, like ‘.dump’ (intended for direct server commands); output is queued so that the bot won’t flood itself off the server.

    Options: @@ -140,7 +140,7 @@

    putserv <text> [options] -

    puthelp <text> [options]¶

    +

    puthelp <text> [options]¶

    Description: sends text to the server, like ‘putserv’, but it uses a different queue intended for sending messages to channels or people.

    Options: @@ -151,7 +151,7 @@

    puthelp <text> [options] -

    putquick <text> [options]¶

    +

    putquick <text> [options]¶

    Description: sends text to the server, like ‘putserv’, but it uses a different (and faster) queue.

    Options: @@ -162,7 +162,7 @@

    putquick <text> [options] -

    putnow <text> [-oneline]¶

    +

    putnow <text> [-oneline]¶

    Description: sends text to the server immediately, bypassing all queues. Use with caution, as the bot may easily flood itself off the server.

    Options: @@ -172,7 +172,7 @@

    putnow <text> [-oneline] -

    putkick <channel> <nick,nick,…> [reason]¶

    +

    putkick <channel> <nick,nick,…> [reason]¶

    Description: sends kicks to the server and tries to put as many nicks into one kick command as possible.

    Returns: nothing

    @@ -180,7 +180,7 @@

    putkick <channel> <nick,nick,…> [reason]

    -

    putlog <text>¶

    +

    putlog <text>¶

    Description: logs <text> to the logfile and partyline if the ‘misc’ flag (o) is active via the ‘logfile’ config file setting and the ‘.console’ partyline setting, respectively.

    Returns: nothing

    @@ -188,7 +188,7 @@

    putlog <text> -

    putcmdlog <text>¶

    +

    putcmdlog <text>¶

    Description: logs <text> to the logfile and partyline if the ‘cmds’ flag (c) is active via the ‘logfile’ config file setting and the ‘.console’ partyline setting, respectively.

    Returns: nothing

    @@ -196,7 +196,7 @@

    putcmdlog <text> -

    putxferlog <text>¶

    +

    putxferlog <text>¶

    Description: logs <text> to the logfile and partyline if the ‘files’ flag (x) is active via the ‘logfile’ config file setting and the ‘.console’ partyline setting, respectively.

    Returns: nothing

    @@ -204,7 +204,7 @@

    putxferlog <text> -

    putloglev <flag(s)> <channel> <text>¶

    +

    putloglev <flag(s)> <channel> <text>¶

    Description: logs <text> to the logfile and partyline at the log level of the specified flag. Use “*†in lieu of a flag to indicate all log levels.

    Returns: nothing

    @@ -212,7 +212,7 @@

    putloglev <flag(s)> <channel> <text>

    -

    dumpfile <nick> <filename>¶

    +

    dumpfile <nick> <filename>¶

    Description: dumps file from the help/text directory to a user on IRC via msg (one line per msg). The user has no flags, so the flag bindings won’t work within the file.

    Returns: nothing

    @@ -220,14 +220,14 @@

    dumpfile <nick> <filename> -

    queuesize [queue]¶

    +

    queuesize [queue]¶

    Returns: the number of messages in all queues. If a queue is specified, only the size of this queue is returned. Valid queues are: mode, server, help.

    Module: server

    -

    clearqueue <queue>¶

    +

    clearqueue <queue>¶

    Description: removes all messages from a queue. Valid arguments are: mode, server, help, or all.

    Returns: the number of deleted lines from the specified queue.

    @@ -235,7 +235,7 @@

    clearqueue <queue>

    -

    cap <ls/values/req/enabled/raw> [arg]¶

    +

    cap <ls/values/req/enabled/raw> [arg]¶

    Description: displays CAP status or sends a raw CAP command to the server. “ls†will list the capabilities Eggdrop is internally tracking as supported by the server. “values†will list all capabilities and their associated CAP 302 values (if any) as a key/value pair, and “values†with a capability name as arg will list the values associated for the capability. “enabled†will list the capabilities Eggdrop is internally tracking as negotiated with the server. “req†will request the capabilities listed in “arg†from the server. “raw†will send a raw CAP command to the server. The arg field is a single argument, and should be submitted as a single string. For example, to request capabilities foo and bar, you would use [cap req “foo barâ€], and for example purposes, sending the same request as a raw command would be [cap raw “REQ :foo barâ€].

    Returns: a list of CAP capabilities for the “enabled†and “ls†sub-commands; a dict of capability/value pairs for the “values†command or a list if “values†if followed by an argument; otherwise nothing.

    @@ -243,7 +243,7 @@

    cap <ls/values/req/enabled/raw> [arg] -

    tagmsg <tags> <target>¶

    +

    tagmsg <tags> <target>¶

    Description: sends an IRCv3 TAGMSG command to the target. Only works if message-tags has been negotiated with the server via the cap command. tags is a Tcl dict (or space-separated string) of the tags you wish to send separated by commas (do not include the @prefix), and target is the nickname or channel you wish to send the tags to. To send a tag only (not a key/value pair), use a “†as the value for a key in a dict, or a “{}†if you are sending as a space-separated string.

    @@ -256,7 +256,7 @@

    tagmsg <tags> <target> -

    server add <ip/host> [[+]port [password]]¶

    +

    server add <ip/host> [[+]port [password]]¶

    Description: adds a server to the list of servers Eggdrop will connect to. Prefix the port with ‘+’ to indicate an SSL-protected port. A port value is required if password is to be specified. The SSL status (+) of the provided port is matched against as well (ie, 7000 is not the same as +7000).

    Returns: nothing

    @@ -264,7 +264,7 @@

    server add <ip/host> [[+]port [password]] -

    server remove <ip/host> [[+]port]¶

    +

    server remove <ip/host> [[+]port]¶

    Description: removes a server from the list of servers Eggdrop will connect to. If no port is provided, all servers matching the ip or hostname provided will be removed, otherwise only the ip/host with the corresponding port will be removed. The SSL status (+) of the provided port is matched against as well (ie, 7000 is not the same as +7000).

    Returns: nothing

    @@ -272,7 +272,7 @@

    server remove <ip/host> [[+]port] -

    server list¶

    +

    server list¶

    Description: lists all servers currently added to the bots internal server list

    Returns: A list of lists in the format {{hostname} {port} {password}}

    @@ -281,23 +281,23 @@

    server list -

    User Record Manipulation Commands¶

    +

    User Record Manipulation Commands¶

    -

    countusers¶

    +

    countusers¶

    Returns: number of users in the bot’s database

    Module: core

    -

    validuser <handle>¶

    +

    validuser <handle>¶

    Returns: 1 if a user by that name exists; 0 otherwise

    Module: core

    -

    finduser [-account] <value>¶

    +

    finduser [-account] <value>¶

    Description: finds the internal user record which most closely matches the given value. When used with the -account flag, value is a services account name, otherwise by default value is a string in the hostmask format of nick!user@host.

    Returns: the handle found, or “*†if none

    @@ -305,14 +305,14 @@

    finduser [-account] <value> -

    userlist [flags]¶

    +

    userlist [flags]¶

    Returns: a list of users on the bot. You can use the flag matching system here ([global]{&/|}[chan]{&/|}[bot]). ‘&’ specifies “andâ€; ‘|’ specifies “orâ€.

    Module: core

    -

    passwdok <handle> <pass>¶

    +

    passwdok <handle> <pass>¶

    Description: checks the password given against the user’s password. Check against the password “-†to find out if a user has no password set.

    Returns: 1 if the password matches for that user; 0 otherwise. Or if we are checking against the password “-â€: 1 if the user has no password set; 0 otherwise.

    @@ -320,7 +320,7 @@

    passwdok <handle> <pass> -

    getuser <handle> [entry-type] [extra info]¶

    +

    getuser <handle> [entry-type] [extra info]¶

    Description: an interface to the new generic userfile support. Without an entry-type, it returns a flat key/value list (dict) of all set entries. Valid entry types are:

    @@ -365,7 +365,7 @@

    getuser <handle> [entry-type] [extra info] -

    setuser <handle> <entry-type> [extra info]¶

    +

    setuser <handle> <entry-type> [extra info]¶

    Description: this is the counterpart of getuser. It lets you set the various values. Other then the ones listed below, the entry-types are the same as getuser’s.

    @@ -425,7 +425,7 @@

    setuser <handle> <entry-type> [extra info]
    -

    chhandle <old-handle> <new-handle>¶

    +

    chhandle <old-handle> <new-handle>¶

    Description: changes a user’s handle

    Returns: 1 on success; 0 if the new handle is invalid or already used, or if the user can’t be found

    @@ -433,7 +433,7 @@

    chhandle <old-handle> <new-handle> -

    chattr <handle> [changes [channel]]¶

    +

    chattr <handle> [changes [channel]]¶

    Description: changes the attributes for a user record, if you include any. Changes are of the form ‘+f’, ‘-o’, ‘+dk’, ‘-o+d’, etc. If changes are specified in the format of |<changes> <channel>, the channel-specific flags for that channel are altered. You can now use the +o|-o #channel format here too.

    @@ -442,7 +442,7 @@

    chattr <handle> [changes [channel]] -

    botattr <handle> [changes [channel]]¶

    +

    botattr <handle> [changes [channel]]¶

    Description: similar to chattr except this modifies bot flags rather than normal user attributes.

    Returns: new flags for the bot (if you made no changes, the current flags are returned). If a channel was specified, the global AND the channel-specific flags for that channel are returned in the format of globalflags|channelflags. “*†is returned if the specified bot does not exist.

    @@ -450,7 +450,7 @@

    botattr <handle> [changes [channel]] -

    matchattr <handle> <flags> [channel]¶

    +

    matchattr <handle> <flags> [channel]¶

    Description: checks if the flags of the specified user match the flags provided. “flags†is of the form:

    [+/-]<global flags>[&/|<channel flags>[&/|<bot flags>]]
    @@ -462,7 +462,7 @@ 

    botattr <handle> [changes [channel]] -

    adduser <handle> [hostmask]¶

    +

    adduser <handle> [hostmask]¶

    Description: creates a new user entry with the handle and hostmask given (with no password and the default flags)

    Returns: 1 if successful; 0 if the handle already exists

    @@ -470,7 +470,7 @@

    adduser <handle> [hostmask] -

    addbot <handle> <address> [botport [userport]]¶

    +

    addbot <handle> <address> [botport [userport]]¶

    Description: adds a new bot to the userlist with the handle and botaddress given (with no password and no flags). <address> format is one of:

      @@ -487,7 +487,7 @@

      addbot <handle> <address> [botport [userport]] -

      deluser <handle>¶

      +

      deluser <handle>¶

      Description: attempts to erase the user record for a handle

      Returns: 1 if successful, 0 if no such user exists

      @@ -495,7 +495,7 @@

      deluser <handle> -

      delhost <handle> <hostmask>¶

      +

      delhost <handle> <hostmask>¶

      Description: deletes a hostmask from a user’s host list

      Returns: 1 on success; 0 if the hostmask (or user) doesn’t exist

      @@ -503,7 +503,7 @@

      delhost <handle> <hostmask> -

      addchanrec <handle> <channel>¶

      +

      addchanrec <handle> <channel>¶

      Description: adds a channel record for a user

      Returns: 1 on success; 0 if the user or channel does not exist

      @@ -511,7 +511,7 @@

      addchanrec <handle> <channel> -

      delchanrec <handle> <channel>¶

      +

      delchanrec <handle> <channel>¶

      Description: removes a channel record for a user. This includes all associated channel flags.

      Returns: 1 on success; 0 if the user or channel does not exist

      @@ -519,21 +519,21 @@

      delchanrec <handle> <channel> -

      haschanrec <handle> <channel>¶

      +

      haschanrec <handle> <channel>¶

      Returns: 1 if the given handle has a chanrec for the specified channel; 0 otherwise

      Module: channels

    -

    getchaninfo <handle> <channel>¶

    +

    getchaninfo <handle> <channel>¶

    Returns: info line for a specific channel (behaves just like ‘getinfo’)

    Module: channels

    -

    setchaninfo <handle> <channel> <info>¶

    +

    setchaninfo <handle> <channel> <info>¶

    Description: sets the info line on a specific channel for a user. If info is “noneâ€, it will be removed.

    Returns: nothing

    @@ -541,7 +541,7 @@

    setchaninfo <handle> <channel> <info>

    -

    newchanban <channel> <ban> <creator> <comment> [lifetime] [options]¶

    +

    newchanban <channel> <ban> <creator> <comment> [lifetime] [options]¶

    Description: adds a ban to the ban list of a channel; creator is given credit for the ban in the ban list. lifetime is specified in minutes. If lifetime is not specified, ban-time (usually 60) is used. Setting the lifetime to 0 makes it a permanent ban.

    Options:

    @@ -557,7 +557,7 @@

    newchanban <channel> <ban> <creator> <comment> [life

    -

    newban <ban> <creator> <comment> [lifetime] [options]¶

    +

    newban <ban> <creator> <comment> [lifetime] [options]¶

    Description: adds a ban to the global ban list (which takes effect on all channels); creator is given credit for the ban in the ban list. lifetime is specified in minutes. If lifetime is not specified, default-ban-time (usually 120) is used. Setting the lifetime to 0 makes it a permanent ban.

    Options:

    @@ -573,7 +573,7 @@

    newban <ban> <creator> <comment> [lifetime] [options]

    -

    newchanexempt <channel> <exempt> <creator> <comment> [lifetime] [options]¶

    +

    newchanexempt <channel> <exempt> <creator> <comment> [lifetime] [options]¶

    Description: adds a exempt to the exempt list of a channel; creator is given credit for the exempt in the exempt list. lifetime is specified in minutes. If lifetime is not specified, exempt-time (usually 60) is used. Setting the lifetime to 0 makes it a permanent exempt. The exempt will not be removed until the corresponding ban has been removed. For timed bans, once the time period has expired, the exempt will not be removed until the corresponding ban has either expired or been removed.

    Options:

    @@ -589,7 +589,7 @@

    newchanexempt <channel> <exempt> <creator> <comment>

    -

    newexempt <exempt> <creator> <comment> [lifetime] [options]¶

    +

    newexempt <exempt> <creator> <comment> [lifetime] [options]¶

    Description: adds a exempt to the global exempt list (which takes effect on all channels); creator is given credit for the exempt in the exempt list. lifetime is specified in minutes. If lifetime is not specified, exempt-time (usually 60) is used. Setting the lifetime to 0 makes it a permanent exempt. The exempt will not be removed until the corresponding ban has been removed.

    Options:

    @@ -605,7 +605,7 @@

    newexempt <exempt> <creator> <comment> [lifetime] [options

    -

    newchaninvite <channel> <invite> <creator> <comment> [lifetime] [options]¶

    +

    newchaninvite <channel> <invite> <creator> <comment> [lifetime] [options]¶

    Description: adds a invite to the invite list of a channel; creator is given credit for the invite in the invite list. lifetime is specified in minutes. If lifetime is not specified, invite-time (usually 60) is used. Setting the lifetime to 0 makes it a permanent invite. The invite will not be removed until the channel has gone -i.

    Options:

    @@ -621,7 +621,7 @@

    newchaninvite <channel> <invite> <creator> <comment>

    -

    newinvite <invite> <creator> <comment> [lifetime] [options]¶

    +

    newinvite <invite> <creator> <comment> [lifetime] [options]¶

    Description: adds a invite to the global invite list (which takes effect on all channels); creator is given credit for the invite in the invite list. lifetime is specified in minutes. If lifetime is not specified, invite-time (usually 60) is used. Setting the lifetime to 0 makes it a permanent invite. The invite will not be removed until the channel has gone -i.

    Options:

    @@ -637,7 +637,7 @@

    newinvite <invite> <creator> <comment> [lifetime] [options

    -

    stickban <banmask> [channel]¶

    +

    stickban <banmask> [channel]¶

    Description: makes a ban sticky, or, if a channel is specified, then it is set sticky on that channel only.

    Returns: 1 on success; 0 otherwise

    @@ -645,7 +645,7 @@

    stickban <banmask> [channel] -

    unstickban <banmask> [channel]¶

    +

    unstickban <banmask> [channel]¶

    Description: makes a ban no longer sticky, or, if a channel is specified, then it is unstuck on that channel only.

    Returns: 1 on success; 0 otherwise

    @@ -653,7 +653,7 @@

    unstickban <banmask> [channel] -

    stickexempt <exemptmask> [channel]¶

    +

    stickexempt <exemptmask> [channel]¶

    Description: makes an exempt sticky, or, if a channel is specified, then it is set sticky on that channel only.

    Returns: 1 on success; 0 otherwise

    @@ -661,7 +661,7 @@

    stickexempt <exemptmask> [channel] -

    unstickexempt <exemptmask> [channel]¶

    +

    unstickexempt <exemptmask> [channel]¶

    Description: makes an exempt no longer sticky, or, if a channel is specified, then it is unstuck on that channel only.

    Returns: 1 on success; 0 otherwise

    @@ -669,7 +669,7 @@

    unstickexempt <exemptmask> [channel] -

    stickinvite <invitemask> [channel]¶

    +

    stickinvite <invitemask> [channel]¶

    Description: makes an invite sticky, or, if a channel is specified, then it is set sticky on that channel only.

    Returns: 1 on success; 0 otherwise

    @@ -677,7 +677,7 @@

    stickinvite <invitemask> [channel] -

    unstickinvite <invitemask> [channel]¶

    +

    unstickinvite <invitemask> [channel]¶

    Description: makes an invite no longer sticky, or, if a channel is specified, then it is unstuck on that channel only.

    Returns: 1 on success; 0 otherwise

    @@ -685,7 +685,7 @@

    unstickinvite <invitemask> [channel] -

    killchanban <channel> <ban>¶

    +

    killchanban <channel> <ban>¶

    Description: removes a ban from the ban list for a channel

    Returns: 1 on success; 0 otherwise

    @@ -693,7 +693,7 @@

    killchanban <channel> <ban> -

    killban <ban>¶

    +

    killban <ban>¶

    Description: removes a ban from the global ban list

    Returns: 1 on success; 0 otherwise

    @@ -701,7 +701,7 @@

    killban <ban> -

    killchanexempt <channel> <exempt>¶

    +

    killchanexempt <channel> <exempt>¶

    Description: removes an exempt from the exempt list for a channel

    Returns: 1 on success; 0 otherwise

    @@ -709,7 +709,7 @@

    killchanexempt <channel> <exempt> -

    killexempt <exempt>¶

    +

    killexempt <exempt>¶

    Description: removes an exempt from the global exempt list

    Returns: 1 on success; 0 otherwise

    @@ -717,7 +717,7 @@

    killexempt <exempt>

    -

    killchaninvite <channel> <invite>¶

    +

    killchaninvite <channel> <invite>¶

    Description: removes an invite from the invite list for a channel

    Returns: 1 on success; 0 otherwise

    @@ -725,7 +725,7 @@

    killchaninvite <channel> <invite> -

    killinvite <invite>¶

    +

    killinvite <invite>¶

    Description: removes an invite from the global invite list

    Returns: 1 on success; 0 otherwise

    @@ -733,91 +733,91 @@

    killinvite <invite>

    -

    ischanjuped <channel>¶

    +

    ischanjuped <channel>¶

    Returns: 1 if the channel is juped, and the bot is unable to join; 0 otherwise

    Module: channels

    -

    isban <ban> [channel [-channel]]¶

    +

    isban <ban> [channel [-channel]]¶

    Returns: 1 if the specified ban is in the global ban list; 0 otherwise. If a channel is specified, that channel’s ban list is checked as well. If the -channel flag is used at the end of the command, *only* the channel bans are checked.

    Module: channels

    -

    ispermban <ban> [channel [-channel]]¶

    +

    ispermban <ban> [channel [-channel]]¶

    Returns: 1 if the specified ban is in the global ban list AND is marked as permanent; 0 otherwise. If a channel is specified, that channel’s ban list is checked as well. If the -channel flag is used at the end of the command, *only* the channel bans are checked.

    Module: channels

    -

    isexempt <exempt> [channel [-channel]]¶

    +

    isexempt <exempt> [channel [-channel]]¶

    Returns: 1 if the specified exempt is in the global exempt list; 0 otherwise. If a channel is specified, that channel’s exempt list is checked as well. If the -channel flag is used at the end of the command, *only* the channel exempts are checked.

    Module: channels

    -

    ispermexempt <exempt> [channel [-channel]]¶

    +

    ispermexempt <exempt> [channel [-channel]]¶

    Returns: 1 if the specified exempt is in the global exempt list AND is marked as permanent; 0 otherwise. If a channel is specified, that channel’s exempt list is checked as well. If the -channel flag is used at the end of the command, *only* the channel exempts are checked.

    Module: channels

    -

    isinvite <invite> [channel [-channel]]¶

    +

    isinvite <invite> [channel [-channel]]¶

    Returns: 1 if the specified invite is in the global invite list; 0 otherwise. If a channel is specified, that channel’s invite list is checked as well. If the -channel flag is used at the end of the command, *only* the channel invites are checked.

    Module: channels

    -

    isperminvite <invite> [channel [-channel]]¶

    +

    isperminvite <invite> [channel [-channel]]¶

    Returns: 1 if the specified invite is in the global invite list AND is marked as permanent; 0 otherwise. If a channel is specified, that channel’s invite list is checked as well. If the -channel flag is used at the end of the command, *only* the channel invites are checked.

    Module: channels

    -

    isbansticky <ban> [channel [-channel]]¶

    +

    isbansticky <ban> [channel [-channel]]¶

    Returns: 1 if the specified ban is marked as sticky in the global ban list; 0 otherwise. If a channel is specified, that channel’s ban list is checked as well. If the -channel flag is used at the end of the command, *only* the channel bans are checked.

    Module: channels

    -

    isexemptsticky <exempt> [channel [-channel]]¶

    +

    isexemptsticky <exempt> [channel [-channel]]¶

    Returns: 1 if the specified exempt is marked as sticky in the global exempt list; 0 otherwise. If a channel is specified, that channel’s exempt list is checked as well. If the -channel flag is used at the end of the command, *only* the channel exempts are checked.

    Module: channels

    -

    isinvitesticky <invite> [channel [-channel]]¶

    +

    isinvitesticky <invite> [channel [-channel]]¶

    Returns: 1 if the specified invite is marked as sticky in the global invite list; 0 otherwise. If a channel is specified, that channel’s invite list is checked as well. If the -channel flag is used at the end of the command, *only* the channel invites are checked.

    Module: channels

    -

    matchban <nick!user@host> [channel]¶

    +

    matchban <nick!user@host> [channel]¶

    Returns: 1 if the specified nick!user@host matches a ban in the global ban list; 0 otherwise. If a channel is specified, that channel’s ban list is checked as well.

    Module: channels

    -

    matchexempt <nick!user@host> [channel]¶

    +

    matchexempt <nick!user@host> [channel]¶

    Returns: 1 if the specified nick!user@host matches an exempt in the global exempt list; 0 otherwise. If a channel is specified, that channel’s exempt list is checked as well.

    Module: channels

    -

    matchinvite <nick!user@host> [channel]¶

    +

    matchinvite <nick!user@host> [channel]¶

    Returns: 1 if the specified nick!user@host matches an invite in the global invite list; 0 otherwise. If a channel is specified, that channel’s invite list is checked as well.

    @@ -825,28 +825,28 @@

    matchinvite < -

    banlist [channel]¶

    +

    banlist [channel]¶

    Returns: a list of global bans, or, if a channel is specified, a list of channel-specific bans. Each entry is a sublist containing: hostmask, comment, expiration timestamp, time added, last time active, and creator. The three timestamps are in unixtime format.

    Module: channels

    -

    exemptlist [channel]¶

    +

    exemptlist [channel]¶

    Returns: a list of global exempts, or, if a channel is specified, a list of channel-specific exempts. Each entry is a sublist containing: hostmask, comment, expiration timestamp, time added, last time active, and creator. The three timestamps are in unixtime format.

    Module: channels

    -

    invitelist [channel]¶

    +

    invitelist [channel]¶

    Returns: a list of global invites, or, if a channel is specified, a list of channel-specific invites. Each entry is a sublist containing: hostmask, comment, expiration timestamp, time added, last time active, and creator. The three timestamps are in unixtime format.

    Module: channels

    -

    newignore <hostmask> <creator> <comment> [lifetime]¶

    +

    newignore <hostmask> <creator> <comment> [lifetime]¶

    Description: adds an entry to the ignore list; creator is given credit for the ignore. lifetime is how many minutes until the ignore expires and is removed. If lifetime is not specified, ignore-time (usually 60) is used. Setting the lifetime to 0 makes it a permanent ignore.

    Returns: nothing

    @@ -854,7 +854,7 @@

    newignore <hostmask> <creator> <comment> [lifetime]

    -

    killignore <hostmask>¶

    +

    killignore <hostmask>¶

    Description: removes an entry from the ignore list

    Returns: 1 if successful; 0 otherwise

    @@ -862,21 +862,21 @@

    killignore <hostmask>

    -

    ignorelist¶

    +

    ignorelist¶

    Returns: a list of ignores. Each entry is a sublist containing: hostmask, comment, expiration timestamp, time added, and creator. The timestamps are in unixtime format.

    Module: core

    -

    isignore <hostmask>¶

    +

    isignore <hostmask>¶

    Returns: 1 if the ignore is in the list; 0 otherwise

    Module: core

    -

    save¶

    +

    save¶

    Description: writes the user and channel files to disk

    Returns: nothing

    @@ -884,7 +884,7 @@

    save¶<

    -

    reload¶

    +

    reload¶

    Description: loads the userfile from disk, replacing whatever is in memory

    Returns: nothing

    @@ -892,7 +892,7 @@

    reload

    -

    backup¶

    +

    backup¶

    Description: makes a simple backup of the userfile that’s on disk. If the channels module is loaded, this also makes a simple backup of the channel file.

    Returns: nothing

    @@ -900,7 +900,7 @@

    backup

    -

    getting-users¶

    +

    getting-users¶

    Returns: 1 if the bot is currently downloading a userfile from a sharebot (and hence, user records are about to drastically change); 0 if not

    Module: core

    @@ -908,9 +908,9 @@

    getting-users -

    Channel Commands¶

    +

    Channel Commands¶

    -

    channel add <name> [option-list]¶

    +

    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

    @@ -918,7 +918,7 @@

    channel add <name> [option-list] -

    channel set <name> <options…>¶

    +

    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

    @@ -926,21 +926,21 @@

    channel set <name> <options…> -

    channel info <name>¶

    +

    channel info <name>¶

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

    Module: channels

    -

    channel get <name> [setting]¶

    +

    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>¶

    +

    channel remove <name>¶

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

    Returns: nothing

    @@ -948,7 +948,7 @@

    channel remove <name>

    -

    savechannels¶

    +

    savechannels¶

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

    Returns: nothing

    @@ -956,7 +956,7 @@

    savechannels -

    loadchannels¶

    +

    loadchannels¶

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

    Returns: nothing

    @@ -964,17 +964,17 @@

    loadchannels -

    channels¶

    +

    channels¶

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

    Module: channels

    -

    channame2dname <channel-name>¶

    +

    channame2dname <channel-name>¶

    -

    chandname2name <channel-dname>¶

    +

    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â€.

    For bot functions like isop, isvoice, etc. you need to know the chan dnames. If you communicate with the server, you usually get the chan name, though. That’s what you need the channame2dname function for.

    @@ -984,77 +984,77 @@

    chandname2name <channel-dname> -

    isbotnick <nick>¶

    +

    isbotnick <nick>¶

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

    Module: server

    -

    botisop [channel]¶

    +

    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]¶

    +

    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]¶

    +

    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]¶

    +

    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]¶

    +

    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]¶

    +

    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>¶

    +

    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>¶

    +

    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]¶

    +

    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]¶

    +

    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.

    @@ -1062,7 +1062,7 @@

    isidentified <nickname> [channel] -

    isaway <nickname> [channel]¶

    +

    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.

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

    @@ -1070,121 +1070,121 @@

    isaway <nickname> [channel] -

    isircbot <nickname> [channel]¶

    +

    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]¶

    +

    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 successfully 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¶

    +

    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).

    +

    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 selecting 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]¶

    +

    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]¶

    +

    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]¶

    +

    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]¶

    +

    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]¶

    +

    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]¶

    +

    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>¶

    +

    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>¶

    +

    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>¶

    +

    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>¶

    +

    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>¶

    +

    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>¶

    +

    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>¶

    +

    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

    @@ -1192,7 +1192,7 @@

    resetbans <channel>

    -

    resetexempts <channel>¶

    +

    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

    @@ -1200,7 +1200,7 @@

    resetexempts <channel> -

    resetinvites <channel>¶

    +

    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

    @@ -1208,7 +1208,7 @@

    resetinvites <channel> -

    resetchanidle [nick] <channel>¶

    +

    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

    @@ -1216,7 +1216,7 @@

    resetchanidle [nick] <channel> -

    resetchanjoin [nick] <channel>¶

    +

    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

    @@ -1224,7 +1224,7 @@

    resetchanjoin [nick] <channel> -

    resetchan <channel> [flags]¶

    +

    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:

    @@ -1251,7 +1251,7 @@

    resetchan <channel> [flags] -

    refreshchan <channel> [flags]¶

    +

    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:

    @@ -1281,51 +1281,51 @@

    refreshchan <channel> [flags] -

    getchanhost <nickname> [channel]¶

    +

    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>¶

    +

    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]¶

    +

    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]¶

    +

    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).

    +

    Description: lists all users on a channel Eggdrop has joined. 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.

    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>¶

    +

    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>¶

    +

    getchanmode <channel>¶

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

    Module: irc

    -

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

    +

    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

    @@ -1333,7 +1333,7 @@

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

    pushmode <channel> <mode> [arg]¶

    +

    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

    @@ -1341,7 +1341,7 @@

    pushmode <channel> <mode> [arg] -

    flushmode <channel>¶

    +

    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

    @@ -1349,14 +1349,14 @@

    flushmode <channel>

    -

    topic <channel>¶

    +

    topic <channel>¶

    Returns: string containing the current topic of the specified channel

    Module: irc

    -

    validchan <channel>¶

    +

    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

    @@ -1364,14 +1364,14 @@

    validchan <channel>

    -

    isdynamic <channel>¶

    +

    isdynamic <channel>¶

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

    Module: channels

    -

    setudef <flag/int/str> <name>¶

    +

    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

    @@ -1379,7 +1379,7 @@

    setudef <flag/int/str> <name> -

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

    +

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

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

    Returns: nothing

    @@ -1387,7 +1387,7 @@

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

    deludef <flag/int/str> <name>¶

    +

    deludef <flag/int/str> <name>¶

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

    Returns: nothing

    @@ -1395,21 +1395,21 @@

    deludef <flag/int/str> <name> -

    getudefs [flag/int/str]¶

    +

    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>¶

    +

    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]¶

    +

    isupport get [key]¶

    Description: - isupport get: Returns a flat key/value list (dict) of settings. @@ -1419,7 +1419,7 @@

    isupport get [key] -

    isupport isset <key>¶

    +

    isupport isset <key>¶

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

    Returns: 0 or 1

    @@ -1428,17 +1428,25 @@

    isupport isset <key>

    -

    DCC Commands¶

    +

    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>¶

    +

    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

    @@ -1446,7 +1454,7 @@

    dccbroadcast <message> -

    dccputchan <channel> <message>¶

    +

    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

    @@ -1454,7 +1462,7 @@

    dccputchan <channel> <message> -

    boot <user@bot> [reason]¶

    +

    boot <user@bot> [reason]¶

    Description: boots a user from the partyline

    Returns: nothing

    @@ -1462,7 +1470,7 @@

    boot <

    -

    dccsimul <idx> <text>¶

    +

    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

    @@ -1470,35 +1478,35 @@

    dccsimul <idx> <text> -

    hand2idx <handle>¶

    +

    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>¶

    +

    idx2hand <idx>¶

    Returns: handle of the user with the given idx

    Module: core

    -

    valididx <idx>¶

    +

    valididx <idx>¶

    Returns: 1 if the idx currently exists; 0 otherwise

    Module: core

    -

    getchan <idx>¶

    +

    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>¶

    +

    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

    @@ -1506,7 +1514,7 @@

    setchan <idx> <channel> -

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

    +

    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

    @@ -1514,7 +1522,7 @@

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

    resetconsole <idx>¶

    +

    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

    @@ -1522,7 +1530,7 @@

    resetconsole <idx>

    -

    echo <idx> [status]¶

    +

    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)

    @@ -1530,7 +1538,7 @@

    echo <idx> [status]

    -

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

    +

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

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

    @@ -1569,7 +1577,7 @@

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

    putbot <bot-nick> <message>¶

    +

    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

    @@ -1577,7 +1585,7 @@

    putbot <bot-nick> <message> -

    putallbots <message>¶

    +

    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

    @@ -1585,7 +1593,7 @@

    putallbots <message>

    -

    killdcc <idx>¶

    +

    killdcc <idx>¶

    Description: kills a partyline or file area connection

    Returns: nothing

    @@ -1593,14 +1601,14 @@

    killdcc <idx> -

    bots¶

    +

    bots¶

    Returns: list of the bots currently connected to the botnet

    Module: core

    -

    botlist¶

    +

    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:

    @@ -1623,21 +1631,21 @@

    botlist -

    islinked <bot>¶

    +

    islinked <bot>¶

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

    Module: core

    -

    dccused¶

    +

    dccused¶

    Returns: number of dcc connections currently in use

    Module: core

    -

    dcclist [type]¶

    +

    dcclist [type]¶

    Returns: a list of active connections, each item in the list is a sublist containing seven elements: {<idx> <handle> <hostname> <[+]port> <type> {<other>} <timestamp>}.

    @@ -1646,7 +1654,7 @@

    dcclist [type] -

    socklist [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:

    @@ -1691,28 +1699,28 @@

    socklist [type] -

    whom <chan>¶

    +

    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.

    Module: core

    -

    getdccidle <idx>¶

    +

    getdccidle <idx>¶

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

    Module: core

    -

    getdccaway <idx>¶

    +

    getdccaway <idx>¶

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

    Module: core

    -

    setdccaway <idx> <message>¶

    +

    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

    @@ -1720,7 +1728,7 @@

    setdccaway <idx> <message> -

    connect <host> <[+]port>¶

    +

    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

    @@ -1728,7 +1736,7 @@

    connect <host> <[+]port> -

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

    +

    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.

    @@ -1762,7 +1770,7 @@

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

    -

    dccdumpfile <idx> <filename>¶

    +

    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

    @@ -1771,9 +1779,9 @@

    dccdumpfile <idx> <filename> -

    Notes Module¶

    +

    Notes Module¶

    -

    notes <user> [numberlist]¶

    +

    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:

    {<from> <timestamp> <note text>}
    @@ -1783,7 +1791,7 @@ 

    notes <user> [numberlist] -

    erasenotes <user> <numberlist>¶

    +

    erasenotes <user> <numberlist>¶

    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.

    @@ -1791,7 +1799,7 @@

    erasenotes <user> <numberlist> -

    listnotes <user> <numberlist>¶

    +

    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.

    @@ -1799,7 +1807,7 @@

    listnotes <user> <numberlist> -

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

    +

    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

    @@ -1808,9 +1816,9 @@

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

    Assoc Module¶

    +

    Assoc Module¶

    -

    assoc <chan> [name]¶

    +

    assoc <chan> [name]¶

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

    Returns: current name for that channel, if any

    @@ -1818,7 +1826,7 @@

    assoc <chan> [name]

    -

    killassoc <chan>¶

    +

    killassoc <chan>¶

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

    Returns: nothing

    @@ -1827,14 +1835,14 @@

    killassoc <chan> -

    Compress Module¶

    +

    Compress Module¶

    -

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

    +

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

    -

    and¶

    +

    and¶

    -

    uncompressfile <src-file> [target-file]¶

    +

    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

    @@ -1843,7 +1851,7 @@

    uncompressfile <src-file> [target-file] -

    iscompressed <filename>¶

    +

    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.

    @@ -1852,9 +1860,9 @@

    iscompressed <filename> -

    Filesys Module¶

    +

    Filesys Module¶

    -

    setpwd <idx> <dir>¶

    +

    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

    @@ -1862,28 +1870,28 @@

    setpwd <idx> <dir>

    -

    getpwd <idx>¶

    +

    getpwd <idx>¶

    Returns: the current directory of a file system user

    Module: filesys

    -

    getfiles <dir>¶

    +

    getfiles <dir>¶

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

    Module: filesys

    -

    getdirs <dir>¶

    +

    getdirs <dir>¶

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

    Module: filesys

    -

    dccsend <filename> <ircnick>¶

    +

    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:

    @@ -1906,8 +1914,7 @@

    dccsend <filename> <ircnick>

    - +

    5

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

    the file could not be opened or temporary file could not be created

    @@ -1915,7 +1922,7 @@

    dccsend <filename> <ircnick> -

    filesend <idx> <filename> [ircnick]¶

    +

    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)

    @@ -1923,7 +1930,7 @@

    filesend <idx> <filename> [ircnick] -

    fileresend <idx> <filename> [ircnick]¶

    +

    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)

    @@ -1931,7 +1938,7 @@

    fileresend <idx> <filename> [ircnick]

    -

    setdesc <dir> <file> <desc>¶

    +

    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

    @@ -1939,14 +1946,14 @@

    setdesc <dir> <file> <desc> -

    getdesc <dir> <file>¶

    +

    getdesc <dir> <file>¶

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

    Module: filesys

    -

    setowner <dir> <file> <handle>¶

    +

    setowner <dir> <file> <handle>¶

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

    Returns: nothing

    @@ -1954,14 +1961,14 @@

    setowner <dir> <file> <handle> -

    getowner <dir> <file>¶

    +

    getowner <dir> <file>¶

    Returns: the owner of a file in the file system

    Module: filesys

    -

    getfileq <handle>¶

    +

    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>¶

    +

    getfilesendtime <idx>¶

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

    @@ -2000,7 +2007,7 @@

    getfilesendtime <idx>
    -

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

    +

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

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

    Returns:

    @@ -2024,7 +2031,7 @@

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

    rmdir <directory>¶

    +

    rmdir <directory>¶

    Description: removes a directory from the file system.

    Returns: 0 on success; 1 on failure

    @@ -2032,7 +2039,7 @@

    rmdir <directory> -

    mv <file> <destination>¶

    +

    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:

    @@ -2056,7 +2063,7 @@

    mv <file> <destination> -

    cp <file> <destination>¶

    +

    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:

    @@ -2080,14 +2087,14 @@

    cp <file> <destination> -

    getflags <dir>¶

    +

    getflags <dir>¶

    Returns: the flags required to access a directory

    Module: filesys

    -

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

    +

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

    Description: sets the flags required to access a directory

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

    @@ -2096,9 +2103,9 @@

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

    Miscellaneous Commands¶

    +

    Miscellaneous Commands¶

    -

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

    +

    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

    @@ -2106,7 +2113,7 @@

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

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

    +

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

    Description: removes a previously created bind

    Returns: name of the command that was removed

    @@ -2114,9 +2121,10 @@

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

    -

    binds [type/mask]¶

    +

    binds [type/mask]¶

    -
    +

    Description: By default, lists Tcl binds registered with the Eggdrop. You can specify ‘all’ to view all binds, ‘tcl’ to view Tcl binds, and ‘python’ to view Python binds. Alternately, you can specify a bind type (pub, msg, etc) to view all binds that match that type of bind, or a mask that is matched against the command associated with the bind.

    +
    Returns: a list of Tcl binds, each item in the list is a sublist of five elements:

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

    @@ -2124,7 +2132,7 @@

    binds [type/mask] -

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

    +

    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:

    @@ -2191,7 +2199,7 @@

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

    maskhost <nick!user@host> [masktype]¶

    +

    maskhost <nick!user@host> [masktype]¶

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

    Available types are:

    @@ -2238,7 +2246,7 @@

    maskhost < -

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

    +

    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

    @@ -2246,7 +2254,7 @@

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

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

    +

    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

    @@ -2254,7 +2262,7 @@

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

    timers¶

    +

    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.

    @@ -2262,7 +2270,7 @@

    timers

    -

    utimers¶

    +

    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.

    @@ -2270,7 +2278,7 @@

    utimers -

    killtimer <timerName>¶

    +

    killtimer <timerName>¶

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

    Returns: nothing

    @@ -2278,7 +2286,7 @@

    killtimer <timerName>

    -

    killutimer <timerName>¶

    +

    killutimer <timerName>¶

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

    Returns: nothing

    @@ -2286,49 +2294,49 @@

    killutimer <timerName> -

    unixtime¶

    +

    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>¶

    +

    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]¶

    +

    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>¶

    +

    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¶

    +

    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>¶

    +

    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>¶

    +

    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

    @@ -2336,7 +2344,7 @@

    control <idx> <command> -

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

    +

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

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

    Returns:

    @@ -2366,7 +2374,7 @@

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

    link [via-bot] <bot>¶

    +

    link [via-bot] <bot>¶

    Description: attempts to link to another bot directly. If you specify a via-bot, it tells the via-bot to attempt the link.

    Returns: 1 if the link will be attempted; 0 otherwise

    @@ -2374,7 +2382,7 @@

    link [via-bot] <bot>

    -

    encrypt <key> <string>¶

    +

    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>¶

    +

    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>¶

    +

    encpass <password>¶

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

    Module: encryption

    -

    die [reason]¶

    +

    die [reason]¶

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

    Returns: none

    @@ -2411,14 +2419,14 @@

    die [reason] -

    unames¶

    +

    unames¶

    Returns: the current operating system the bot is using

    Module: core

    -

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

    +

    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:

    @@ -2431,14 +2439,14 @@

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

    -

    md5 <string>¶

    +

    md5 <string>¶

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

    Module: core

    -

    callevent <event>¶

    +

    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

    @@ -2446,21 +2454,21 @@

    callevent <event> -

    traffic¶

    +

    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¶

    +

    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>¶

    +

    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.

    @@ -2468,7 +2476,7 @@

    loadmodule <module>

    -

    unloadmodule <module>¶

    +

    unloadmodule <module>¶

    Description: attempts to unload the specified module.

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

    @@ -2476,7 +2484,7 @@

    unloadmodule <module>

    -

    loadhelp <helpfile-name>¶

    +

    loadhelp <helpfile-name>¶

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

    Returns: nothing

    @@ -2484,7 +2492,7 @@

    loadhelp <helpfile-name> -

    unloadhelp <helpfile-name>¶

    +

    unloadhelp <helpfile-name>¶

    Description: attempts to unload the specified help file.

    Returns: nothing

    @@ -2492,7 +2500,7 @@

    unloadhelp <helpfile-name> -

    reloadhelp¶

    +

    reloadhelp¶

    Description: reloads the bot’s help files.

    Returns: nothing

    @@ -2500,7 +2508,7 @@

    reloadhelp -

    restart¶

    +

    restart¶

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

    Returns: nothing

    @@ -2508,7 +2516,7 @@

    restart -

    rehash¶

    +

    rehash¶

    Description: rehashes the bot

    Returns: nothing

    @@ -2516,7 +2524,7 @@

    rehash

    -

    stripcodes <strip-flags> <string>¶

    +

    stripcodes <strip-flags> <string>¶

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

    @@ -2555,7 +2563,7 @@

    stripcodes <strip-flags> <string> -

    matchaddr <hostmask> <address>¶

    +

    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.

    @@ -2563,7 +2571,7 @@

    matchaddr <hostmask> <address> -

    matchcidr <block> <address> <prefix>¶

    +

    matchcidr <block> <address> <prefix>¶

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

    Example: matchcidr 192.168.0.0 192.168.1.17 16

    @@ -2572,7 +2580,7 @@

    matchcidr <block> <address> <prefix>

    -

    matchstr <pattern> <string>¶

    +

    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.

    @@ -2580,7 +2588,7 @@

    matchstr <pattern> <string> -

    rfcequal <string1> <string2>¶

    +

    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.

    @@ -2588,7 +2596,7 @@

    rfcequal <string1> <string2> -

    status [type]¶

    +

    status [type]¶

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

    @@ -2612,7 +2620,7 @@

    status [type] -

    istls <idx>¶

    +

    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.

    @@ -2620,7 +2628,7 @@

    istls <idx> -

    starttls <idx>¶

    +

    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

    @@ -2628,7 +2636,7 @@

    starttls <idx> -

    tlsstatus <idx>¶

    +

    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

    @@ -2637,45 +2645,45 @@

    tlsstatus <idx> -

    Global Variables¶

    +

    Global Variables¶

    NOTE: All config file variables are also global.

    -

    botnick¶

    +

    botnick¶

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

    Module: server

    -

    botname¶

    +

    botname¶

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

    Module: server

    -

    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¶

    +

    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¶

    +

    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*¶

    +

    numversion*¶

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

    @@ -2698,56 +2706,56 @@

    numversion* -

    uptime¶

    +

    uptime¶

    Value: the unixtime value for when the bot was started

    Module: core

    -

    server-online¶

    +

    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¶

    +

    lastbind¶

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

    Module: core

    -

    isjuped¶

    +

    isjuped¶

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

    Module: server

    -

    handlen¶

    +

    handlen¶

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

    Module: core

    -

    config¶

    +

    config¶

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

    Module: core

    -

    configureargs¶

    +

    configureargs¶

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

    Module: core

    -

    language¶

    +

    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

    @@ -2755,20 +2763,20 @@

    language -

    Binds¶

    +

    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¶

    +

    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¶

    +

    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.

    +

    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.

    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:

    @@ -2830,7 +2838,7 @@

    Flag Masks -

    Bind Types¶

    +

    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. @@ -3078,7 +3086,7 @@

      Bind Types

    +
    +

    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¶

    +

    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:

      @@ -3439,7 +3457,7 @@

      Return Values -

      Control Procedures¶

      +

      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 connection is sent to the proc you specify. All outgoing text should @@ -3461,7 +3479,7 @@

      Control Procedures -

      TCP Connections¶

      +

      TCP Connections¶

      Eggdrop allows you to make two types of TCP (“telnetâ€) connections: outgoing and incoming. For an outgoing connection, you specify the remote host and port to connect to. For an incoming connection, you @@ -3522,7 +3540,7 @@

      TCP Connections -

      Match Characters¶

      +

      Match Characters¶

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

    @@ -3548,7 +3566,7 @@

    TCP Connections
    diff --git a/doc/html/using/text-sub.html b/doc/html/using/text-sub.html index 0f1a11190..7bac99298 100644 --- a/doc/html/using/text-sub.html +++ b/doc/html/using/text-sub.html @@ -1,17 +1,16 @@ - - + - + Textfile Substitutions — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -99,7 +99,7 @@

    Search

    Textfile Substitutions Last revised: March 08, 2002

    -

    Textfile Substitutions¶

    +

    Textfile Substitutions¶

    These %-variables can be inserted into help files, the banner, the MOTD, and other text files. There are four variables that can be used to format text:

    @@ -130,8 +130,8 @@

    Textfile Substitutions

    current Eggdrop version (i.e. “eggdrop v1.9.5â€)

    - + @@ -190,7 +190,7 @@

    Textfile Substitutions

    %E

    long form of %V (i.e. “Eggdrop v1.9.5 (C) 1997 Robey -Pointer (C) 2010 Eggheads Development Teamâ€)

    long form of %V (i.e. “Eggdrop v1.9.5 (C) 1997 +Robey Pointer (C) 2010 Eggheads Development Teamâ€)

    %C

    channels the bot is on (i.e. “#lamest, #botnetcentralâ€)

    -

    Copyright (C) 1999 - 2023 Eggheads Development Team

    +

    Copyright (C) 1999 - 2024 Eggheads Development Team

    @@ -220,9 +220,9 @@

    Textfile Substitutions

    diff --git a/doc/html/using/tls.html b/doc/html/using/tls.html index 55eb28a60..c326c0dd1 100644 --- a/doc/html/using/tls.html +++ b/doc/html/using/tls.html @@ -1,17 +1,16 @@ - - + - + TLS support — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -106,18 +106,18 @@

    Search

    TLS support Last revised: Jan 26, 2020

    -

    TLS support¶

    +

    TLS support¶

    This document provides information about TLS support which is a new eggdrop feature since version 1.8.0.

    -

    About¶

    +

    About¶

    Eggdrop can be optionally compiled with TLS support. This requires OpenSSL 0.9.8 or more recent installed on your system. TLS support includes encryption for IRC, DCC, botnet, telnet and scripted connections as well as certificate authentication for users and bots.

    -

    Installation¶

    +

    Installation¶

    ./configure and install as usual, the configure script will detect if your system meets the requirements and will enable TLS automatically. You can override the autodetection and manually disable TLS with @@ -130,7 +130,7 @@

    Installation -

    Usage¶

    +

    Usage¶

    As of v1.9.0, TLS support must be requested explicitly for botnet links. To create a TLS-enabled listening port or connect to a TLS-enabled listening port, you must prefix the port with a plus sign (+). If a port number could @@ -143,7 +143,7 @@

    Usage additional configuration (This was changed to provide users the flexibility to configure their own environments and assist in debugging).

    -

    IRC¶

    +

    IRC¶

    To connect to IRC using SSL, specify the port number and prefix it with a plus sign. Example: .jump irc.server.com +6697. The same goes for the server list in the config file.

    @@ -152,7 +152,7 @@

    IRC¶

    -

    Botnet¶

    +

    Botnet¶

    Eggdrop can use TLS connections to protect botnet links if it is compiled with TLS support. As of version 1.9.0, only raw TLS sockets are used to protect a connection. By prefixing a listen port in the Eggdrop configuration with a plus (+), that specifies that port as a TLS-enabled port, and will only accept TLS connections (no plain text connections will be allowed). With two TLS-enabled Eggdrops, it graphically looks like this:

    @@ -185,7 +185,7 @@

    BotnetEggdrop can also upgrade a plaintext connection with the starttls Tcl command. To use this, a plaintext connection is first made to a non-TLS port (ie, one that is not prefixed with a plus), then the starttls command is issued to upgrade that link to a TLS connection. In the Eggdrop 1.8 series, Eggdrop automatically attempted a starttls upgrade on all botnet connections. As such, if a 1.8 Eggdrop connects to a plain listening port on a 1.9.0 or later Eggdrop, it will automatically attempt to upgrade the link to TLS.

    -

    Secure DCC¶

    +

    Secure DCC¶

    Eggdrop supports the SDCC protocol, allowing you to establish DCC chat and file transfers over SSL. Example: /ctcp bot schat Note, that currently the only IRC client supporting SDCC is KVIrc. For @@ -193,7 +193,7 @@

    Secure DCC -

    Scripts¶

    +

    Scripts¶

    Scripts can open or connect to TLS ports the usual way specifying the port with a plus sign. Alternatively, the connection could be established as plaintext and later switched on with the starttls Tcl @@ -202,7 +202,7 @@

    Scripts -

    Keys, certificates and authentication¶

    +

    Keys, certificates and authentication¶

    You need a private key and a digital certificate whenever your bot will act as a server in a connection of any type. Common examples are hub bots and TLS listening ports. General information about certificates and @@ -233,7 +233,7 @@

    Keys, certificates and authentication -

    SSL/TLS Settings¶

    +

    SSL/TLS Settings¶

    There are some new settings allowing control over certificate verification and authorization.

    @@ -294,7 +294,7 @@

    SSL/TLS Settings
    diff --git a/doc/html/using/tricks.html b/doc/html/using/tricks.html index a429394fc..409db4a2a 100644 --- a/doc/html/using/tricks.html +++ b/doc/html/using/tricks.html @@ -1,17 +1,16 @@ - - + - + Advanced Tips — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -107,10 +107,10 @@

    Search

    Eggdrop Tricks Last revised: Jun 02, 2021

    -

    Advanced Tips¶

    +

    Advanced Tips¶

    Here are some little tricks that you may or may not know about, which aren’t documented in other areas.

    -

    Renaming commands¶

    +

    Renaming commands¶

    You can rename a built-in command by binding over it. To rename ‘.status’ to ‘.report’, you’d do:

    unbind dcc - status *dcc:status
     bind dcc m report *dcc:status
    @@ -119,30 +119,30 @@ 

    Renaming commands -

    Keeping Logs¶

    +

    Keeping Logs¶

    If you don’t want your logfiles to be deleted after two days and don’t want the bot to create a new logfile each new day, then set ‘keep-all-logs’ to 0 and ‘switch-logfiles-at’ to 2500 in your bot’s config file to make it keeping one logfile all the time. This is not recommended on high traffic channels.

    -

    Self-logging¶

    +

    Self-logging¶

    Because of how traditional IRC works, Eggdrop doesn’t capture outgoing messages to its logfile. However, if the server you are on supports the IRCv3 capability “echo-messageâ€, you can request this capability to be enabled by the server in your config file. This will cause the server to send Eggdrop’d public messages back, thereby allowing those messages to be logged.

    -

    Modifying Default Strings¶

    +

    Modifying Default Strings¶

    You can modify Eggdrop’s output in the partyline, kick messages, and other texts by editing core.english.lang in the language directory.

    -

    Modularizing Your Config File¶

    +

    Modularizing Your Config File¶

    You can export parts of your config file to separate files. For example, if you have several config files which differ from themselves only by the nickname and the used servers, you can export them to an own file and link it with the ‘source’ Tcl command, similar to a script. The advantage of this is that you have to edit/upload only the small file instead of the big one. This technique is also useful if you want to maintain the same channel settings, etc across your botnet.

    -

    Variables in Your Config¶

    +

    Variables in Your Config¶

    You can use variables in your config file, since it’s really just a normal Tcl file. For example, you can set ‘userfile’ and ‘chanfile’ to “yourbot.user†and “yourbot.chan†using the following method:

    set myvar "yourbot"
     set userfile "$myvar.user"
     set chanfile "$myvar.chan"
     
    -

    Copyright (C) 1999 - 2023 Eggheads Development Team

    +

    Copyright (C) 1999 - 2024 Eggheads Development Team

    @@ -172,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 4b6d3978a..769757da4 100644 --- a/doc/html/using/twitch-tcl-commands.html +++ b/doc/html/using/twitch-tcl-commands.html @@ -1,17 +1,16 @@ - - + - + Eggdrop Twitch Tcl Commands — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -103,7 +103,7 @@

    Search

    Eggdrop Twitch Tcl Commands Last revised: April 25, 2020

    -

    Eggdrop Twitch Tcl Commands¶

    +

    Eggdrop Twitch Tcl Commands¶

    This is an exhaustive list of all the Twitch-specific Tcl commands added to Eggdrop. These commands are held separate from the traditional tcl-commands.doc due to the unique nature of Twitch and the fact that these commands WILL NOT @@ -119,9 +119,9 @@

    Eggdrop Twitch Tcl Commands -

    Commands¶

    +

    Commands¶

    -

    twcmd <chan> <cmd> [arg]¶

    +

    twcmd <chan> <cmd> [arg]¶

    Description: sends cmd to the server, prefixed with a ‘/’. This is replicates the web UI functionality of sending commands such as /vip or /subscribers. Do @@ -131,42 +131,42 @@

    twcmd <chan> <cmd> [arg] -

    userstate <channel>¶

    +

    userstate <channel>¶

    Description: provides current userstate for the Eggdrop on the given channel.

    Returns: a dict containing key/value pairs for userstate values.

    -

    roomstate <channel>¶

    +

    roomstate <channel>¶

    Description: provides current roomstate of a channel Eggdrop is on.

    Returns: a dict containing key/value pairs for roomstate values.

    -

    twitchmods <channel>¶

    +

    twitchmods <channel>¶

    Description: maintains a list of usernames provided by Twitch as those that have moderator status on the provided channel. This list is refreshed upon join, or can manually be refreshed by using the Tcl twcmd to issue a /mods Twitch command. This list is a comprehensive list, the user does not need to be present on the channel to be included on this list.

    Returns: A list of usernames designated as having moderator status by Twitch.

    -

    twitchvips <channel>¶

    +

    twitchvips <channel>¶

    Description: maintains a list of usernames provided by Twitch as those that have VIP status on the provided channel. This list is refreshed upon join, or can manually be refreshed by using the Tcl twcmd to issue a /vips Twitch command. This list is a comprehensive list, the user does not need to be present on the channel to be included on this list.

    Returns: A list of usernames designated as having VIP status by Twitch.

    -

    ismod <nick> [channel]¶

    +

    ismod <nick> [channel]¶

    Description: checks if a user is on the moderator list maintained by Twitch (the same list accessible by the /mods command entered via the Twith web GUI). This differs from the other “normal†is* Eggdrop Tcl cmds, as this does NOT check if the user is currently on the channel (that status is unreliable on Twitch IRC).

    Returns: 1 if someone by the specified nickname is on the moderator list for the channel (or any channel if no channel name is specified); 0 otherwise.

    -

    isvip <nick> [channel]¶

    +

    isvip <nick> [channel]¶

    Description: checks if a user is on the VIP list maintained by Twitch (the same list accessible by the /vips command entered via the Twith web GUI). This differs from the other “normal†is* Eggdrop Tcl cmds, as this does NOT check if the user is currently on the channel (that status is unreliable on Twitch IRC).

    Returns: 1 if someone by the specified nickname is on the VIP list for the channel (or any channel if no channel name is specified); 0 otherwise.

    @@ -174,7 +174,7 @@

    isvip <nick> [channel]

    -

    Binds¶

    +

    Binds¶

    You can use the ‘bind’ command to attach Tcl procedures to certain events. The binds listed here are in addition to the binds listed in tcl-commands.doc.

    Because Twitch offers an IRC gateway that significantly reduces traditional IRC @@ -184,7 +184,7 @@

    Binds

    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’.

    -

    Flags¶

    +

    Flags¶

    Most of the following binds have “flags†listed as an argument for the bind. Flags represents a flagmask that the user, if found, must match in order for the bind to trigger. Example flag masks are:

    @@ -207,7 +207,7 @@

    Flags

    -

    Bind Types¶

    +

    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. CCHT (CLEARCHAT)

    2. @@ -303,9 +303,9 @@

      Bind Types

    diff --git a/doc/html/using/twitchinfo.html b/doc/html/using/twitchinfo.html index 6a3200e8b..9a5eb698e 100644 --- a/doc/html/using/twitchinfo.html +++ b/doc/html/using/twitchinfo.html @@ -1,17 +1,16 @@ - - + - + Twitch — Eggdrop 1.9.5 documentation - - - - - + + + + + @@ -45,6 +44,7 @@

    Table of Contents

  • Eggdrop Features
  • Eggdrop Core Settings
  • The Party Line
  • +
  • Eggdrop Autoscripts
  • Users and Flags
  • Bans, Invites, and Exempts
  • Botnet Sharing and Linking
  • @@ -104,7 +104,7 @@

    Search

    -

    Twitch¶

    +

    Twitch¶

    This module attempts to provide connectivity with the Twitch gaming platform. While Twitch provides an IRC gateway to connect with it’s streaming service, it does not claim to (and certainly does not) follow the IRC RFC in any meaningful way. The intent of this module is not to provide the full spectrum of management functions typically associated with Eggdrop; instead it focuses around the following key functions:

    -

    Disclaimer¶

    +

    Disclaimer¶

    We should also make clear that Eggdrop is in no way affiliated with Twitch in any way, and Twitch fully controls their own platform, to include the IRC gateway. This was just a fun project implemented at the request of some users to interact with the Twitch IRC development gateway as it existed at the time of development. At any time, Twitch could choose to alter or discontinue their IRC connectivity, thereby rendering this Eggdrop module useless. Eggdrop developers are also unable to offer technical support for Twitch-specific issues encountered while using this module.

    -

    Registering with Twitch¶

    +

    Registering with Twitch¶

    1. Register an account with Twitch. At the time of writing, this is done by visiting Twitch and clicking on the Sign Up button.

    2. Generate a token to authenticate your bot with Twitch. At the time of writing, this is done by visiting the Twitch OAuth generator while logged in to the account you just created. The token will be an alphanumeric string and should be treated like a password (…because it is). Make note of it, and keep it safe!

    -

    Editing the config file¶

    +

    Editing the config file¶

    1. Find the options to add a server in the server section of the config file. Remove the sample servers listed and add the following line in their place, replacing the alphanumeric string after ‘oauth:’ with the token you created when registering with Twitch in the previous section. Pretending your Twitch token from the previous step is ‘j9irk4vs28b0obz9easys4w2ystji3u’, it should look like this:

      server add irc.chat.twitch.tv 6667 oauth:j9irk4vs28b0obz9easys4w2ystji3u
      @@ -143,11 +143,11 @@ 

      Editing the config file

    -

    Twitch web UI functions¶

    +

    Twitch web UI functions¶

    Twitch is normally accessed via a web UI, and uses commands prefixed with a . or a / to interact with the channel. The Twitch module adds the partyline command twcmd to replicate those Twitch-specific commands. For example, to grant VIP status to a user via Tcl, you would use the command .twcmd vip username. or to restrict chat to subscribers, you would use .twcmd subscribers (Note: no . or / is needed as a prefix to the Twitch command). In other words, .twcmd in Tcl is the interface to the standard Twitch set of commands available through the web UI (Also available as a Tcl command).

    -

    Twitch IRC limitations¶

    +

    Twitch IRC limitations¶

    There are a few things you should know about how Twitch provides service through the IRC gateway that affects how well Eggdrop can function:

    diff --git a/doc/html/using/users.html b/doc/html/using/users.html index 6f478e43a..fa526e3df 100644 --- a/doc/html/using/users.html +++ b/doc/html/using/users.html @@ -1,27 +1,26 @@ - - + - + Users and Flags — Eggdrop 1.9.5 documentation - - - - - + + + + + - +