From 132f7b3b247bf93e59be9050d15e46fcb4d8a7a1 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Nov 2021 11:55:33 +0000 Subject: [PATCH 001/320] Add an AlertNotifier callback function Found by: michaelortmann Patch by: michaelortmann Fixes: #515 Fixes: #1031 --- src/tcl.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/tcl.c b/src/tcl.c index 53ea8b9f6..20d80a72c 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -588,6 +588,12 @@ ClientData tickle_InitNotifier() return NULL; } +void tickle_AlertNotifier(ClientData cd) +{ + if (cd) + putlog(LOG_MISC, "*", "stub tickle_AlertNotifier"); +} + int tclthreadmainloop(int zero) { int i; @@ -654,6 +660,7 @@ void init_tcl(int argc, char **argv) notifierprocs.setTimerProc = tickle_SetTimer; notifierprocs.waitForEventProc = tickle_WaitForEvent; notifierprocs.finalizeNotifierProc = tickle_FinalizeNotifier; + notifierprocs.alertNotifierProc = tickle_AlertNotifier; Tcl_SetNotifier(¬ifierprocs); #endif /* REPLACE_NOTIFIER */ From d6f53d9a6a9b07dc92b4beb43bb7baad677b5fb8 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 6 Nov 2021 09:07:52 -0400 Subject: [PATCH 002/320] RAWT blocks RAW Found by: DasBrain Patch by: Geo, thommey Fixes: #1164 Docs state RAW and RAWT binds should block any further processing, but because they were both called, if one returned a 1, the other might not, and the line would still be processed further. This PR gives precedence to the RAWT bind over a RAW bind (in other words, if the RAWT bind returns a 1, the RAW bind will not be processed. If a RAW bind returns a 1, the RAWT still triggers). If a user encounters issues with this, it is suggested to switch their RAW binds to RAWT binds. --- doc/sphinx_source/mainDocs/tcl-commands.rst | 4 ++-- src/mod/server.mod/servmsg.c | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/sphinx_source/mainDocs/tcl-commands.rst b/doc/sphinx_source/mainDocs/tcl-commands.rst index b1b81d9bc..444fdba89 100644 --- a/doc/sphinx_source/mainDocs/tcl-commands.rst +++ b/doc/sphinx_source/mainDocs/tcl-commands.rst @@ -3109,7 +3109,7 @@ The following is a list of bind types and how they work. Below each bind type is IMPORTANT: While not necessarily deprecated, this bind has been supplanted by the RAWT bind as of 1.9.0. You probably want to be using RAWT, not RAW. - Description: previous versions of Eggdrop required a special compile option to enable this binding, but it's now standard. The keyword is either a numeric, like "368", or a keyword, such as "PRIVMSG". "from" will be the server name or the source user (depending on the keyword); flags are ignored. The order of the arguments is identical to the order that the IRC server sends to the bot. The pre-processing only splits it apart enough to determine the keyword. If the proc returns 1, Eggdrop will not process the line any further (this could cause unexpected behavior in some cases). The RAW bind does not support the IRCv3 message-tags capability, please see RAWT for more information. + Description: previous versions of Eggdrop required a special compile option to enable this binding, but it's now standard. The keyword is either a numeric, like "368", or a keyword, such as "PRIVMSG". "from" will be the server name or the source user (depending on the keyword); flags are ignored. The order of the arguments is identical to the order that the IRC server sends to the bot. The pre-processing only splits it apart enough to determine the keyword. If the proc returns 1, Eggdrop will not process the line any further (this could cause unexpected behavior in some cases), although RAWT binds are processed before RAW binds (and thus, a RAW bind cannot block a RAWT bind). The RAW bind does not support the IRCv3 message-tags capability, please see RAWT for more information. Module: server @@ -3486,7 +3486,7 @@ The following is a list of bind types and how they work. Below each bind type is procname - Description: similar to the RAW bind, but allows an extra field for the IRCv3 message-tags capability. The keyword is either a numeric, like "368", or a keyword, such as "PRIVMSG" or "TAGMSG". "from" will be the server name or the source user (depending on the keyword); flags are ignored. "tag" will be the contents, if any, of the entire tag message prefixed to the server message in a dict format, such as "msgid 890157217279768 aaa bbb". The order of the arguments is identical to the order that the IRC server sends to the bot. If the proc returns 1, Eggdrop will not process the line any further (this could cause unexpected behavior in some cases). As of 1.9.0, it is recommended to use the RAWT bind instead of the RAW bind. + Description: similar to the RAW bind, but allows an extra field for the IRCv3 message-tags capability. The keyword is either a numeric, like "368", or a keyword, such as "PRIVMSG" or "TAGMSG". "from" will be the server name or the source user (depending on the keyword); flags are ignored. "tag" will be the contents, if any, of the entire tag message prefixed to the server message in a dict format, such as "msgid 890157217279768 aaa bbb". The order of the arguments is identical to the order that the IRC server sends to the bot. If the proc returns 1, Eggdrop will not process the line any further, to include not being processed by a RAW bind (this could cause unexpected behavior in some cases). As of 1.9.0, it is recommended to use the RAWT bind instead of the RAW bind. (53) ACCOUNT (stackable) diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index 1bc5c5efa..27fd014e2 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -1135,7 +1135,7 @@ static void server_activity(int idx, char *tagmsg, int len) char *from, *code, *s1, *s2, *saveptr1=NULL, *saveptr2=NULL, *tagstrptr=NULL; char *token, *subtoken, tagstr[TOTALTAGMAX+1], tagdict[TOTALTAGMAX+1] = ""; char *msgptr, rawmsg[RECVLINEMAX+7]; - int taglen, i, found; + int taglen, i, found, ret; if (trying_server) { strcpy(dcc[idx].nick, "(server)"); @@ -1194,9 +1194,11 @@ static void server_activity(int idx, char *tagmsg, int len) putlog(LOG_RAW, "*", "[@] %s", rawmsg); } /* Check both raw and rawt, to allow backwards compatibility with older - * scripts */ - check_tcl_rawt(from, code, msgptr, tagdict); - check_tcl_raw(from, code, msgptr); + * scripts. If rawt returns 1 (blocking), don't process raw binds.*/ + ret = check_tcl_rawt(from, code, msgptr, tagdict); + if (!ret) { + check_tcl_raw(from, code, msgptr); + } } static int gotping(char *from, char *msg) From 247c6a58e43399a05a7a6db94a35b3196a816279 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 27 Nov 2021 15:36:52 +0000 Subject: [PATCH 003/320] prevent race in threaded dns Found by: michaelortmann Patch by: michaelortmann --- src/dns.c | 2 ++ src/eggdrop.h | 1 + src/net.c | 10 ++++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/dns.c b/src/dns.c index 1d7d5ad16..f49dfc103 100644 --- a/src/dns.c +++ b/src/dns.c @@ -543,8 +543,10 @@ void *thread_dns_ipbyhost(void *arg) #endif freeaddrinfo(res0); } + pthread_mutex_lock(&dtn->mutex); dtn->ok = !i; close(dtn->fildes[1]); + pthread_mutex_unlock(&dtn->mutex); return NULL; } diff --git a/src/eggdrop.h b/src/eggdrop.h index 5b8c8d045..21e1f175f 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -788,6 +788,7 @@ enum { /* linked list instead of array because of multi threading */ struct dns_thread_node { + pthread_mutex_t mutex; int fildes[2]; int type; sockname_t addr; diff --git a/src/net.c b/src/net.c index 9a25e3a91..52a6efa8c 100644 --- a/src/net.c +++ b/src/net.c @@ -1034,10 +1034,16 @@ int sockread(char *s, int *len, sock_list *slist, int slistmax, int tclonly) for (dtn = dtn_prev->next; dtn; dtn = dtn->next) { fd = dtn->fildes[0]; if (FD_ISSET(fd, &fdr)) { - if (dtn->type == DTN_TYPE_HOSTBYIP) + if (dtn->type == DTN_TYPE_HOSTBYIP) { + pthread_mutex_lock(&dtn->mutex); call_hostbyip(&dtn->addr, dtn->host, dtn->ok); - else + pthread_mutex_unlock(&dtn->mutex); + } + else { + pthread_mutex_lock(&dtn->mutex); call_ipbyhost(dtn->host, &dtn->addr, dtn->ok); + pthread_mutex_unlock(&dtn->mutex); + } close(dtn->fildes[0]); dtn_prev->next = dtn->next; nfree(dtn); From 57baf6c50e09ccb8a63048943dc0ee85040901d5 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 27 Nov 2021 10:49:38 -0500 Subject: [PATCH 004/320] Add values argument to Tcl cap command Found by: thommey Patch by: Geo New Tcl option lists values associated with each capability in a variety of formats --- doc/sphinx_source/mainDocs/tcl-commands.rst | 10 ++--- src/mod/server.mod/tclserv.c | 41 ++++++++++++++++++++- 2 files changed, 45 insertions(+), 6 deletions(-) diff --git a/doc/sphinx_source/mainDocs/tcl-commands.rst b/doc/sphinx_source/mainDocs/tcl-commands.rst index 444fdba89..d9f21b13f 100644 --- a/doc/sphinx_source/mainDocs/tcl-commands.rst +++ b/doc/sphinx_source/mainDocs/tcl-commands.rst @@ -156,13 +156,13 @@ clearqueue Module: server -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -cap [arg] -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +cap [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, "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, and 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"]. + 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; otherwise nothing. + 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. Module: server diff --git a/src/mod/server.mod/tclserv.c b/src/mod/server.mod/tclserv.c index 83acdf91d..d58b70003 100644 --- a/src/mod/server.mod/tclserv.c +++ b/src/mod/server.mod/tclserv.c @@ -266,8 +266,10 @@ static int tcl_tagmsg STDVAR { /* Tcl interface to send CAP messages to server */ static int tcl_cap STDVAR { char s[CAPMAX]; + int found = 0; struct capability *current; - Tcl_Obj *capes; + struct cap_values *currentvalue; + Tcl_Obj *capes, *values; BADARGS(2, 3, " sub-cmd ?arg?"); capes = Tcl_NewListObj(0, NULL); @@ -288,6 +290,43 @@ static int tcl_cap STDVAR { current = current->next; } Tcl_SetObjResult(irp, capes); + } else if (!strcasecmp(argv[1], "values")) { + capes = Tcl_NewListObj(0, NULL); + values = Tcl_NewListObj(0, NULL); + current = cap; + while (current != NULL) { + if ((argc == 3) &&(!strcasecmp(argv[2], current->name))) { + found = 1; + } + currentvalue = current->value; + while (currentvalue != NULL) { + if (argc == 3) { + if (!strcasecmp(argv[2], current->name)) { + /* Don't get confused, we use the capes var but its really values */ + Tcl_ListObjAppendElement(irp, capes, + Tcl_NewStringObj(currentvalue->name, -1)); + } + } else { + Tcl_ListObjAppendElement(irp, values, + Tcl_NewStringObj(currentvalue->name, -1)); + } + currentvalue = currentvalue->next; + } + if (argc != 3) { + Tcl_ListObjAppendElement(irp, capes, + Tcl_NewStringObj(current->name, -1)); + Tcl_ListObjAppendElement(irp, capes, values); + } + /* Clear out the list so it isn't repeatedly added */ + values = Tcl_NewListObj(0, NULL); + current = current->next; + } + if ((argc == 3) && (!found)) { + simple_sprintf(s, "Capability \"%s\" is not enabled", argv[2]); + Tcl_AppendResult(irp, s, NULL); + return TCL_ERROR; + } + Tcl_SetObjResult(irp, capes); /* Send a request to negotiate a capability with server */ } else if (!strcasecmp(argv[1], "req")) { if (argc != 3) { From e7d256fab4eb8801b4f2ff907ae6780e8db53906 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 27 Nov 2021 10:57:24 -0500 Subject: [PATCH 005/320] Use nick/altnick/randnick on bad nickname If an eggdrop joins a server and attempts to register with an invalid nick, it looks at keep-nick in the config. If keep-nick was enabled, it would not try another nickname and end up disconnecting. If keep-nick was not enabled, it would generate a random nickname to continue registration with. This PR modifies the behavior to instead remove a reliance on keep-nick, and first try the altnick, and THEN a random nick, with the thinking that getting the eggdrop online is more important than preserving an invalid nickname, and will also simplify the troubleshooting for a user from 'eggdrop doesnt run' to 'eggdrop has a weird nickname' --- src/mod/server.mod/servmsg.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index 27fd014e2..5b64a63da 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -877,12 +877,14 @@ static int got432(char *from, char *msg) botname); else { putlog(LOG_MISC, "*", IRC_BADBOTNICK); - if (!keepnick) { + if (!strcmp(erroneous, origbotname)) { + strlcpy(nick, get_altbotnick(), sizeof nick); + } else { make_rand_str_from_chars(nick, sizeof nick - 1, CHARSET_LOWER_ALPHA); - putlog(LOG_MISC, "*", "NICK IS INVALID: '%s' (using '%s' instead)", - erroneous, nick); - dprintf(DP_MODE, "NICK %s\n", nick); } + putlog(LOG_MISC, "*", "NICK IS INVALID: '%s' (using '%s' instead)", + erroneous, nick); + dprintf(DP_MODE, "NICK %s\n", nick); return 0; } return 0; From 881f5ee158c84926c85e1d01f73d3e466a79a73f Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 27 Nov 2021 11:05:27 -0500 Subject: [PATCH 006/320] Add server list Tcl command Adds server list command (similar to server add/server remove), returns a list of all servers added to the bot as a list of lists; in the format {{host} {port} {password}}. The port will have a + prepended if it is an SSL-enabled port --- doc/sphinx_source/mainDocs/tcl-commands.rst | 9 +++++ src/mod/server.mod/tclserv.c | 37 +++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/doc/sphinx_source/mainDocs/tcl-commands.rst b/doc/sphinx_source/mainDocs/tcl-commands.rst index d9f21b13f..5a7ae24db 100644 --- a/doc/sphinx_source/mainDocs/tcl-commands.rst +++ b/doc/sphinx_source/mainDocs/tcl-commands.rst @@ -200,6 +200,15 @@ server remove [[+]port] Module: server +^^^^^^^^^^^ +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}} + + Module: server User Record Manipulation Commands --------------------------------- diff --git a/src/mod/server.mod/tclserv.c b/src/mod/server.mod/tclserv.c index d58b70003..6547d442e 100644 --- a/src/mod/server.mod/tclserv.c +++ b/src/mod/server.mod/tclserv.c @@ -502,15 +502,48 @@ static int tcl_queuesize STDVAR static int tcl_server STDVAR { int ret; + char s[7]; + struct server_list *z; + Tcl_Obj *server; - BADARGS(3, 5, " subcommand host ?port ?password??"); + BADARGS(2, 5, " subcommand ?host ?port? ?password?"); if (!strcmp(argv[1], "add")) { ret = add_server(argv[2], argc >= 4 && argv[3] ? argv[3] : "", argc >= 5 && argv[4] ? argv[4] : ""); + if (!ret) { + server = Tcl_NewListObj(0, NULL); + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj(argv[2], -1)); + if ((argc >= 4) && argv[3]) { + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj(argv[3], -1)); + } else { + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj("", -1)); + } + if ((argc >= 5) && argv[4]) { + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj(argv[4], -1)); + } else { + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj("", -1)); + } + Tcl_SetObjResult(irp, server); + } } else if (!strcmp(argv[1], "remove")) { ret = del_server(argv[2], argc >= 4 && argv[3] ? argv[3] : ""); + } else if (!strcmp(argv[1], "list")) { + Tcl_Obj *servers = Tcl_NewListObj(0, NULL); + z = serverlist; + while(z != NULL) { + server = Tcl_NewListObj(0, NULL); + snprintf(s, sizeof s, "%s%d", z->ssl ? "+" : "", z->port); + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj(z->name, -1)); + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj(s, -1)); + Tcl_ListObjAppendElement(irp, server, Tcl_NewStringObj(z->pass, -1)); + Tcl_SetObjResult(irp, server); + Tcl_ListObjAppendElement(irp, servers, server); + z = z->next; + } + Tcl_SetObjResult(irp, servers); + return TCL_OK; } else { Tcl_AppendResult(irp, "Invalid subcommand: ", argv[1], - ". Should be \"add\" or \"remove\"", NULL); + ". Should be \"add\", \"remove\", or \"list\"", NULL); return TCL_ERROR; } if (ret == 0) { From c5345f9d67941193df92ea4731c8e505f31e255d Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 27 Nov 2021 16:32:35 +0000 Subject: [PATCH 007/320] Log error on rejected botattr --- src/cmds.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cmds.c b/src/cmds.c index e20ff99e9..ffbc88d7b 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -2142,9 +2142,10 @@ static void cmd_botattr(struct userrec *u, int idx, char *par) pls.chan = 0; mns.chan = 0; } - if (!glob_owner(user)) { + if (!glob_owner(user) && ((pls.bot | mns.bot) & (BOT_SHARE | BOT_GLOBAL))) { pls.bot &= ~(BOT_SHARE | BOT_GLOBAL); mns.bot &= ~(BOT_SHARE | BOT_GLOBAL); + dprintf(idx, "You do not have Global Owner privileges, so you cant change share attributes\n"); } user.match = FR_BOT | (chan ? FR_CHAN : 0); get_user_flagrec(u2, &user, par); From 8d3600bc20d5df958328c807a0bb2e3756931b8b Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 27 Nov 2021 17:55:59 -0500 Subject: [PATCH 008/320] Documentation update --- doc/IRCv3 | 54 +++++ doc/html/installAndSetup/upgrading.html | 221 ++++++++++++++++++ doc/html/mainDocs/ircv3.html | 188 +++++++++++++++ doc/sphinx_source/conf.py | 4 +- doc/sphinx_source/installAndSetup/index.rst | 1 + .../installAndSetup/upgrading.rst | 82 +++++++ doc/sphinx_source/mainDocs/ircv3.rst | 9 +- 7 files changed, 554 insertions(+), 5 deletions(-) create mode 100644 doc/IRCv3 create mode 100644 doc/html/installAndSetup/upgrading.html create mode 100644 doc/html/mainDocs/ircv3.html create mode 100644 doc/sphinx_source/installAndSetup/upgrading.rst diff --git a/doc/IRCv3 b/doc/IRCv3 new file mode 100644 index 000000000..b82fb2221 --- /dev/null +++ b/doc/IRCv3 @@ -0,0 +1,54 @@ +IRCv3 support Last revised: Jun 20, 2021 + +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 capabilites are added as possible +with new versions. + +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 capabilites, a general support list can be via +the appropriate support table link at https://ircv3.net/. + +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 + +The following capabilites are supported by Eggdrop: + + - CAP requests + - SASL 3.1 + - account-notify + - account-tag + - away-notify + - chghost + - echo-message + - extended-join + - invite-notify + - message-tags + - server-time + - setname + - +typing + +Copyright (C) 2010 - 2021 Eggheads Development Team diff --git a/doc/html/installAndSetup/upgrading.html b/doc/html/installAndSetup/upgrading.html new file mode 100644 index 000000000..6572596a9 --- /dev/null +++ b/doc/html/installAndSetup/upgrading.html @@ -0,0 +1,221 @@ + + + + + + + + Upgrading — Eggdrop 1.9.2 documentation + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+ +
+

Upgrading

+

Last revised: November 27, 2021

+
+

Upgrading Eggdrop from v1.6/v1.8 -> v1.9

+
+

What’s new? To gain a full understanding of changes to the Eggdrop +v1.9 version line, you can read the following documents:

+
+
INSTALL +README +doc/TLS +doc/IPV6 +doc/Changes1.9 +doc/tcl-commands.doc
+

All of these documents combined will fill you in on the latest changes to +Eggdrop in version 1.9.x. All files, with the exception of Changes1.9, are +also available in html format in doc/html/.

+

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

+

If you are upgrading from a pre-1.6 version of Eggdrop:

+
+
    +
  1. Before you start the bot for the first time, BACKUP your userfile.
  2. +
  3. DON’T USE YOUR OLD CONFIG FILE. MAKE A NEW ONE!
  4. +
+
+
+
+
+

Must-read changes made to Eggdrop v1.9 from Eggdrop1.8

+

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

+
+

Config

+

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.

    +
  • +
  • Eggdrop 1.9 switched from the “set servers {}” syntax to the “server add” command. For example, if your configuration file previously had:

    +
    set servers {
    +  my.server.com:6667
    +}
    +
    +
    +

    you should now instead use:

    +
    server add my.server.com 6667
    +
    +
    +

    Please read the config file for additional examples

    +
  • +
  • Eggdrop no longer requires the ‘-n’ flag to start Eggdrop in terminal mode.

    +
  • +
+
+
+

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

+

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

+
+
+

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

+

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

+
+
+

Documentation

+

Documentation has been updated to reflect new and removed commands and variables. Almost all files have changed, so take a look at them.

+
+
+
+ + +
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/doc/html/mainDocs/ircv3.html b/doc/html/mainDocs/ircv3.html new file mode 100644 index 000000000..543f49859 --- /dev/null +++ b/doc/html/mainDocs/ircv3.html @@ -0,0 +1,188 @@ + + + + + + + + IRCv3 support — Eggdrop 1.9.2 documentation + + + + + + + + + + + + + +
+
+ +
+ +
+
+
+ +

IRCv3 support +Last revised: Jun 20, 2021

+
+

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 capabilites are added as possible with new versions.

+
+

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 capabilites, a general support list can be via the appropriate support table link at https://ircv3.net/.

+
+
+

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

+

The following capabilites are supported by Eggdrop:

+
+
    +
  • CAP requests
  • +
  • SASL 3.1
  • +
  • account-notify
  • +
  • account-tag
  • +
  • away-notify
  • +
  • chghost
  • +
  • echo-message
  • +
  • extended-join
  • +
  • invite-notify
  • +
  • message-tags
  • +
  • server-time
  • +
  • setname
  • +
  • +typing
  • +
+
+

Copyright (C) 2010 - 2021 Eggheads Development Team

+
+
+ + +
+
+
+
+
+
+
+ + + + + \ No newline at end of file diff --git a/doc/sphinx_source/conf.py b/doc/sphinx_source/conf.py index ded8b372f..c897e3e2f 100644 --- a/doc/sphinx_source/conf.py +++ b/doc/sphinx_source/conf.py @@ -51,9 +51,9 @@ # built documents. # # The short X.Y version. -version = '1.9.1' +version = '1.9.2' # The full version, including alpha/beta/rc tags. -release = '1.9.1' +release = '1.9.2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/doc/sphinx_source/installAndSetup/index.rst b/doc/sphinx_source/installAndSetup/index.rst index cf24258ec..956d1d8c4 100644 --- a/doc/sphinx_source/installAndSetup/index.rst +++ b/doc/sphinx_source/installAndSetup/index.rst @@ -11,3 +11,4 @@ Contents: readme.rst install.rst faq.rst + upgrading.rst diff --git a/doc/sphinx_source/installAndSetup/upgrading.rst b/doc/sphinx_source/installAndSetup/upgrading.rst new file mode 100644 index 000000000..26bd1a15f --- /dev/null +++ b/doc/sphinx_source/installAndSetup/upgrading.rst @@ -0,0 +1,82 @@ +********* +Upgrading +********* +Last revised: November 27, 2021 + +######################################## +Upgrading Eggdrop from v1.6/v1.8 -> v1.9 +######################################## + + What's new? To gain a full understanding of changes to the Eggdrop + v1.9 version line, you can read the following documents: + + INSTALL + README + doc/TLS + doc/IPV6 + doc/Changes1.9 + doc/tcl-commands.doc + + All of these documents combined will fill you in on the latest changes to + Eggdrop in version 1.9.x. All files, with the exception of Changes1.9, are + also available in html format in doc/html/. + + For support, feel free to visit us on Libera #eggdrop. + + If you are upgrading from a pre-1.6 version of Eggdrop: + + 1. Before you start the bot for the first time, BACKUP your userfile. + + 2. DON'T USE YOUR OLD CONFIG FILE. MAKE A NEW ONE! + +###################################################### +Must-read changes made to Eggdrop v1.9 from Eggdrop1.8 +###################################################### + +These are NOT all changes or new settings; rather just the "killer" changes that may directly affect Eggdrop's previous performance without modification. + +Config +****** + +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. +* Eggdrop 1.9 switched from the "set servers {}" syntax to the "server add" command. For example, if your configuration file previously had:: + + set servers { + my.server.com:6667 + } + + you should now instead use:: + + server add my.server.com 6667 + + Please read the config file for additional examples + +* Eggdrop no longer requires the '-n' flag to start Eggdrop in terminal mode. + + +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 ``_ + +Scripts +******* + +All 3rd party Tcl scripts that work with Eggdrop v1.6/v1.8 should fully work with Eggdrop v1.9. + +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 +************ + +A lot of additions and changes have been made to Tcl commands. Please look at doc/tcl-commands.doc to see them. + +Documentation +************* + +Documentation has been updated to reflect new and removed commands and variables. Almost all files have changed, so take a look at them. diff --git a/doc/sphinx_source/mainDocs/ircv3.rst b/doc/sphinx_source/mainDocs/ircv3.rst index a7ba7ca37..0f85fb86e 100644 --- a/doc/sphinx_source/mainDocs/ircv3.rst +++ b/doc/sphinx_source/mainDocs/ircv3.rst @@ -1,5 +1,5 @@ IRCv3 support -Last revised: Jun 20, 2021 +Last revised: November 27, 2021 ============= IRCv3 support @@ -26,16 +26,19 @@ Supported CAP capabilities The following capabilites are supported by Eggdrop: - * CAP requests - * SASL 3.1 + * CAP/CAP 302 requests + * SASL 3.2 * account-notify * account-tag * away-notify + * BOT 005 mode + * cap-notify * chghost * echo-message * extended-join * invite-notify * message-tags + * Monitor * server-time * setname * +typing From fafef0e6e131fc027964ce20d144ae93f0b38b72 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 27 Nov 2021 18:53:35 -0500 Subject: [PATCH 009/320] Generate 1.9.2 docs --- FEATURES | 6 +- README | 74 +++--------- doc/IRCv3 | 9 +- doc/TRICKS | 9 +- doc/TWITCH | 10 +- doc/html/_static/documentation_options.js | 2 +- doc/html/appendices/first-script.html | 8 +- doc/html/appendices/index.html | 8 +- doc/html/appendices/known-probs.html | 8 +- doc/html/appendices/text-sub.html | 8 +- doc/html/appendices/tricks.html | 16 ++- doc/html/appendices/weird-msgs.html | 8 +- doc/html/coreDocs/assoc.html | 8 +- doc/html/coreDocs/blowfish.html | 8 +- doc/html/coreDocs/channels.html | 8 +- doc/html/coreDocs/compress.html | 8 +- doc/html/coreDocs/console.html | 8 +- doc/html/coreDocs/core.html | 8 +- doc/html/coreDocs/ctcp.html | 8 +- doc/html/coreDocs/dns.html | 8 +- doc/html/coreDocs/filesys.html | 8 +- doc/html/coreDocs/ident.html | 8 +- doc/html/coreDocs/index.html | 14 ++- doc/html/coreDocs/irc.html | 8 +- doc/html/coreDocs/modules.html | 8 +- doc/html/coreDocs/notes.html | 8 +- doc/html/coreDocs/pbkdf2.html | 8 +- doc/html/coreDocs/seen.html | 8 +- doc/html/coreDocs/server.html | 8 +- doc/html/coreDocs/share.html | 8 +- doc/html/coreDocs/transfer.html | 8 +- doc/html/coreDocs/twitch.html | 8 +- doc/html/coreDocs/uptime.html | 8 +- doc/html/coreDocs/woobie.html | 8 +- doc/html/firstinstall/firstinstall.html | 42 +++---- doc/html/firstinstall/index.html | 8 +- doc/html/index.html | 10 +- doc/html/installAndSetup/faq.html | 14 ++- doc/html/installAndSetup/index.html | 9 +- doc/html/installAndSetup/install.html | 8 +- doc/html/installAndSetup/readme.html | 68 ++++------- doc/html/mainDocs/about.html | 8 +- doc/html/mainDocs/bans.html | 8 +- doc/html/mainDocs/botnet.html | 8 +- doc/html/mainDocs/features.html | 12 +- doc/html/mainDocs/index.html | 20 +++- doc/html/mainDocs/ipv6.html | 8 +- doc/html/mainDocs/ircv3.html | 15 +-- doc/html/mainDocs/partyline.html | 8 +- doc/html/mainDocs/patch.html | 8 +- doc/html/mainDocs/pbkdf2.html | 8 +- doc/html/mainDocs/tcl-commands.html | 65 ++++++++--- doc/html/mainDocs/tls.html | 14 ++- doc/html/mainDocs/twitch-tcl-commands.html | 40 +++++-- doc/html/mainDocs/twitch.html | 12 +- doc/html/mainDocs/users.html | 8 +- doc/html/objects.inv | Bin 1256 -> 1284 bytes doc/html/search.html | 8 +- doc/html/searchindex.js | 2 +- doc/tcl-commands.doc | 126 +++++++++++++++++---- 60 files changed, 530 insertions(+), 355 deletions(-) diff --git a/FEATURES b/FEATURES index 027ced16c..cb53551d4 100644 --- a/FEATURES +++ b/FEATURES @@ -7,8 +7,10 @@ Eggdrop Features still regularly updated. Some of its features include: - Capability (CAP) support used to enable IRCv3 features. Eggdrop - currently supports the following IRCv3 capability sets: SASL - authentication, message tags, away-notify, and message-notify. + currently supports the following IRCv3 capability sets: + acconut-notify, account-tag, away-notify, chghost, echo-message, + extended-join, invite-notify, message-tags, server-time, + setname, and +typing. - Support for SSL-enabled IRC servers - Support for IPv6 users - Completely separate channel user lists like having a separate diff --git a/README b/README index 9cc5721f4..79084fa15 100644 --- a/README +++ b/README @@ -50,10 +50,8 @@ WHAT IS EGGDROP? This README file contains information about how to get Eggdrop, command line options for Eggdrop, what you may need to do when upgrading from older versions, a list of frequently asked questions, - how to set up a crontab, some boring legal stuff, info about the - mailing list (a great place to ask questions and a good place to - report bugs), some basics about git usage and some channels where you - might get help with Eggdrop. + how to set up a crontab, some boring legal stuff, some basics about + git usage and some channels where you might get help with Eggdrop. HOW TO GET EGGDROP @@ -105,35 +103,6 @@ QUICK STARTUP UPGRADING -UPGRADING FROM A PRE-1.3 TO A 1.9 VERSION - - First of all, why are you still running pre-1.3?! - - MAKE SURE YOU BACK UP YOUR USERFILE AND CHANFILE! - - We can't stress this enough. If you are upgrading and you have even a - slight possibility of downgrading again later, you will HAVE to back - up your userfile or you will lose it. v1.3 of Eggdrop radically - changed a lot of things. - - There are many major changes between v0.9, v1.0, v1.1 and v1.8, so PAY - ATTENTION to this part if you have a v0.9, 1.0 or 1.1 bot currently. - If you're just starting out, you can skip this section. - - If you run share bots, you will need to upgrade them all at the same - time because of the new userfile format. Older bots will be able to - link in, but will not get or send a userfile. MAKE A NEW CONFIG FILE - from the example; there are some radical changes. - - If you are upgrading from 0.9/1.0 to 1.9, just redo the whole thing. - Absolutely everything has changed, including the userfile and config - file formats. - - If you are upgrading from 1.1/1.2 to 1.9, you will likely want to redo - the config file, as much has changed. BACK UP! You will need to run - 'tclsh scripts/weed/ c' to convert your userfile from v3 - (1.1/1.2) to v4 (1.3/1.4/1.5/1.6/1.8/1.9). - UPGRADING FROM AN OLDER 1.3/1.4/1.5/1.6/1.8 TO A 1.9 VERSION If you followed the INSTALL file and did a 'make install' (or 'make @@ -162,20 +131,12 @@ COMMAND LINE The options available are: - -n: Don't background. Normally, Eggdrop will move itself into the - - background when you start it up, meaning you'll get another - shell prompt and you can do other things while the bot is - running. With -n, you won't return to the shell prompt until the - bot exits (which won't normally happen until it's killed). By - default, -n will send all log entries to the console. - - -nt: Don't background, use terminal. This is just like -n, except that + -t: Don't background, use terminal. This is just like -n, except that instead of seeing log entries, your console will simulate a DCC chat with the bot. - -nc: Don't background, show channel info. This is just like -n, except + -c: Don't background, show channel info. This is just like -n, except that instead of seeing log entries, every 10 seconds your screen will clear and you will see the current channel status, sort of @@ -289,12 +250,13 @@ BORING LEGAL STUFF MAILING LIST There are currently a couple of mailing lists about Eggdrop. - eggheads@eggheads.org is the one relevant for posts about Eggdrop 1.8 + eggheads@eggheads.org is the one relevant for posts about Eggdrop 1.9 and up (suggestions, help, etc). To subscribe to the eggheads mailing list, send email to eggheads-request@eggheads.org. In the body of the message, put - "subscribe eggheads". You can also go to the following url: + "subscribe eggheads". We commonly use this list to announce new + releases.You can also go to the following url: http://lists.eggheads.org/mailman/listinfo/eggheads @@ -325,25 +287,26 @@ MAILING LIST amazing problems that even stump the gurus, etc. are what we want to see here. - Bug reports should be sent to bugs@eggheads.org. Please read and fill - out the doc/BUG-REPORT file. + Bug reports should be generated in the issue section of + https://www.github.com/eggheads/eggdrop DO NOT SEND HTML EMAILS TO ANY OF THE EGGHEADS.ORG MAILING LISTS. - ANYONE CAUGHT SENDING HTML EMAILS TO ONE OF THESE LISTS WILL BE - REMOVED IMMEDIATELY! + ANYONE SENDING HTML EMAILS TO ONE OF THESE LISTS WILL BE REMOVED + IMMEDIATELY! 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 - email bugs@eggheads.org about it. Thank you! + create an issue, or better yet a pull request, at + https://www.github.com/eggheads/eggdrop Thank you! OBTAINING HELP You can obtain help with Eggdrop in the following IRC channels: - - FreeNode - #eggdrop (official channel), #eggheads (development - discussion), #egghelp + - Libera Chat - #eggdrop (official channel), #eggheads + (development discussion) - DALnet - #eggdrop - EFnet - #egghelp - IRCnet - #eggdrop @@ -356,10 +319,9 @@ OBTAINING HELP - Don't type using CAPITAL letters, colors or bold. - Don't use "!" and "?" excessively. - Don't /msg people without their permission. - - Don't repeat or paste large amounts of text to the channel. - - If there are any other serious Eggdrop related channels that should be - added to the above list, please let us know. + - Don't repeat or paste more than 4 lines of text to the channel. + - 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 - 2021 Eggheads Development Team diff --git a/doc/IRCv3 b/doc/IRCv3 index b82fb2221..46d6394d6 100644 --- a/doc/IRCv3 +++ b/doc/IRCv3 @@ -1,4 +1,4 @@ -IRCv3 support Last revised: Jun 20, 2021 +IRCv3 support Last revised: November 27, 2021 IRCv3 support @@ -37,16 +37,19 @@ SUPPORTED CAP CAPABILITIES The following capabilites are supported by Eggdrop: - - CAP requests - - SASL 3.1 + - CAP/CAP 302 requests + - SASL 3.2 - account-notify - account-tag - away-notify + - BOT 005 mode + - cap-notify - chghost - echo-message - extended-join - invite-notify - message-tags + - Monitor - server-time - setname - +typing diff --git a/doc/TRICKS b/doc/TRICKS index ef6823f5a..cf3407068 100644 --- a/doc/TRICKS +++ b/doc/TRICKS @@ -1,4 +1,4 @@ -Eggdrop Tricks Last revised: December 08, 2003 +Eggdrop Tricks Last revised: Jun 02, 2021 Eggdrop Tricks @@ -20,6 +20,13 @@ Eggdrop Tricks bot's config file to make it keeping one logfile all the time. This is not recommended on high traffic channels. + - 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. + - You can modify Eggdrop's output in the partyline, kick messages, and other texts by editing core.english.lang in the language directory. diff --git a/doc/TWITCH b/doc/TWITCH index 9a3bcf7e5..c989e8748 100644 --- a/doc/TWITCH +++ b/doc/TWITCH @@ -36,14 +36,14 @@ REGISTERING WITH TWITCH EDITING THE CONFIG FILE -1. Find addserver options 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 +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: - addserver irc.chat.twitch.tv 6667 oauth:j9irk4vs28b0obz9easys4w2ystji3u + server add irc.chat.twitch.tv 6667 oauth:j9irk4vs28b0obz9easys4w2ystji3u Make sure you leave the 'oauth:' there, including the ':'. diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index 34b17e258..7d0c523e6 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,6 +1,6 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), - VERSION: '1.9.1', + VERSION: '1.9.2', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', diff --git a/doc/html/appendices/first-script.html b/doc/html/appendices/first-script.html index 57a1ef8bd..f115e6d8f 100644 --- a/doc/html/appendices/first-script.html +++ b/doc/html/appendices/first-script.html @@ -6,7 +6,7 @@ - Your First Eggdrop Script — Eggdrop 1.9.1 documentation + Your First Eggdrop Script — Eggdrop 1.9.2 documentation @@ -23,7 +23,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/appendices/index.html b/doc/html/appendices/index.html index 831c8b60b..b7ce7b164 100644 --- a/doc/html/appendices/index.html +++ b/doc/html/appendices/index.html @@ -6,7 +6,7 @@ - <no title> — Eggdrop 1.9.1 documentation + <no title> — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/appendices/known-probs.html b/doc/html/appendices/known-probs.html index d910e3d15..67a0a4695 100644 --- a/doc/html/appendices/known-probs.html +++ b/doc/html/appendices/known-probs.html @@ -6,7 +6,7 @@ - Known Problems — Eggdrop 1.9.1 documentation + Known Problems — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/appendices/text-sub.html b/doc/html/appendices/text-sub.html index 8cb428220..6f2bb35b3 100644 --- a/doc/html/appendices/text-sub.html +++ b/doc/html/appendices/text-sub.html @@ -6,7 +6,7 @@ - Textfile Substitutions — Eggdrop 1.9.1 documentation + Textfile Substitutions — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/appendices/tricks.html b/doc/html/appendices/tricks.html index 2ad0d0eba..f4f06f571 100644 --- a/doc/html/appendices/tricks.html +++ b/doc/html/appendices/tricks.html @@ -6,7 +6,7 @@ - Eggdrop Tricks — Eggdrop 1.9.1 documentation + Eggdrop Tricks — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/assoc.html b/doc/html/coreDocs/assoc.html index 311ead7d1..e1f1fa4ea 100644 --- a/doc/html/coreDocs/assoc.html +++ b/doc/html/coreDocs/assoc.html @@ -6,7 +6,7 @@ - Assoc Module — Eggdrop 1.9.1 documentation + Assoc Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/blowfish.html b/doc/html/coreDocs/blowfish.html index 7a3eedef3..6251a1419 100644 --- a/doc/html/coreDocs/blowfish.html +++ b/doc/html/coreDocs/blowfish.html @@ -6,7 +6,7 @@ - Blowfish Module — Eggdrop 1.9.1 documentation + Blowfish Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/channels.html b/doc/html/coreDocs/channels.html index f75dc4261..a2f760569 100644 --- a/doc/html/coreDocs/channels.html +++ b/doc/html/coreDocs/channels.html @@ -6,7 +6,7 @@ - Channels Module — Eggdrop 1.9.1 documentation + Channels Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/compress.html b/doc/html/coreDocs/compress.html index 71c1d5af0..3198c59fd 100644 --- a/doc/html/coreDocs/compress.html +++ b/doc/html/coreDocs/compress.html @@ -6,7 +6,7 @@ - Compress Module — Eggdrop 1.9.1 documentation + Compress Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/console.html b/doc/html/coreDocs/console.html index dbd462ce1..a153136b5 100644 --- a/doc/html/coreDocs/console.html +++ b/doc/html/coreDocs/console.html @@ -6,7 +6,7 @@ - Console Module — Eggdrop 1.9.1 documentation + Console Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/core.html b/doc/html/coreDocs/core.html index 96e522e53..bd2ad60db 100644 --- a/doc/html/coreDocs/core.html +++ b/doc/html/coreDocs/core.html @@ -6,7 +6,7 @@ - Eggdrop Core Settings — Eggdrop 1.9.1 documentation + Eggdrop Core Settings — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/ctcp.html b/doc/html/coreDocs/ctcp.html index c7e3dd2c4..b4f95b16e 100644 --- a/doc/html/coreDocs/ctcp.html +++ b/doc/html/coreDocs/ctcp.html @@ -6,7 +6,7 @@ - CTCP Module — Eggdrop 1.9.1 documentation + CTCP Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/dns.html b/doc/html/coreDocs/dns.html index 0cc5afc6a..fd1f704eb 100644 --- a/doc/html/coreDocs/dns.html +++ b/doc/html/coreDocs/dns.html @@ -6,7 +6,7 @@ - DNS Module — Eggdrop 1.9.1 documentation + DNS Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/filesys.html b/doc/html/coreDocs/filesys.html index 73231ac0a..ffc8b8456 100644 --- a/doc/html/coreDocs/filesys.html +++ b/doc/html/coreDocs/filesys.html @@ -6,7 +6,7 @@ - Filesys Module — Eggdrop 1.9.1 documentation + Filesys Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/ident.html b/doc/html/coreDocs/ident.html index f327f1852..aeec77fb7 100644 --- a/doc/html/coreDocs/ident.html +++ b/doc/html/coreDocs/ident.html @@ -6,7 +6,7 @@ - Ident Module — Eggdrop 1.9.1 documentation + Ident Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/index.html b/doc/html/coreDocs/index.html index b89009f4d..32fa2e68b 100644 --- a/doc/html/coreDocs/index.html +++ b/doc/html/coreDocs/index.html @@ -6,7 +6,7 @@ - <no title> — Eggdrop 1.9.1 documentation + <no title> — Eggdrop 1.9.2 documentation @@ -16,7 +16,7 @@ - + diff --git a/doc/html/coreDocs/notes.html b/doc/html/coreDocs/notes.html index 8c35efa4a..19d86fc71 100644 --- a/doc/html/coreDocs/notes.html +++ b/doc/html/coreDocs/notes.html @@ -6,7 +6,7 @@ - Notes Module — Eggdrop 1.9.1 documentation + Notes Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/pbkdf2.html b/doc/html/coreDocs/pbkdf2.html index ce9e4a719..4f9531fbb 100644 --- a/doc/html/coreDocs/pbkdf2.html +++ b/doc/html/coreDocs/pbkdf2.html @@ -6,7 +6,7 @@ - PBKDF2 Module — Eggdrop 1.9.1 documentation + PBKDF2 Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/seen.html b/doc/html/coreDocs/seen.html index 64b27a766..eb15b3894 100644 --- a/doc/html/coreDocs/seen.html +++ b/doc/html/coreDocs/seen.html @@ -6,7 +6,7 @@ - Seen Module — Eggdrop 1.9.1 documentation + Seen Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/server.html b/doc/html/coreDocs/server.html index fb464f1d6..fbf30ae6c 100644 --- a/doc/html/coreDocs/server.html +++ b/doc/html/coreDocs/server.html @@ -6,7 +6,7 @@ - Server Module — Eggdrop 1.9.1 documentation + Server Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/share.html b/doc/html/coreDocs/share.html index 424ae880b..3453f0671 100644 --- a/doc/html/coreDocs/share.html +++ b/doc/html/coreDocs/share.html @@ -6,7 +6,7 @@ - Share Module — Eggdrop 1.9.1 documentation + Share Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/transfer.html b/doc/html/coreDocs/transfer.html index e09621e8e..46d2a9490 100644 --- a/doc/html/coreDocs/transfer.html +++ b/doc/html/coreDocs/transfer.html @@ -6,7 +6,7 @@ - Transfer Module — Eggdrop 1.9.1 documentation + Transfer Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/twitch.html b/doc/html/coreDocs/twitch.html index 0b57bc32f..d5bd3543a 100644 --- a/doc/html/coreDocs/twitch.html +++ b/doc/html/coreDocs/twitch.html @@ -6,7 +6,7 @@ - Twitch Module — Eggdrop 1.9.1 documentation + Twitch Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/uptime.html b/doc/html/coreDocs/uptime.html index 3d0f035b2..7d65daa89 100644 --- a/doc/html/coreDocs/uptime.html +++ b/doc/html/coreDocs/uptime.html @@ -6,7 +6,7 @@ - Uptime Module — Eggdrop 1.9.1 documentation + Uptime Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/coreDocs/woobie.html b/doc/html/coreDocs/woobie.html index 53df8661c..aacb6bac9 100644 --- a/doc/html/coreDocs/woobie.html +++ b/doc/html/coreDocs/woobie.html @@ -6,7 +6,7 @@ - Woobie Module — Eggdrop 1.9.1 documentation + Woobie Module — Eggdrop 1.9.2 documentation @@ -24,7 +24,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation diff --git a/doc/html/firstinstall/firstinstall.html b/doc/html/firstinstall/firstinstall.html index 0c93df330..c50988ed1 100644 --- a/doc/html/firstinstall/firstinstall.html +++ b/doc/html/firstinstall/firstinstall.html @@ -6,7 +6,7 @@ - Setting up your Eggdrop the first time — Eggdrop 1.9.1 documentation + Setting up your Eggdrop the first time — Eggdrop 1.9.2 documentation @@ -22,7 +22,7 @@

+ href="../index.html">Eggdrop 1.9.2 documentation @@ -37,6 +37,7 @@

Table of Contents

  • README
  • Installing Eggdrop
  • Frequently Asked Questions
  • +
  • Upgrading
  • +
  • Account tracking in Eggdrop +
  • Encryption/Hashing
    • Background
    • Usage
    • @@ -365,7 +375,7 @@

      Where to find more help © Copyright 2022, Eggheads. - Last updated on Jul 12, 2022. + Last updated on Nov 10, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/install/install.html b/doc/html/install/install.html index d05e0b2f1..d6ce5d245 100644 --- a/doc/html/install/install.html +++ b/doc/html/install/install.html @@ -6,7 +6,7 @@ - Installing Eggdrop — Eggdrop 1.9.2 documentation + Installing Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

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

      Note that you must use full path for every file to be correctly +

      Note that you must use full path for every file to be correctly installed.

      -

      [The following is performed from the directory installed above.]

      @@ -183,6 +183,9 @@

      Quick Startup
    • Edit your config file completely.

    • Start the bot with the “-m” option to create a user file, i.e.

      @@ -281,7 +284,7 @@

      Modules © Copyright 2022, Eggheads. - Last updated on May 26, 2022. + Last updated on Nov 10, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/install/readme.html b/doc/html/install/readme.html index 6e356c9d3..24d2c1630 100644 --- a/doc/html/install/readme.html +++ b/doc/html/install/readme.html @@ -6,7 +6,7 @@ - README — Eggdrop 1.9.2 documentation + README — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/install/upgrading.html b/doc/html/install/upgrading.html index 3ad768398..7a2842f4b 100644 --- a/doc/html/install/upgrading.html +++ b/doc/html/install/upgrading.html @@ -6,7 +6,7 @@ - Upgrading Eggdrop — Eggdrop 1.9.2 documentation + Upgrading Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/included.html b/doc/html/modules/included.html index 8101520c8..edffbdbbc 100644 --- a/doc/html/modules/included.html +++ b/doc/html/modules/included.html @@ -6,7 +6,7 @@ - Modules included with Eggdrop — Eggdrop 1.9.3 documentation + Modules included with Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/index.html b/doc/html/modules/index.html index e8c974135..f17d8d8bf 100644 --- a/doc/html/modules/index.html +++ b/doc/html/modules/index.html @@ -6,7 +6,7 @@ - Eggdrop Module Information — Eggdrop 1.9.2 documentation + Eggdrop Module Information — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index c38e68f06..473290a3f 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -6,7 +6,7 @@ - Assoc Module — Eggdrop 1.9.2 documentation + Assoc Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/blowfish.html b/doc/html/modules/mod/blowfish.html index f077164f4..bd82779ea 100644 --- a/doc/html/modules/mod/blowfish.html +++ b/doc/html/modules/mod/blowfish.html @@ -6,7 +6,7 @@ - Blowfish Module — Eggdrop 1.9.2 documentation + Blowfish Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/channels.html b/doc/html/modules/mod/channels.html index 435e32d85..5b8fb089b 100644 --- a/doc/html/modules/mod/channels.html +++ b/doc/html/modules/mod/channels.html @@ -6,7 +6,7 @@ - Channels Module — Eggdrop 1.9.2 documentation + Channels Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/compress.html b/doc/html/modules/mod/compress.html index 911fbde6e..bde3bc8ae 100644 --- a/doc/html/modules/mod/compress.html +++ b/doc/html/modules/mod/compress.html @@ -6,7 +6,7 @@ - Compress Module — Eggdrop 1.9.2 documentation + Compress Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/console.html b/doc/html/modules/mod/console.html index 8089e6885..bdd760ceb 100644 --- a/doc/html/modules/mod/console.html +++ b/doc/html/modules/mod/console.html @@ -6,7 +6,7 @@ - Console Module — Eggdrop 1.9.2 documentation + Console Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/ctcp.html b/doc/html/modules/mod/ctcp.html index 62562ad04..70f7884ff 100644 --- a/doc/html/modules/mod/ctcp.html +++ b/doc/html/modules/mod/ctcp.html @@ -6,7 +6,7 @@ - CTCP Module — Eggdrop 1.9.2 documentation + CTCP Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/dns.html b/doc/html/modules/mod/dns.html index 75f893bd0..dbdd9a95d 100644 --- a/doc/html/modules/mod/dns.html +++ b/doc/html/modules/mod/dns.html @@ -6,7 +6,7 @@ - DNS Module — Eggdrop 1.9.2 documentation + DNS Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/filesys.html b/doc/html/modules/mod/filesys.html index 055d9b4e4..2ce90adf9 100644 --- a/doc/html/modules/mod/filesys.html +++ b/doc/html/modules/mod/filesys.html @@ -6,7 +6,7 @@ - Filesys Module — Eggdrop 1.9.2 documentation + Filesys Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index df57f1510..5cfcd7cad 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -6,7 +6,7 @@ - Ident Module — Eggdrop 1.9.2 documentation + Ident Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/irc.html b/doc/html/modules/mod/irc.html index 91d7235d0..cd7d05f14 100644 --- a/doc/html/modules/mod/irc.html +++ b/doc/html/modules/mod/irc.html @@ -6,7 +6,7 @@ - IRC Module — Eggdrop 1.9.2 documentation + IRC Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation
      Many IRCops find bots by seeing if they reply to ‘hello’ in a msg. You -can change this to another word by un-commenting thse two lines and +can change this to another word by un-commenting these two lines and changing “myword” to the word wish to use instead of’hello’. It must be a single word.
      @@ -289,7 +290,7 @@

      Search

      diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index 8365399dd..f27bedad9 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -6,7 +6,7 @@ - Notes Module — Eggdrop 1.9.2 documentation + Notes Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index 783d9de0d..b02d7e06e 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -6,7 +6,7 @@ - PBKDF2 Module — Eggdrop 1.9.3 documentation + PBKDF2 Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/seen.html b/doc/html/modules/mod/seen.html index 81c0da8a8..23b657e19 100644 --- a/doc/html/modules/mod/seen.html +++ b/doc/html/modules/mod/seen.html @@ -6,7 +6,7 @@ - Seen Module — Eggdrop 1.9.3 documentation + Seen Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/server.html b/doc/html/modules/mod/server.html index c1479a6c2..e83a3db20 100644 --- a/doc/html/modules/mod/server.html +++ b/doc/html/modules/mod/server.html @@ -6,7 +6,7 @@ - Server Module — Eggdrop 1.9.3 documentation + Server Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/share.html b/doc/html/modules/mod/share.html index 478c33ec1..2ffb85ec0 100644 --- a/doc/html/modules/mod/share.html +++ b/doc/html/modules/mod/share.html @@ -6,7 +6,7 @@ - Share Module — Eggdrop 1.9.3 documentation + Share Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/transfer.html b/doc/html/modules/mod/transfer.html index f41c5875e..9e2451cf1 100644 --- a/doc/html/modules/mod/transfer.html +++ b/doc/html/modules/mod/transfer.html @@ -6,7 +6,7 @@ - Transfer Module — Eggdrop 1.9.3 documentation + Transfer Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/twitch.html b/doc/html/modules/mod/twitch.html index acf9abca6..c7ad96918 100644 --- a/doc/html/modules/mod/twitch.html +++ b/doc/html/modules/mod/twitch.html @@ -6,7 +6,7 @@ - Twitch Module — Eggdrop 1.9.3 documentation + Twitch Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index 2cc120325..45993ea2a 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -6,7 +6,7 @@ - Uptime Module — Eggdrop 1.9.3 documentation + Uptime Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index 23d5d7457..b9b05d0a4 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -6,7 +6,7 @@ - Woobie Module — Eggdrop 1.9.3 documentation + Woobie Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index 548e573d9..db0584e67 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -6,7 +6,7 @@ - Writing an Eggdrop Module — Eggdrop 1.9.3 documentation + Writing an Eggdrop Module — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/objects.inv b/doc/html/objects.inv index a4c3f8558582d0a190975a9a53497a39705f5c8a..769b0721ecbe8dca1923d114d1645a7c5de1f80d 100644 GIT binary patch delta 1174 zcmV;H1Zn%y3I7R@KLIq6Kt6vPHxRt*D+X|mR)jb}4!P|UUf63aEEzcl91bNBJ0b@p zM_T=Tn$IC;n#yHYVs#Z?-NhDZ#&$^e2i$fCw$Nhdqw1!|y>PgFbOFPMK?3v!c|BZtk`O|-I&7F&Vb?~a~ z(HvCfSVk$xW;L4h8L5UkgAg%}YP9wH+u$kU*hzNHW%l0sx81)*inZV9-6iSOeh z-O%9%7tlo9J-kI$CvL15z{q+0v5k~H2mE@276KymIm8G0fe9`;_EGZVs85a;`*FoP zCQN-A2ggZXTx^(P(hq;xmq~{_{oD}I$bpGQ%TZC*y!?Dc*G0*e7bvleM+QpI4IItIfR!$PyLl*XH&z_zswJn=Z9_K(?nWF z61FRKqc#CdHvtD3?g0?ws)y@30)87lI$U~G<%0HO$GZF&=2(AD*G*zvxH+a}Pn=m! z6hM(1(}MO=orvL5tQJOuNtG^DdKBhHHI2fp7G8z9QcbCFt%YY{?o?IE-D}}ph)van zCKsD~*xa$I8qv)PFPm9cjT~Jq_cX-5YV_RQ=H9ljr<%y*U8Qr)YN|>PGy zRl}oR;~yV6)3_*ZW{=Yh3hWREuWae6t0_0pmt@LLcuRkZ{LFF^WoB6k)G{wMBZ|)Y zLq8UC$l-6~U}HnxqO+vTg*o!v&GNOvOBw5!dCpFGic?djT4tWBMSh~(B13^b&rvfP zXv9gc!Pk^FnkqgNu7w6v?|AFrg{onLz9nk$^st9rw?`- zjE(}*2xbroHy(fRxfq+jK54qHG{?Z>=r4-w8AIW)8gJ7F>Hsk#of>)m`M`Z!&Xq5T@#z!O{@a?m+i9`=s< zy0(8vlwu!dt;ZIT2}n2v_+}ffW;?dpaHv#RRubv4WyEIJ7HxU>MsfO%QQUYamhMah zg&z?+KBReE;jaH@`^%u&Dfsfo4#Oe%loPpIpj7^WRTs(VC_YY0VUBkF)}HT zlxO_+X+D}F<)(8P+g)8HitH}-uvSfW!`$D-*#6I6bhRxw$kM=Y)cRu6kaOkxf zR{d%s~1*GNM9vWK#0M)DjSF!Mt` z(rq{1-~yV6yN6d~_43Aw0YuK@_bpQP0`SWXT1-IdbIgzQ1D8Vf{G;S!G!(~+`??Z6 zm$v>G5932#d~STitRH`?FO!aS`nh4UQ6ra)QIqa?^YY`NX_W=8v1}MN@v~GZAY7{d z;c6LM0P{3w{fScw0SN*>p6(vMJtfjK9yIHn9KlOqp#Ds`i$_D~Umil`{!y>+X(p|a zM7@>1(VGCKlYotk=Ku(C)Z=B1KzNOi9Sdg*~Qa&zwa~ z6hKiM^MdwDpO_U&uC9!Tk}6%Q^eD=WY8r)GU3nGdN;RdzwXQsia;K_N?p{~kMc7nb zXm+ushbZ(Nk4=Y_~zOZ2!VgGee3sMY6<}j60i4vKR$nrfrZ<^0>RTqxBZ@voo z2H&Gdr%H>RqvcHX;PT?p-~#rX*-3NaEf6U+o@0MB(#3fG#ET{NDn^=ILDiMp@(upKkJqX`&833kG; zSUY_g-K@I#i<#qmK(-s!Fua}M=!lKZ(Q>nQUFb%KpcMbGYcsWkOhn=?z%Mr@HQT8* zRzO^T!LpLbKrI7DRM%?d=36bgH;UrpankP3Om;B(@5Gp% - Search — Eggdrop 1.9.3 documentation + Search — Eggdrop 1.9.4 documentation @@ -31,7 +31,7 @@

      + href="index.html">Eggdrop 1.9.4 documentation @@ -59,6 +59,7 @@

      Table of Contents

    • IPv6 support
    • TLS support
    • IRCv3 support
    • +
    • Account tracking in Eggdrop
    • Encryption/Hashing
    • Twitch
    • Advanced Tips
    • @@ -146,7 +147,7 @@

      Search

      diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 20e288fc4..4857dc0ce 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about/about","about/legal","index","install/install","install/readme","install/upgrading","modules/included","modules/index","modules/mod/assoc","modules/mod/blowfish","modules/mod/channels","modules/mod/compress","modules/mod/console","modules/mod/ctcp","modules/mod/dns","modules/mod/filesys","modules/mod/ident","modules/mod/irc","modules/mod/notes","modules/mod/pbkdf2","modules/mod/seen","modules/mod/server","modules/mod/share","modules/mod/transfer","modules/mod/twitch","modules/mod/uptime","modules/mod/woobie","modules/writing","tutorials/firstscript","tutorials/firststeps","tutorials/setup","tutorials/tlssetup","using/bans","using/botnet","using/core","using/features","using/ipv6","using/ircv3","using/partyline","using/patch","using/pbkdf2info","using/tcl-commands","using/text-sub","using/tls","using/tricks","using/twitch-tcl-commands","using/twitchinfo","using/users"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["about/about.rst","about/legal.rst","index.rst","install/install.rst","install/readme.rst","install/upgrading.rst","modules/included.rst","modules/index.rst","modules/mod/assoc.rst","modules/mod/blowfish.rst","modules/mod/channels.rst","modules/mod/compress.rst","modules/mod/console.rst","modules/mod/ctcp.rst","modules/mod/dns.rst","modules/mod/filesys.rst","modules/mod/ident.rst","modules/mod/irc.rst","modules/mod/notes.rst","modules/mod/pbkdf2.rst","modules/mod/seen.rst","modules/mod/server.rst","modules/mod/share.rst","modules/mod/transfer.rst","modules/mod/twitch.rst","modules/mod/uptime.rst","modules/mod/woobie.rst","modules/writing.rst","tutorials/firstscript.rst","tutorials/firststeps.rst","tutorials/setup.rst","tutorials/tlssetup.rst","using/bans.rst","using/botnet.rst","using/core.rst","using/features.rst","using/ipv6.rst","using/ircv3.rst","using/partyline.rst","using/patch.rst","using/pbkdf2info.rst","using/tcl-commands.rst","using/text-sub.rst","using/tls.rst","using/tricks.rst","using/twitch-tcl-commands.rst","using/twitchinfo.rst","using/users.rst"],objects:{},objnames:{},objtypes:{},terms:{"04may2000":34,"3rd":5,"5c0":[21,30,34],"break":[15,41],"byte":[17,21,23,27,41],"case":[14,19,21,28,30,34,41],"catch":41,"char":[27,34,41],"const":27,"default":[2,3,4,10,11,14,15,17,21,23,29,30,31,32,34,40,41,43],"export":44,"final":[0,4,28,29,30,34,40],"function":[0,1,2,4,6,7,19,24,30,33,34,36,40,41,44,45],"import":[27,28,29,30,34,38,41],"int":27,"long":[6,10,14,18,21,22,32,34,41,42,45],"new":[4,5,7,19,24,28,29,30,34,35,36,37,38,39,40,43,44,46],"null":27,"public":[0,1,4,28,29,31,34,41,43,44,47],"return":[17,27,40,45],"short":[2,27,29,36,43],"static":[2,3,10,27,29,41],"super":2,"switch":[5,27,30,34,41,43,44],"throw":41,"true":28,"try":[3,4,6,7,20,21,25,27,28,29,30,34,45],"var":41,"void":27,"while":[0,4,5,10,16,24,30,32,34,38,40,41,46],AND:[19,30,41],ARE:28,Adding:[2,24,46],And:28,CVS:4,DNS:[2,6,41],DOING:28,For:[1,2,3,5,7,15,21,30,31,33,34,36,37,38,40,41,43,44,45,46],IPs:[29,31,36],NFS:23,NOT:[5,28,30,33,34,41,45],Not:[6,21,29,37],One:[0,4,28,41],THE:3,TLS:[2,3,4,5,29,30,34,41],That:[24,28,30,33,41,47],The:[0,1,2,3,4,5,6,10,11,13,14,15,16,19,21,22,23,24,25,27,28,29,31,32,33,34,35,37,40,41,43,44,45,46,47],Their:36,Then:[5,29,30,43],There:[1,3,4,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,29,31,32,34,36,40,42,43,46,47],These:[5,11,17,27,30,32,33,34,36,42,43,45,47],Use:[16,17,19,21,27,30,34,41],Used:41,Useful:41,Using:[2,4,27,41],WILL:45,With:[0,4,6,15,33,34,40,41,43],YES:7,Yes:7,aaa:41,abcdechannel:41,abil:[2,7,16,31,35,41],abl:[3,6,10,15,17,21,30,34,38,40,41],abort:[23,30,41,43],about:[2,4,6,24,25,27,28,29,34,41,44,46],abov:[1,3,4,10,17,19,27,28,29,35,41,42],absolut:[0,31,41,47],abus:[0,2,4],accept:[15,22,24,31,33,34,41,43,46],access:[0,4,16,21,27,28,29,30,35,38,40,41,43,45,46,47],accomplish:3,accord:[1,41,47],accordingli:21,account:[0,4,16,18,27,29,30,35,37,39,40,46],accur:[41,45],across:[0,4,33,37,39,41,44],act:[16,27,34,35,41,43],action:[28,29,31,34,41],activ:[2,10,16,30,32,38,41,43],actual:[0,4,15,27,28,31,34,38,41],acut:[],add:[3,4,5,7,10,16,17,24,27,28,30,31,33,34,35,40,46],add_builtin:27,add_hook:27,add_tcl_command:27,add_tcl_int:27,add_tcl_str:27,added:[0,3,4,5,19,22,24,28,30,33,34,35,36,37,40,41,43,45],addhost:17,adding:[4,7,21,27,34,35,37,41],addit:[2,4,5,16,21,30,34,41,43,45],addition:[16,30,41],addlang:[34,41],address:[18,22,25,30,33,34,36,43],addus:30,adh:34,adjust:[0,4,17],admin:[34,42],admit:23,advanc:[0,2,4,6,20,28,35],advantag:[5,30,44],advertis:[0,4,41],advis:[3,21,23],affect:[5,10,24,34,35,36,41,46],affet:41,affili:[1,46],after:[3,4,10,16,17,21,27,28,29,32,34,41,43,44,46],afterward:[17,34],again:[6,15,25,27,32,33,34,40,41,45],against:[10,15,19,21,28,30,40,41,45],age:41,aggress:33,aka:34,alarm:41,alert:46,algorithm:[19,40],all:[1,5,6,7,10,13,14,15,17,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,40,41,43,44,45,46,47],alloc:[27,41],allow:[0,3,4,5,6,7,10,11,15,16,17,18,19,21,22,23,24,27,28,29,30,33,34,35,40,41,43,44,46],alltool:34,almost:[0,4,30,32,47],along:[4,15],alphabet:34,alphanumer:46,alreadi:[10,21,27,28,30,31,33,34,40,41,46],also:[0,2,3,4,7,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,29,30,32,33,34,35,38,40,41,42,43,44,45,46,47],alt:[21,34],alter:[15,35,41,46],altern:[2,4,16,21,30,31,33,34,41,43],although:[17,30,34,41],altnick:[21,30],altogeth:19,alwai:[0,3,4,10,30,32,34,41],amount:[6,34],anachron:31,ani:[0,1,3,4,5,7,12,15,16,17,18,21,22,24,27,28,29,30,32,34,35,38,40,41,43,45,46,47],annoi:28,anonym:34,anoth:[0,10,15,17,18,21,22,27,30,33,34,41,42,45],another:5,ansi:41,answer:[0,7,13,16,21,28],any_other_funct:27,anymor:[6,9,19,34],anyon:[10,32,41],anyth:[0,4,15,28,29,30,33,34,38,41,45],anywai:34,anywher:[38,41],aol:[28,40],aop:10,apart:[27,34,41],api:6,apostroph:38,appear:[29,30,33,34,41,45],append:[27,41],appli:[30,32,34,40,47],applic:[1,34,41],appreci:31,appropri:[3,5,30,34,37,39,40],april:[24,45],apt:[30,31],arbitrari:41,arbitrarili:45,archiv:4,area:[6,15,34,41,44,47],aren:[30,34,41,44,45],arg:27,argument:[15,17,28,29,36,41,45],around:[0,4,24,31,36,41,46],arriv:41,ascii:41,ask:[4,17,29,30,38,41,43],assign:[33,34,41],assist:[2,30,43],assoc:[2,6],associ:[24,41,46],assum:[21,28,30,31,32,34,41],assumpt:37,assur:45,asynchron:[6,14,41],attach:[41,45],attack:[10,19,40],attempt:[5,10,16,17,21,24,31,32,33,34,41,43,46],attent:[5,21,41],attribut:[32,33,41,47],auch:27,aug:41,august:17,auth:[34,43],authent:[2,40,46],author:[28,31,34,43],auto:[33,47],autobotchk:[3,4,29],autoconf:3,autoconfigur:3,autodetect:43,autohalfop:10,autom:[0,2,4],automat:[2,3,4,5,12,16,21,30,32,33,34,35,36,40,41,43,46,47],autoop:10,autosav:12,autovoic:[10,47],avail:[4,10,15,19,25,27,29,30,31,34,35,36,38,41,46],avoid:[6,14,29],awai:[35,37,41],awar:41,awesom:28,b33f:30,baa:41,back:[21,28,30,34,36,39,40,41,44],background:[2,4,28],backslash:30,backup:[5,27],backward:[5,37],bad:[10,41,47],badg:47,badgui:45,ban:[0,2,4,10,17,24,33,34,35,46,47],bandwidth:[6,11],banner:[34,42],bar:41,barr:34,base64:29,base:[4,30,34,40,41],basi:30,basic:[2,4,6,7,20,28,30],bask:39,bbb:41,bcst:41,bear:1,becaus:[0,4,16,21,27,28,34,41,44,45,46],becom:[29,30,34,41],been:[0,1,4,5,15,17,21,27,32,34,35,41,45],befor:[0,4,10,14,16,17,18,21,22,23,27,29,30,33,34,41,46],began:37,begin:[16,28,36,41],behalf:41,behav:41,behavior:[13,17,32,34,36,41],behind:34,being:[0,4,10,15,17,21,31,35,36,41,45],beldin:33,bell:41,belong:34,below:[10,15,16,22,24,27,28,30,34,40,41,45],best:[3,6,16,30,33,41,45],better:[3,4,6,20,30,34],between:[3,6,10,15,18,21,22,31,33,34,36,41],beverag:40,big:[5,23,41,44],binari:[3,31],bind:[2,16,17,21,24,27,28,34,44,46],birthdai:34,bit:[3,15,24,28,30,31,34,41,43,46],bitch:10,bitchx:41,blank:41,bless:1,blindli:17,bloat:7,block:[23,24,27,30,42,46],blowfish:[1,2,5,6,19,27,34,40,41],bodi:28,bogu:34,bold:[4,41,42,47],boldfac:41,boot:34,bore:[2,4],boston:1,bot:[0,1,3,4,5,6,7,10,12,13,14,16,17,18,19,20,21,22,23,25,27,28,29,30,31,32,34,35,36,37,38,40,42,43,44,45,46,47],bota:33,botaddr:41,botaddress:41,botattr:33,botb:33,botc:33,botchk:[4,29,30],botdir:30,botfl:41,botflag:[2,22],both:[0,4,10,21,23,31,33,36,40,41,43],botnam:33,botnet:[0,2,3,4,6,8,10,12,15,21,25,30,35,36,38,40,41,44,47],botnetcentr:42,botnetnick:41,botnetop:10,botnick:[21,28,29,30,34],bottom:28,bottre:2,bounc:17,bound:[16,34,41],boundari:14,box:[30,34],brace:10,bracket:36,branch:[4,39],breach:41,brief:30,broadcast:[24,38,41,45,46],broken:[15,28,34,41],brows:15,brute:19,buf:17,buffer:22,bug:[0,3,4,28,30,39],built:[2,16,41,44],builtin:[16,41],busi:28,button:[39,46],bypass:41,bywho:41,cach:[14,41],cafil:[34,43],calcul:21,call:[0,3,4,27,28,29,33,34,41,45],can:[0,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],cancel:[6,41],cannot:[0,27,30,40,41,47],cap:[2,27,35,46],cap_net_bind_servic:16,capabl:[2,34,35,41,44,46],capac:46,capath:[34,43],capit:[4,47],caption:[],captur:[30,41,44],care:[34,41,46],carefulli:[30,41],carelessli:5,categori:41,caught:41,caus:[16,30,33,41,44],caution:41,cbc:41,ccht:45,center:42,central:[15,34],cerfif:[],cert:[29,34,43],certain:[32,34,35,36,41,42,45,47],certainli:[24,30,46],certif:[2,3,21,29,31,34,41],certifict:43,cet:34,chaddr:[5,33],chain:[34,43],challeng:[28,29],chan:[5,10,17,28,29,30,44],chanc:30,chanfil:[10,30,44],chang:[1,2,6,9,10,15,17,19,21,22,24,28,30,31,33,34,35,37,38,39,43,45,46],chaninfo:[29,33],chanmod:[10,29],channel:[0,2,4,5,6,8,12,17,20,21,22,24,27,28,30,32,33,34,35,38,42,44,46,47],channelflag:41,chanrec:[17,41],chanserv:10,chanset:[10,29,33],charact:[2,10,15,21,30,33,34,36,40],chase:[0,4],chat4:2,chat6:2,chat:[0,2,4,6,13,21,29,30,33,34,35,38,41,43,45,46],chatter:34,chattr:[29,47],check:[4,5,10,21,27,28,29,31,34,40,41,43,45],checkout:[30,39],chfinger:34,chghost:[35,37],chjn:41,chmod:[3,34],chof:41,choic:[1,21,28],chon:41,choos:[3,7,29,30,34,35,46],chpass:40,chpt:41,chri:1,chunk:21,cidr:[34,41],cipher:[34,41,43],claim:[24,46],clarifi:32,clean:15,clear:[4,6,39,41,43,45,46],clearchat:[24,45],clearmsg:[24,45],cleartext:41,clemson:47,click:[39,46],client:[15,16,21,24,29,30,34,37,41,43,46],cloak:29,clone:[2,4,10,30],close:[27,41],cmd:[34,41],cmd_t:27,cmsg:45,code:[1,2,3,4,7,27,28,41],coder:[],col:42,cold:[39,40],colon:[34,36],color:[4,41],column:42,com:[2,4,5,6,20,21,28,29,30,33,34,40,41,43],combin:[35,41],combo:29,come:[4,6,17,21,30,39,41],comfort:30,comma:[34,38,41],commadlin:30,command:[2,3,6,10,12,15,16,17,20,21,27,28,29,30,31,32,33,34,35,36,38,40,43,46,47],commandlin:30,comment:[15,17,25,28,30,34,40],commerci:30,common:[2,21,30,31,33,34,37,43,47],commonli:[29,31,34,41],commun:[2,27,33,38,39,41],compat:[3,5,37,41,45,46],compil:[0,2,3,4,27,30,31,34,36,41,43],complet:[3,4,10,15,22,30,35,41,43,47],compliant:[17,21,41],compon:41,comprehens:45,compress:[2,6,29],compris:37,concurr:[34,40],conf:[3,7,16,29,30,37,41,43],config:[2,3,4,6,7,10,11,12,13,14,16,17,18,19,21,22,23,24,25,27,28,29,31,32,33,34,36,40,42,43],configfil:41,configur:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,34,36,39,41,43],confirm:[39,41],conflict:16,connect:[2,4,5,6,14,15,16,21,24,27,29,30,33,34,36,38,43,46,47],connet:[],consequ:45,consid:[4,30,32,34,38,41],consider:40,consist:[33,35,38,41],consol:[2,4,6,10,27,35,38],constantli:27,constitut:[10,21,34],consult:[36,37,43],contact:[28,34],contain:[1,3,4,5,28,30,33,34,36,41,43,45],content:[40,41,45],contest:6,context:27,continu:[30,41],contribut:39,control:[0,2,4,17,21,28,29,33,34,35,43,46,47],conv_form:29,conveni:34,convers:[27,38,43],convert:41,cooldud:30,coordin:34,copi:[1,2,5,7,15,23,27,30,41],copyright:[0,1,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,32,33,34,35,36,37,38,39,40,41,42,43,44,47],core:[2,3,6,7,17,18,21,27,28,41,44],correct:[3,31,34,40],correctli:[3,41],correspond:[10,29,32,41],cos:10,could:[1,21,28,33,34,36,39,40,41,43,46],couldn:41,count:21,counterpart:41,coupl:41,cours:[3,28,33,34,41],cover:[32,33],cpu:[21,34,41],crappi:41,crash:[3,41],creat:[0,3,4,15,16,22,27,28,29,30,32,34,39,40,41,43,44,46],creation:29,credit:[28,41],cron:41,crontab:[2,3,29,41],cross:30,crotab:[],crt:[29,34,43],crypto:40,cryptograph:[19,40,41],crytopgraphi:40,ctcp:[2,6,10,21,29,30,34,41,43],ctcr:41,ctrl:41,curl:30,current:[2,4,6,7,9,15,17,18,19,24,27,29,30,34,35,38,41,42,43,45],custom:[16,21,28,29,35,41,43],cut:29,cycl:[10,21,34],cygwin:[2,36],daemon:[16,29,34],dai:[18,23,34,41,44],daili:[30,41],dalnet:[4,17,21],danc:41,danger:41,danish:34,data:[4,10,22,27,31,40,41],databas:[15,41],date:[1,4,30,34,41],db8:[21,30,34],dcc:[0,2,4,6,15,20,21,23,27,29,30,33,35,36,38,40,44],dead:30,deal:[34,41,47],dealloc:27,debian:[30,31],debug:[3,25,27,28,34,41,43,45],dec:[15,41],decemb:[0,26,35,38],decent:27,decid:[37,40],decis:46,declar:[28,41],decreas:34,defens:28,defin:[4,6,10,11,13,17,21,27,28,30,32,33,34,37,41,47],definit:[28,30,31,40],degrad:46,dehalfop:[10,41,47],del_hook:27,delai:[10,15,17,28],delet:[30,41,44],deliber:43,delimit:41,deliv:41,demand:[0,4],demonstr:[6,26],denot:[31,41],deop:[10,41,47],depend:[27,32,39,41,43,47],deprec:[5,31,41],deprici:21,depth:[34,43],der:29,deriv:40,desc:[6,27],describ:[27,28,30,31,33,34],descript:[6,27,28,29,34,41,45,47],descriptivebranchnam:39,deserv:28,design:[0,2,4,19,37,45],desir:[7,27,29,30,40],despit:31,dest:[3,6,30,31,34,41,43],destin:[16,27],destroi:[0,4],detail:[3,4,6,27,30,41,43,45],detect:[7,21,31,36,41,43],determin:[3,16,27,29,30,33,36,41,43],dev:[4,30,31],devel:3,develop:[0,1,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47],devleop:[],dict:[41,45],did:[1,40],didn:[28,30,41],die:[27,29,30],died:21,differ:[1,3,4,5,10,15,21,28,31,34,40,41,44,45],differenti:41,diffutil:3,digest:[19,41],digit:[34,43],dinner:40,dir:[6,29],direct:[7,31,33,39,41],directli:[5,6,10,16,22,30,41],directori:[2,3,4,6,7,23,27,29,30,31,35,39,43,44],disabl:[10,17,21,34,36,41,43],disc:41,discard:[22,41],disclaim:[2,41],disconnect:[21,22,34,41],discontinu:46,discourag:17,discuss:[4,39],disk:[0,23,30,34,35,41],displai:[12,15,17,21,29,30,34,41,42,45],displaynam:27,dispos:41,dissect:28,distinguish:41,distribut:[0,1,4,30],distro:31,dload:23,dns:[6,14,34,41],doc:[0,3,4,5,6,21,28,31,34,38,41,45,46],document:[2,16,28,30,31,33,36,37,39,43,44],doe:[10,24,28,29,32,34,37,38,41,45,46,47],doesn:[12,14,17,30,38,41,44,45],doing:[19,21,28,34,41,42],domain:[1,14,33],don:[4,7,10,14,15,17,21,22,24,27,28,29,30,33,34,38,41,43,44],donat:[24,46],done:[5,22,27,29,30,31,33,39,40,41,46],donkei:30,dontkickop:10,dot:38,doubl:21,doubt:36,down:[0,3,4,15,33,41],downer:24,download:[3,4,5,7,15,23,34,35,41],dozen:28,dp_help:27,dp_log:27,dp_mode:27,dp_server:27,dp_stdout:27,dport:16,dprintf:27,drastic:[27,41],driven:41,dronepup:41,drop:[3,4,34,41],dropp:[],dst:6,due:[17,21,28,34,41,45],dump:[21,34,41],duplic:41,dupwait:34,dure:[3,11,22,27,29,30],dynam:[2,3,10,29,30,32,41],dynamicban:[10,41],dynamicexempt:[10,41],dynamicinvit:[10,41],each:[0,4,6,10,15,18,23,28,29,30,33,34,35,38,41,44,45,47],earlier:19,easi:[5,28,30,41,43],easier:[3,19],easili:[0,1,2,4,28,35,41],east:34,ebai:34,ecb:41,ecdsa:29,echo:[35,37,44],ecparam:29,eden:41,edit:[2,3,28,44],editor:[29,30],editplu:30,edu:[41,47],effect:[15,32,34,41],effici:[0,4,30,33,34,35],effort:[0,4],efnet:[4,17,21],egg_lang:34,eggdrop1:7,eggdrop:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,32,33,36,37,40,42,43,44,46,47],eggdroptest:45,egggdrop:2,egghead:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,32,33,34,35,36,37,38,39,40,41,42,43,44,47],egghelp:[4,30],eight:[34,41],either:[3,4,15,16,29,30,31,32,33,34,36,41,43,45],element:41,elimin:29,els:[28,38,41],email:[4,29,34,41],embed:41,emerg:37,emot:45,empti:[41,45],enabl:[0,2,4,7,10,12,15,17,21,23,27,28,30,33,34,35,36,37,43,44,46],enclos:[10,36,41,45],encod:[41,42],encount:[30,46],encourag:[2,30,40],encpass2:40,encrypt:[2,5,6,9,19,29,31,33,35,43],end:[3,27,34,40,41,42],endless:10,enforc:[10,29,34],enforceban:10,english:[34,44],enhanc:7,enjoi:40,enlarg:3,enough:[34,41],ensur:[27,29,30,33,40,41],enter:[3,10,15,29,31,34,38,39,40,41,43,45],entir:[30,41,45,46],entitl:47,entri:[3,4,29,30,34],env:34,environ:[16,34,35,43],eof:41,equal:41,equival:[6,21,31],equivil:[],eras:[15,41],error:[4,21,27,30,34,41,46],especi:28,essenti:40,est:34,establish:[36,41,43],etc:[0,2,4,10,17,24,27,30,33,34,35,41,44,47],eth0:16,ethic:34,etiquett:4,european:34,evalu:41,even:[0,4,7,15,17,27,30,32,33,34,35,38,41,46],event:[0,4,24,27,33,34,45,46],eventu:19,ever:[29,30,34,41,43],everi:[0,3,4,10,15,17,21,23,27,28,29,32,34,36,40,41,47],everydai:34,everyon:[38,41],everyth:[3,28,41],everywher:[34,36,41],evnt:[21,41],exact:41,exactli:[15,17,27,28,41],examin:27,exampl:[2,3,4,5,7,15,16,21,27,28,29,30,31,34,38,41,43,44,45,46],exceed:34,except:[4,13,21,27,34,41,43],excess:[4,10,21],exchang:29,exclud:41,exclus:[21,41],execut:[2,3,7,27,28,41],exempt:[0,1,2,4,10,17,24,33,35,46,47],exhaust:[41,45],exist:[0,4,15,21,27,40,41,45,46,47],exit:[4,6,12,15,21,41],expand:[0,2,4],expans:41,expect:[6,13,34,41],experi:[3,15,28,30],experienc:3,expir:[10,17,18,21,32,34,41,43],explain:10,explan:[10,30,31,41,45],explicit:37,explicitli:[5,41,43],express:41,extend:[24,35,37,41],extens:[3,30],extern:[16,29,34],extra:[7,34,37],extract:[30,41],f270:30,face:46,fact:[0,4,45],fail:[14,23,34,41,43],failur:[41,45],fake:41,fals:41,famili:34,familiar:[4,28],fanci:40,fancyp:28,far:15,fast:30,faster:41,fastest:4,fatal:41,fault:27,favor:[5,22],featur:[0,2,4,7,10,17,21,22,29,30,34,36,37,39,41,43,46,47],februari:13,feel:[4,5,27,39],few:[24,28,30,31,34,41,46],field:[21,34,41,43],fifth:1,fight:10,figur:[3,30],fil:41,file:[1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,35,36,40,42,43,47],file_receiv:41,file_send:41,file_send_pend:41,filearea:41,filedb:[15,41],filemask:6,filenam:[6,10,18,30,34,43],filepath:6,files:15,filesi:[2,6,34],filestat:6,filesystem:[15,41,47],fill:[34,39,43],filt:[27,41],find:[3,6,14,17,20,27,28,29,30,38,39,41,46],fine:[17,21,34,45],finger:[13,30],fingerprint:[29,34,43],finish:[4,15,30,41],finnish:34,firewal:34,first:[0,2,4,5,15,19,21,27,28,30,31,33,34,40,41,43,44,45],five:41,fix:[0,3,4,27,34,41],flag:[2,5,6,10,13,17,22,27,28,30,34,35,42],flagmask:45,flash:42,flat:41,flexibl:[41,43],flood:[0,4,10,13,18,21,33,34,35,41,47],floor:1,flud:41,flush:22,focus:[24,46],folder:7,follow:[3,4,5,10,15,17,21,24,27,30,31,33,34,35,37,39,40,41,42,43,44,45,46],foo:[28,29,41],forbid:3,forc:[3,10,12,15,19,22,28,34,36,41],forcefulli:43,forev:34,forget:41,fork:[31,39],form:[0,4,27,28,41,42],format:[7,21,27,29,30,31,34,40,41,42,45],forward:18,found:[2,4,27,34,41,45],foundat:1,four:[10,28,34,36,41,42],fourth:28,fprint:[34,43],fragil:41,franklin:1,free:[1,2,5,27],freebsd:36,freeli:[0,4],freenod:21,french:34,frequent:[4,30],fresh:34,fri:41,friend:[10,47],frim:27,from:[0,1,2,3,4,5,6,7,10,15,16,17,18,19,21,22,24,27,28,29,30,31,32,33,34,36,38,40,42,43,44,45,46,47],front:[10,28,30,31,41,46],ftp:[5,30],full:[3,4,5,24,30,36,41,43,45,46],fuller:1,fulli:[5,34,41,46],fun:[3,46],func:27,func_nam:27,func_tabl:27,function_to_cal:27,further:[29,41],futur:[3,17,30,40,41],fwd:18,gain:[0,4,40,47],game:[0,2,4,24,46],garbag:27,gatewai:[24,45,46],gave:30,gayteen:0,gcc:3,gener:[0,1,3,4,19,24,28,29,30,37,40,41,43,46],genkei:29,genrsa:34,geo:28,german:34,get:[6,7,10,21,22,23,27,28,31,34,38,47],geteggdrop:[2,4,30],getinfo:41,getop:10,gif:15,git:[2,3,30,39],github:[2,4,30],give:[3,4,10,15,21,28,30,33,34,35,38,40,41,47],given:[4,14,15,16,30,41,45],global:[2,12,16,17,21,22,27,28,32,33,45,47],globalflag:41,gmt:[34,41],gnu:[0,1,3,4,11],goe:[3,10,29,32,33,38,41,43],going:[0,4,15,21,28,31,41],gone:[17,41],goober:41,good:[0,15,21,24,28,30,34,41,46,47],got:41,gpl:[0,4],grab:41,grain:28,grant:[29,35,43,46],graphic:43,greater:41,gree:28,greet:[0,2,4,10,28],greetmsg:28,greetscript:28,grep:29,ground:34,group:[15,16,34,37,41],grown:0,gseen:[6,20],guarante:17,guess:17,gui:45,guid:[2,3,28,30,31],gunzip:30,guppi:41,gzip:[11,41],had:[3,5,10,33,34,41,46],haha:4,halfop:[10,41,47],hand:[28,34,41],handi:30,handl:[28,29,32,34,40,43,45],handshak:41,hang:[6,14],happen:[28,30,32,34,41],hard:[28,34],harder:28,hardwar:[0,4],has:[0,1,2,4,5,10,14,15,17,21,28,30,31,32,33,34,35,36,40,41,43,45,46,47],hash:[2,5,19,30],hasn:21,hate:47,have:[0,1,3,4,5,6,9,10,12,15,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,36,38,40,41,43,44,45,46,47],haven:30,head:34,header:[2,4,27,28,31,43],heaven:3,held:45,hello:[17,21,29,30,34,35,41],help:[0,3,13,21,27,28,29,30,32,33,34,36,38,41,42,47],helper:3,henc:[7,27,41],here:[2,4,10,13,14,15,17,18,21,23,28,29,30,32,33,34,41,44,45],herself:4,hidden:[15,30,35],hide:[6,36,41],high:44,higher:[17,19,22,23,30,43],highest:41,highli:[3,21,30],highlight:47,him:1,himself:4,hint:28,his:[21,30],histori:45,hit:41,hold:[22,41],hole:34,home:[3,15,16,29,30,43],hook:27,hook_5minut:27,hook_backup:27,hook_daili:27,hook_di:27,hook_hourli:27,hook_idl:27,hook_load:27,hook_minut:27,hook_num:27,hook_pre_rehash:27,hook_read_userfil:27,hook_rehash:27,hook_secondli:27,hook_userfil:27,hope:[30,46],hopefulli:[3,41],hors:30,host:[0,2,4,10,16,21,24,28,32,33,34,43,45,47],hostmask:[28,29,32,33,35,40],hostnam:[6,10,14,29,34,36],hosttarget:[24,45],hour:[6,25,27,32,34,41],hourli:[18,27,34],how:[0,3,6,10,13,14,15,18,21,22,24,28,29,30,31,32,33,34,41,43,44,45,46],howev:[4,7,13,21,29,31,34,40,41,43,44],htgt:45,html:[4,36],http:[2,4,6,20,25,30,37],hub:[4,22,30,33,34,40,43],hubbot:31,hubcap:47,humor:29,hup:41,hurt:5,iconfig:[3,7,30],idea:[28,30,39],ideal:[40,46],ident:[2,6,7,17,21,29,34,36,40,41],identd:[16,30],identifi:[29,34,40,41,47],idl:[10,27,41],idx:27,ignor:[0,4,13,21,22,28,33,34,35,41,45],ill:41,imag:4,immedi:[21,30,40,41],imperson:16,implement:[6,7,16,31,34,37,39,40,41,46],implementatino:31,impli:[1,27],importantli:28,improv:[0,4],inact:[10,23],inc:1,incess:0,includ:[0,2,3,4,7,17,25,27,29,30,31,32,34,35,36,40,41,43,45,46],incom:[15,34,41],increas:[34,40],incred:[30,41],independ:7,indic:[21,27,30,41,45],infeas:[24,46],infin:34,infinit:15,info:[3,4,10,12,17,27,30,34],inform:[0,2,3,4,5,6,10,15,25,27,28,29,30,33,34,36,37,41,43],infrastructur:43,ing:[17,24,46],init:[21,34,41],init_serv:21,initi:[27,28,30,36,37,41,43],input:41,insecur:10,insensit:41,insert:[10,42],insid:[28,34],instal:[0,4,5,28,29,31,34],instanc:10,instantli:21,instead:[1,4,5,10,15,16,17,22,24,30,34,40,41,43,44,46,47],instruct:[7,30,40],integ:[10,41],integr:2,intend:[3,32,41],intens:21,intent:[24,46],intention:28,interact:[3,4,6,16,17,34,41,43,46],intercept:41,interchang:[31,36],interest:4,interfac:[2,24,41,46],intern:[21,34,41,45],internet:[0,4,41,43],interpret:[3,36,41,42],interv:41,introduc:[4,30,41],invalid:41,invers:42,invit:[0,2,4,10,17,24,33,35,37,46],invite:41,invok:41,involv:29,invt:41,ipaddress:41,iptabl:16,ipv4:[30,34,36],ipv4address:41,ipv6:[2,30,34,35,41],ipv6address:41,irc:[0,4,6,15,16,21,24,28,29,30,32,33,34,35,36,37,38,41,42,44,45,47],ircawai:41,ircd:[17,21,41],ircii:[23,41],ircnet:[4,10,17,21],ircop:[10,17],ircu2:17,ircv3:[2,35,41,44],isn:[6,15,21,22,25,30,32,41],isol:33,isop:10,isoptest:10,isp:30,issu:[4,5,16,24,30,34,39,41,43,45,46],issuer:43,istn:10,ital:41,item:41,its:[1,2,4,7,10,15,16,17,19,21,22,24,28,30,33,34,35,39,41,44,46],itself:[27,28,29,34,41],itsself:15,j9irk4vs28b0obz9easys4w2ystji3u:46,jan:[41,43],janitor:[15,47],januari:[1,8,9,12,18,20,23,25,41],jkp:30,job:43,john:1,join:[2,6,10,12,17,18,24,28,30,31,32,34,35,37,38,41,45,46,47],jpk:34,jul:7,juli:0,jump:[21,33,43],jun:44,june:16,jupe:41,just:[0,3,4,5,6,14,15,17,19,22,27,29,30,33,34,38,40,41,44,45,46],karma:39,keep:[2,4,10,15,21,23,30,34,46],kei:[2,3,10,17,24,28,29,34,40,45,46],kept:[32,34],keyout:[29,43],keypair:[29,31],kick:[10,17,21,34,41,44,47],kicker:41,kiddi:34,kill:[30,41],killer:5,kilobyt:[15,34],kind:41,know:[17,18,21,24,27,28,32,33,34,41,44,46],knowledg:0,known:[21,29,34,40,41],kreativrauschen:[6,20],kvirc:43,lag:[34,38],lame:[10,17,33,34,41],lamer:34,lameshar:33,lamest:[10,30,33,34,42],lamestbot:[3,10,18,21,30,33,34,42],lang:44,languag:[28,34,35,44],larg:[2,15,17,21,34],larger:[28,40],last:[0,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,30,32,33,34,36,37,38,41,42,43,44,45,47],laston:41,later:[1,3,6,9,18,19,25,28,30,34,41,43],latest:[4,5,30],launch:30,layer:[29,31],lazi:17,leaf:[33,34,40,43],learn:[17,29,30,34,35,41],least:[4,17,27,30,32,34],leav:[10,21,30,34,38,41,46],left:[17,41],legal:[2,4],len:21,length:[17,21,27,40,41,43],less:[13,38,41],let:[4,6,10,14,18,27,28,30,33,34,35,41],letter:[4,34,47],level:[11,16,29,34,47],libera:[2,4,5,21,27,28,29,30],librari:[28,40,43],libssl:[4,30,31],licens:[0,1,4],lieu:41,life:[18,30],light:46,like:[0,1,4,6,9,10,13,15,17,19,27,28,29,30,34,35,36,38,39,40,41,43,45,46,47],limbo:34,limit:[2,6,10,15,17,21,33,36],lindex:41,line:[2,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,33,34,35,40,41,43,44,45,46],link:[0,2,3,4,5,6,7,15,22,23,27,34,35,37,40,43,44],linux:36,list:[0,4,6,10,14,15,19,21,22,24,25,27,28,29,30,31,33,34,35,37,38,43,45,46],listen:[29,30,33,34,36,43],liter:[27,41],littl:[3,5,15,24,30,33,44],llama:33,llamabot:[30,34],load:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,33,34,40,41,46],loadmodul:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,34,40,46],lobster:40,local:[15,28,30,34,38,39,41,43],localfil:6,locat:[2,4,23,28,29,31,34,43],log:[0,2,4,10,19,24,27,30,39,40,41,46],logfil:[25,27,30,34,44],logfilenam:34,logflag:34,login:[30,34,40,45],logmod:27,logsiz:34,longer:[3,5,15,17,19,27,30,31,41],look:[0,4,5,6,10,20,25,26,28,29,31,34,35,40,41,43,46],lookup:[14,34,36,41],lose:10,lost:41,lot:[5,17,28,30],low:[21,23],lower:21,lowercas:21,lsa:15,luck:[30,46],lurk:2,mac:36,machin:[3,16,30,34],macro:27,made:[0,1,3,4,5,10,22,39,41,43,46],magic:28,mai:[1,4,5,10,11,15,16,17,23,28,30,33,34,36,37,41,44,45,46],main:[7,28,30,31,38],maintain:[2,16,30,44,45],mainten:47,major:[27,30,41],make:[0,2,3,4,5,6,7,10,13,15,19,21,22,24,27,28,29,30,31,34,36,37,39,41,43,44,46],makefil:[3,27],making_modulenam:27,man:34,manag:[2,4,6,15,24,31,46],mandatori:41,mani:[4,5,10,14,15,17,21,27,29,30,31,33,34,41],manipul:[2,34],manpag:34,manual:[4,29,33,34,36,41,43,45],mar:36,march:[32,42,47],mark:[15,35,41,47],mask:[15,21,28,34,45],masquerad:34,master:[15,29,30,32,33,34,41,42,47],match:[1,2,10,15,17,27,28,32,34,40,43,45],math:41,matter:[1,14,28,29],max:[15,17,18,21,23,34],maxdepth:[],maxim:34,maximum:[10,14,15,17,18,21,23,34,40,41,43],maxsend:14,mayb:[28,34],mco:[34,41],mcobx:30,md5:[6,9],mean:[15,17,21,28,29,32,33,34,35,36,40,41,43,45],meaning:[24,41,46],meaningless:47,measur:21,mechan:29,meet:43,mem:41,member:[10,27],memberlist:41,memori:[27,41],mention:27,meridian:34,messag:[4,10,21,27,28,30,34,35,37,38,40,42,44,45],method:[4,6,9,16,17,19,24,28,29,30,31,40,44,46],midnight:34,might:[4,17,23,27,34,41,43],migrat:5,militari:34,milk:47,min:34,miniatur:38,minimum:[0,10,41,45],minor:[27,41],minu:10,minut:[4,10,17,23,27,29,30,32,34],mirc:[21,41],misc:[34,41],miscellan:2,misnom:41,miss:[4,30,41],mix:[10,17],mkcoblx:34,mkdir:6,mnnrrpp:41,mnot:22,mnt:30,moc:41,mod:[3,6,7,20,24,27,34,41,45],mode:[4,5,10,13,17,21,24,27,29,32,34,35,37,46],mode_proc:41,mode_proc_fix:41,modechang:41,moder:[24,29,45,46],modern:[16,40],modes_per_line_max:17,modif:[5,30,41],modifi:[2,6,14,17,28,34,41],modul:[0,2,4,30,33,35,40,46],modular:2,module_clos:[],module_depend:27,module_entri:27,module_expmem:[],module_find:27,module_load:27,module_nam:27,module_regist:27,module_renam:27,module_report:[],module_start:[],module_t:[],module_undepend:27,module_unload:27,modulenam:[7,27],moment:[17,30,31],monitor:[32,35,37],month:[34,41],moo:41,more:[3,4,5,6,13,15,17,20,27,28,29,30,31,33,34,35,37,39,40,41,43],moreov:34,most:[0,2,4,5,16,17,21,27,28,29,30,31,34,35,38,41,45,46],mostli:[24,41,46],motd:[34,42],mount:23,move:[3,4,15,21,30,41,46],mpj:41,mrlame:[30,34],mrslame:[30,34],msg:[4,6,17,20,21,29,30,34,35,38,40,45],msgid:[41,45],msgm:[21,41],much:[2,3,24,27,30,38,41],multi:30,multipl:[0,2,4,16,28,30,33,34,35,41,45],must:[1,2,3,4,10,14,16,17,21,23,27,29,30,31,33,34,40,41,43,45],mydir:15,myownevent123:41,myproc:41,mytag:41,myvar:44,myword:17,name:[3,4,6,8,15,21,27,28,29,30,31,34,45],nano:30,nat:[16,34,36],natur:45,nearli:7,necessari:[10,31],necessarili:41,need:[0,3,4,10,14,16,17,21,27,28,29,30,31,33,34,36,40,41,43,45,46,47],needal:41,needop:41,neg:[14,34,41],negcach:14,negoti:[41,43],net:[1,3,17,21,24,30,37],netbsd:36,nethack:47,netsplit:[16,17,34,35,41],network:[0,2,4,17,21,34,41,42],never:[4,5,10,34,41],new_module_nam:27,newer:[5,30],newhandl:41,newidx:41,newnick:41,newus:[30,34],next:[5,10,15,21,27,28,30,31,34,41],nfree:27,nice:27,nicebot:30,nick:[10,17,21,25,28,29,30,34,47],nicknam:[6,21,28,29,30,34,42,44,45,47],nickserv:[2,43],nist256p:29,nkch:41,nmalloc:27,no_irc:[6,21],nobodi:[15,28],node:[29,43],nodesynch:10,noemail:4,non:[3,10,14,16,17,21,27,29,32,33,41,43,46],none:[8,9,10,12,14,18,19,20,21,23,26,41],noout:29,noqueu:41,nor:16,normal:[0,4,6,13,14,15,16,21,27,28,31,34,41,43,44,45,46],notabl:46,notat:34,notc:41,notcproc:41,note:[2,3,6,7,9,10,14,17,19,21,22,27,29,30,33,34,40,43,45,46],notebox:41,notefil:[18,41],notepad:30,noth:[27,34,41,46],notic:[2,13,15,28,33,34,41,46],notif:41,notifi:[18,21,30,34,35,37,41],nots:1,nov:33,novemb:[22,37],novic:[0,4],now:[3,5,15,16,17,28,29,30,31,33,34,36,40,41,45,47],ntik:41,number:[2,10,15,17,18,19,21,23,24,27,30,31,33,34,40,41,43,45,46,47],numer:[29,31,41],nxdomain:14,oauth:46,obtain:[2,31,43],obvious:[32,41],occur:[17,28,41],occurr:27,octal:34,octob:[10,19,21,34],off:[10,16,17,21,30,33,34,38,41],offer:[30,31,45,46],offici:[2,4],offlin:41,offset:34,often:[4,6,14,29,34,45],oident:16,oidentd:16,okai:34,old:[6,19,21,30],old_module_nam:27,older:[4,36,41],oldest:[2,41],oldhandl:41,omin:28,omit:[41,43],onc:[4,10,15,17,19,21,28,29,30,39,41],one:[4,10,15,16,17,21,27,28,29,30,31,32,33,34,35,38,39,40,41,43,44],ones:[14,22,33,36,41],onjoin:18,onli:[3,4,5,6,7,10,15,16,17,18,20,21,22,25,26,28,29,30,32,33,34,36,38,40,41,42,43,44,45,47],onlin:[6,15,18,29],opchar:17,open:[16,29,34,38,39,41,43],openbsd:36,openssl:[2,3,4,19,29,30,31,34,43],oper:[13,21,28,34,36,41,42],opped:[10,41,47],opping:[0,4],oppos:41,ops:[10,41,47],optim:[6,21],optino:37,option:[1,3,4,7,10,15,16,19,21,29,30,34,43,46],order:[4,14,28,34,40,41,43,45],ordinari:[41,43],org:[2,4,5,6,25,28,30,31,33,34,41],origin:[1,21,30,39,41],oss:16,other:[0,1,4,6,9,10,14,15,16,17,18,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47],otherdir:3,otherwis:[3,4,12,15,28,32,33,34,36,40,41,43,45],our:[30,33,41],ousterhout:1,out:[0,3,4,23,25,28,29,30,33,34,38,40,41,43],outform:29,outgo:[34,41,44],output:[2,3,27,29,31,40,42,44,45],outsid:[19,31,34],over:[15,21,24,27,28,30,34,36,41,43,44,46],overhead:7,overrid:[22,36,43],overridden:17,overwrit:[16,30,41],overwritten:[5,34,41],own:[1,7,15,16,21,22,28,29,30,31,37,41,43,44,46],owner:[4,10,30,34,38,41,47],p_tcl_hash_list:27,packag:[1,3,4,30,31],pad:41,page:[30,39],pai:[5,41],pain:[23,30],pair:[29,31,41,43,45],paragraph:3,paramet:41,paranoid:[22,34],pars:41,part:[0,4,21,24,28,34,35,41,43,44,46],parti:[2,5,12,30,33,34,35,41,43,47],particular:[5,29,34],partproc:41,partylin:[2,4,6,12,30,31,33,34,36,40,41,43,44,45,46,47],pass:[28,29,30,36,38,40,45],passiv:33,passthru:34,password:[5,6,9,17,19,21,22,29,30,33,34,35,38,40,43,46],past:[1,4,27,34],patch:[2,36,41],path:[2,3,15,16,30,31,41,43],pathnam:41,patient:15,pbk:40,pbkdf2:[2,5,6,40],peer:[21,34,43],pem:[29,34],penalti:21,pend:[6,10],peopl:[4,10,15,16,17,18,21,22,28,30,34,35,38,41,42,47],per:[17,41,45],percent:42,perform:[0,3,4,5,10,30,41,47],perhap:30,period:[6,14,30,41],perm:34,perman:[10,32,34,41],permiss:[4,34,40],permit:41,perorm:2,persist:30,person:[4,28,30,34,41],phew:30,phrase:41,physic:33,pick:41,pictur:5,pid:[30,34,41],pidfil:34,piec:[3,28],ping:13,pipe:33,pl1:41,place:[1,3,5,7,10,15,17,28,30,32,34,41,43,46],plain:[29,34,43],plaintext:[29,41,43],plan:[4,28,41],platform:[0,4,24,41,46],pleas:[4,5,6,7,9,10,16,19,21,31,34,37,41],plu:[10,21,34,41,43],pmsg:28,point:[3,6,21,26,30,33,34,41],pointer:[1,3,4,35,42],popul:45,popular:[0,4,5,30,34],port:[1,5,14,16,21,22,29,30,31,33,34,36,43],portabl:41,portion:[3,7,10,41],portrang:34,posit:[27,34],posix:41,possibl:[3,10,13,15,21,29,31,34,36,37,38,41,43,45],potenti:[5,16,28,41,45],pour:39,power:[4,35],practic:40,pre:[41,43],preced:[30,41,43],prefer:[34,36,43],prefix:[5,17,21,28,31,34,38,43,45,46],preinit:41,prematur:30,prepar:33,prepend:34,prerehash:41,prerequisit:2,prerestart:41,prerout:16,present:[2,6,28,29,36,41,45,46],preserv:30,pretend:46,pretendnet:31,pretti:[0,38],preval:29,prevent:[0,4,10,17,18,24,30,33,36,41,46],previou:[1,4,5,19,30,41,46],previous:[5,30,41],primari:[21,34],prime256v1:29,prime:34,printf:27,prior:[3,29,30,40,43],prioriti:41,privat:[18,22,28,29,30,31,34,38,41,43],privatekei:[29,31,34,43],privileg:[0,4,16,47],privmsg:[10,28,29,41],probabl:[4,21,29,30,31,41],problem:[30,34,36],proc:[21,27,28,45],proce:41,procedur:[2,22,45,47],process:[0,3,4,5,11,15,16,23,29,30,33,40,41,43],procnam:[28,41,45],produc:[34,41],program:[0,2,4,16,29,30],progress:15,prohibit:34,project:[2,39,46],prompt:[3,4],promptli:30,proper:[3,36,41],properli:[5,30,31,33,34],protect:[0,2,3,4,10,19,21,29,30,32,34,40,41,43,47],protectfriend:10,protecthalfop:10,protectop:10,protocol:[31,34,37,41,43],prove:30,provid:[0,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,27,29,30,34,36,37,39,41,43,45,46],pseudo:41,pub:[4,5,21,29,41],pubkei:29,publicli:25,publish:34,pubm:[21,41],pull:[4,39,40],punish:[10,41,47],purpos:[0,1,6,25,26,33,34,41],push:[39,41],put:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,34,41,43],putlog:[21,27,28],putquick:21,putserv:[10,28,29],putti:29,pwd:[6,30],quakenet:[4,21],qualifi:34,quann:[6,20],queri:[14,16,36],question:[4,29],queu:[15,21,41],queue:[21,27],quick:[2,27,30,34],quicker:30,quickli:[2,34],quiet:[21,34,47],quit:[4,6,21,30,34,41],quot:[41,45],quota:34,raid:[24,46],rais:[10,21],ram:34,rand_max:41,random:[10,21,33,41],rang:[30,34],rate:21,rather:[5,41,43],raw:[34,43],rawt:41,rcvd:41,reach:[17,21,34],react:28,read:[0,2,3,4,6,7,16,27,28,29,30,31,34,41,42,46],readabl:41,readm:[2,3],readonli:27,real:[21,27,41],realli:[28,30,34,44],realnam:21,reason:[4,27,29,30,33,34],reboot:[16,29],receiv:[14,15,21,23,29,33,41,45],recent:[4,30,41,43],recev:[],recipi:41,recogn:[17,21,29,47],recom:5,recommend:[4,10,23,27,30,40,41,44,45],recompil:[17,30],reconnect:[22,41],record:[2,22,27,35,47],redirect:16,reduc:[27,45],refer:[27,28,31,34,41],refin:28,reflect:[5,41],refresh:[41,45],regardless:41,regist:[2,10,29],regular:[10,41,43],regularli:35,rehash:[7,27,28,34],reiniti:41,reject:[21,33,34],rejn:41,rejoin:[30,41],rel:[14,27,30,41],relai:[0,4,33,34],relat:[1,6,10,28,36,41],releas:[0,1,30,40,41],relev:[4,27,30],reli:41,reliabl:[41,45],relink:33,relinquish:41,rem_builtin:27,rem_tcl_command:27,rem_tcl_int:27,rem_tcl_str:27,remain:[10,32,41],remaind:[15,45],rememb:[10,28,29,30],remind:34,remot:[15,33,34,41,42],remotebotnam:41,remov:[5,10,15,19,27,29,30,32,35,36,40,44,45,46],renam:[2,15,27,30,34,41],render:[5,24,46],repeat:[4,41],replac:[10,21,27,29,34,41,42,46],repli:[6,13,14,16,17,34,41],replic:[45,46],repo:39,report:[6,15,25,27,30,44],repositori:[4,30],repres:[41,45],req:[29,34,43],request:[0,4,5,7,10,13,15,17,21,30,32,34,36,37,39,41,43,44,46],requir:[2,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,34,40,43,45],reread:41,resend:[14,41],reserv:[30,34,38],reset:41,resolut:34,resolv:[6,14,34,41],resourc:27,respect:[14,36,41,42],respond:[10,30,41],respons:[21,41],rest:[3,27,33,34,40,41,45],restart:[2,3,4,5,7,28,30,34],restrict:[1,15,16,21,34,41,42,46],result:[21,32,34,36,41],resum:41,resync:22,retain:41,retri:23,retriev:[6,18],retrydelai:14,reus:[5,41],reveng:10,revengebot:10,revers:[40,41],revert:41,review:[29,31],revis:[0,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,32,33,34,36,37,38,41,42,43,44,45,47],revok:[21,34],rfc1459:[37,41],rfc2812:37,rfc:[17,21,24,41,46],rfc_compliant:41,rich:[0,4,30],right:[6,15,16,26,28,30,41],rijndael:19,risk:[1,21],rizon:21,rmdir:6,rmst:45,robei:[1,3,4,35,42,47],robot:35,roomsstat:24,roomstat:[24,46],root:[15,16],round:[19,40],rout:[16,41],routin:[17,34,41],rsa:34,rule:30,run:[2,3,4,5,7,10,16,21,27,28,29,30,31,33,34,40,42,43,45],s_client:43,safe:[19,29,30,31,40,46],sai:[4,10,15,28,31,33,41],said:[28,33,41],sake:46,salt:[28,40],same:[0,3,4,5,7,10,11,16,17,27,28,30,33,34,37,40,41,42,43,44,45],sampl:[10,30,46],sane:21,sanitycheck:34,sasl:[2,30,35,37],save:[5,6,10,11,12,22,33,34,35,40],scan:30,scenario:[31,33],schat:[34,43],schedul:41,scheme:1,scope:31,screen:[4,39,42],script:[0,2,3,4,7,10,21,29,30,32,35,36,41,44,45,46,47],scripter:33,sdcc:43,sdebug:3,seamless:40,seamlessli:19,search:[27,29,41],sec:34,second:[4,10,13,14,17,21,23,27,28,34,44],secondli:41,secret:10,section:[5,10,17,21,24,28,30,33,34,41,46],secur:[0,2,4,6,9,19,29,30,33,34,35,40,41],see:[0,2,3,4,5,6,10,15,17,21,24,25,27,28,29,30,31,33,34,36,38,39,40,41,42,45],seen:[2,6,10,34,41],selecet:41,select:[4,30,34,35,39,41],self:[2,21,31,34,43],send:[4,6,11,15,17,18,21,22,23,27,28,30,33,36,41,44,45],sender:41,sens:[0,4],sensit:40,sent:[6,15,17,22,25,29,34,37,38,41,43,45,47],separ:[3,7,21,30,33,34,35,36,37,41,44,45],septemb:14,seri:[30,41,43],serv:34,server:[2,5,6,7,10,13,14,15,16,17,19,24,25,27,29,30,34,35,36,37,43,44,45,46],serverlist:41,serverop:10,serverror:21,servic:[6,10,16,24,29,41,43,46],servivc:41,session:[4,36,37],set:[0,1,2,3,5,6,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,31,32,33,35,37,38,40,42,44,45,46,47],setcap:16,setnam:[35,37],setup:[4,6,7,30,34],seven:[10,41],sever:[0,4,13,27,30,31,37,41,44],sexystuff:28,sha1:43,sha1sum:29,sha256:19,shall:34,share:[0,2,4,6,10,11,23,27,34,35,41],sharebot:[33,34,41],sharefail:23,she:41,shell:[0,3,4,16,29,30,34,41],shorter:10,should:[1,3,4,5,10,12,13,14,15,17,19,21,22,24,27,28,29,30,33,34,36,38,40,41,43,45,46],shouldn:16,show:[4,6,10,15,25,28,33,34,41],shown:[15,30,34],shutdown:41,shutdownreason:41,side:[34,41,43,46],sidenot:31,sighup:41,sigil:41,sigkil:41,sign:[21,29,31,34,41,42,43,46],signal:41,signific:[4,6],significantli:45,signoff:41,sigquit:41,sigterm:41,silent:34,simialar:[],similar:[4,10,29,30,34,38,39,41,44],similarli:45,simpl:[4,27,28,29,30,41],simpli:[4,5,29,30,31,37,41,46],simplifi:41,simul:[34,41],simultan:[15,23,41],sinc:[0,3,5,17,30,33,34,35,36,41,43,44],singl:[16,17,29,41,45],sit:[0,4,10,34,40],site:[6,47],situat:33,six:41,size:[15,23,27,34,41],skim:4,skip:[30,41],slash:[30,38],slave:33,slennox:30,slow:[15,30,34],slower:34,small:[3,23,33,44],smaller:3,smile:3,snapshot:[2,30],snowbot:15,snt:29,sock:[27,34],socket:[16,27,31,41,43],softwar:[0,1,2,4],solut:40,some:[0,4,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,30,32,33,34,35,36,37,41,43,44,46,47],someircnetwork:34,someon:[4,10,17,28,30,31,41,45],someth:[4,28,30,39,41,46],sometim:[4,21,30],somewher:[3,34],song:41,soon:[10,41],sort:[0,4,32],sound:28,sourc:[1,3,4,5,6,7,27,28,31,34,39,41,43,44],space:[0,23,34,37,41],spawn:0,special:[33,41],specif:[6,10,14,16,17,19,21,24,30,33,36,37,41,43,45,46,47],specifi:[10,14,15,16,18,21,22,27,29,30,32,34,35,36,40,41,43,45],spectrum:[24,46],spent:[30,41],split:[10,17,36,38,41,42],splt:41,spoiler:46,spoken:41,spoof:16,spread:34,squar:36,squelch:21,src:[3,7,17,27],ssh:30,ssl:[2,3,4,5,21,29,30,31,35,41],sslcert:[3,31,34,43],sslinc:43,ssllib:43,sslport:43,sslsilent:[3,43],sssss:[],stabil:23,stabl:[2,4,30],stack:[17,36,41],stackabl:41,stage:27,stai:41,stall:41,stand:[0,4,30],standard:[14,16,17,23,27,28,37,41,43,46,47],start:[2,3,4,5,6,9,16,19,21,26,28,29,33,34,37,38,40,41,42,45,46],starttl:43,startup:[2,40,41],stat:6,state:[4,41],statement:41,statist:[6,15,25],statu:[0,2,4,10,24,27,31,34,44,45,46],statuslog:10,stb:21,stdio:27,stdlib:27,stdout:27,stealth:[30,34],step:[2,3,5,27,30,46],stick:32,sticki:[32,41],still:[1,4,5,10,15,22,30,31,34,35,41,46],stone:21,stop:[0,10,15,17,27,41,45],stopnethack:[10,47],storag:[6,12,40],store:[5,6,10,12,15,18,24,25,28,30,33,40,41,45,46],str_dir:27,str_protect:27,stream:[24,46],street:1,strftime:34,string:[2,17,27,28,29,34,40,45,46],strong:34,strongli:[2,4,30],stuff:[2,4,27,28,30,34,41],style:32,sub:[15,41],subdirectori:[15,41],subject:43,sublist:41,submit:[2,41],subscrib:[45,46],subsequ:41,substitut:[2,34],succeed:41,success:[27,30,41],successfulli:[4,27,41,45],sudo:[16,30],suffic:28,suffici:31,suffix:[7,34],suggest:[5,27],suit:[16,30],suitabl:45,sum:28,summar:21,sun:34,sundai:41,supplant:41,suppli:34,support:[0,2,3,4,5,6,8,10,11,14,16,17,18,21,22,23,29,30,31,32,34,35,41,44,46],sure:[4,10,27,28,30,31,33,34,41,46],symbol:[31,41],synchron:43,syntax:[5,29,34,43,47],sys:27,system:[2,3,7,14,15,16,27,29,30,34,35,36,41,42,43],tab:27,tabl:[27,37,41],tag:[15,35,37,45],tail:29,take:[3,4,5,6,15,19,21,25,28,30,34,40,41,43],taken:[27,41],takeov:17,talk:[28,31,35,38],talli:27,tar:[4,7,30],tarbal:[0,30],target:45,task:[0,2,4,33],tcl:[0,1,2,3,4,6,10,11,21,27,28,30,32,34,35,36,43,44,46],tcl_cmd:27,tcl_int:27,tcl_string:27,tclsh:4,tcltk:4,tcp:[2,16,36],team:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,32,33,34,35,36,37,38,39,40,41,42,43,44,47],technic:46,techniqu:44,tell:[15,28,29,30,31,33,34,41,46],telnet:[2,29,30,33,35,36,38,40,41,42,43],temp:41,templat:39,temporari:[10,23,25,32,34],ten:29,term:[2,28,31,41],termin:[4,5,41],test:[28,30,47],text:[4,10,21,27,29,34,42,43,44,45,47],textfil:2,than:[4,10,13,15,17,30,31,34,40,41,43],thank:4,thee:41,thei:[0,3,4,5,7,10,12,13,17,18,21,22,27,28,29,30,31,32,33,34,40,41,43,45],them:[0,1,3,4,5,7,10,12,13,14,15,17,18,21,22,23,27,28,29,30,31,33,34,35,36,37,40,41,44,46,47],themselv:[17,30,33,41,44],therebi:[44,46],therefor:[6,17,30,34,41],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,39,40,41,42,43,44,45,46,47],thing:[3,4,6,24,26,27,28,29,33,34,41,46],think:[39,47],third:[28,33],thorough:[27,29,31,46],those:[1,3,7,11,15,21,27,28,29,30,41,44,45,46],though:[15,21,28,30,41,43],thr:34,three:[21,29,32,33,34,41],through:[4,10,15,21,24,28,31,35,36,37,38,41,46,47],throughout:27,thse:17,thu:[16,28,36,40,41],tidi:27,till:[],time:[0,3,4,10,14,15,16,17,19,22,23,28,29,30,31,32,33,34,35,37,38,40,42,43,44,46],timeout:[6,14,21,23,34,45],timestamp:[34,41],timezon:34,tip:2,titl:47,tiwtch:6,tls:[41,43],tmi:45,tmp:[23,41],toctre:[],todai:41,togeth:[0,2,4,21,28,33,34,35,37],token:46,told:28,ton:24,too:[15,17,21,23,27,34,41],tool:[3,30],top:[3,4,28,39,41],topc:41,topic:46,total:[10,27,35,41],tout:41,toward:28,trace:21,track:[3,15,24,27,29,41,46],tradit:[24,36,44,45,46],tradition:16,traffic:[3,34,44],trail:27,transfer:[2,6,7,11,15,22,30,33,34,36,41,43,47],transit:[19,40,41],transmit:21,transpar:34,transport:31,treat:[41,46],tree:[0,4,30],tri:[27,34,41],trick:[28,44],trigger:[10,21,27,28,41,45],troubl:[14,34],troubleshoot:[4,30],truncat:45,trust:[4,34,47],ttl:14,turbo:[23,30],turn:[10,16,21,34,41],tutori:[2,31],twcmd:[24,46],twice:41,twitch:[2,6,35],twith:45,two:[4,6,17,22,28,30,32,33,34,40,41,43,44],type:[3,4,6,7,10,12,17,21,24,27,28,29,30,31,32,33,34,35,36,37,38,43],typic:[15,24,34,35,38,41,46],typo:41,ubuntu:31,ufl:41,ugli:15,uglyman:15,uhost:[28,41],uid:[34,43],umod:21,unabl:[17,30,33,36,41,46],unaccess:35,unavail:[21,34],unban:[10,34,41],unbind:[17,34,44,45],uncertainti:45,uncom:[29,31,34,40],under:[0,4,30,35,41],underli:41,underlin:[41,42],undernet:[4,17,21,41],understand:[34,41],understood:21,unexpect:41,unhid:6,unimport:34,unintend:45,uniqu:[34,41,45],univers:34,unix:[0,3,15,16,30,35],unld:41,unless:[17,21,28,30,32,34,41],unlik:[3,35],unlimit:33,unlink:[23,34],unload:[27,41],unoffici:36,unpack:0,unreach:33,unrealircd:[17,41],unreli:[24,45,46],unrest:0,unset:41,unshar:[6,47],unstick:32,unsticki:32,unstuck:41,unsur:30,untar:5,until:[7,10,15,32,34,41],unzip:[5,30],updat:[4,5,19,27,30,34,35,40,41,45],upgrad:[2,40,43],uplink:41,upload:[15,30,35,41,44],upon:[0,4,45,47],upper:14,uptim:[2,6],url:[34,41],usa:1,usabl:[6,15,34],usag:[2,4,6,27,34,41],use:[0,1,3,4,5,6,7,9,10,12,13,14,15,16,17,19,21,22,23,27,28,29,30,31,32,33,34,36,38,40,41,42,43,44,45,46,47],used:[0,2,4,10,11,13,15,19,21,27,28,29,30,31,32,33,34,35,36,38,40,41,42,43,44,45,46,47],useful:[1,4,10,23,30,33,41,43,44],useless:[5,24,46],user:[0,2,3,4,5,6,7,9,10,11,12,13,16,17,18,19,20,21,22,23,24,27,28,30,31,32,34,35,36,38,39,40,42,43,44,45,46],userban:10,userexempt:10,userfil:[0,2,4,5,6,9,10,11,19,22,23,27,29,30,33,34,40,41,44],userflag:17,userhost:45,userinfo1:34,userinfo:[13,41],userinvit:10,userlist:[6,17,20,22],usernam:[16,29,30,34,45,46],usernotic:[24,45],userst:[24,46],uses:[3,6,17,21,23,27,28,29,30,31,32,34,40,41,43,46,47],using:[1,3,4,6,7,9,10,15,16,17,19,21,27,28,29,30,32,33,34,36,40,41,43,44,45,46],usrntc:45,usst:45,usual:[4,29,30,31,32,36,39,40,41,43,46],utc:34,util:3,utim:28,vagu:30,vali:41,valiant:[0,4],valid:[3,10,21,27,33,34,35,41,43],valis0:41,valu:[10,13,14,17,21,24,27,28,34,40,42,43,45,46],vari:[41,47],variabl:[2,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,34,36,42,45],variable_nam:27,varieti:[0,4],variou:[1,27,30,32,34,41],verbos:41,veri:[4,6,16,20,21,28,34],verif:[21,34,43],verifi:[21,29,34,43],version:[0,1,2,3,4,5,13,17,25,27,28,36,37,42,43,45],vertic:41,vhost4:[30,34,36],vhost6:[30,34,36],vhost:[30,34,36],via:[2,3,4,6,11,16,17,20,22,27,28,29,30,32,33,34,35,36,37,38,40,42,43,45,46],video:41,view:[5,7,19,29,30,35,41,45],viewer:45,vim:30,vip:[45,46],virtual:34,visibl:41,visit:[5,46],vista:36,voic:[0,2,4,10,29,41,47],wai:[1,3,4,16,21,24,27,28,29,30,31,32,33,34,38,40,41,43,46],wait:[6,14,15,17,21,23,30,34,41],walk:31,wall:41,wallop:[34,41],want:[0,3,4,6,10,12,14,15,17,18,21,23,27,28,29,30,33,34,36,41,43,44],war:0,warm:39,warn:[4,16,28,41],warranti:1,washalfop:47,wasn:41,wasop:[10,17,47],wasoptest:10,watch:[38,45],web:[2,6,24,34,45],webpag:2,websit:30,week:41,weekdai:41,welcom:28,well:[1,24,28,29,30,31,34,40,41,43,46],were:[1,16,17,30,32,33,34,36,40,41,46],west:34,wget:30,what:[0,1,2,5,6,10,15,17,21,25,28,29,30,34,37,38,40,41],whatev:[1,3,28,34,35,41,42],when:[3,4,6,7,9,10,12,15,16,17,21,22,27,28,29,30,32,34,36,38,40,41,43,45,46],whenev:[21,27,33,41,43],where:[4,6,10,14,15,18,21,27,28,29,30,31,34,35,40,41,43,45],wherea:41,wherev:36,whether:[34,36,41],whew:28,which:[3,5,6,10,12,14,15,16,21,22,27,28,29,30,32,33,34,36,38,40,41,42,43,44,45,47],whichev:32,whisper:[24,45],whitespac:41,who:[10,15,17,21,28,30,34,38,41,47],whoi:[29,34],whole:27,whose:[32,41],whox:[35,41],why:[28,30],wide:[38,43],width:42,wild:41,wildcard:[10,28,29,41,45],window:[2,29,36],wise:[4,34],wish:[3,5,7,16,17,25,27,30,32,33,34,41,45],within:[6,15,27,30,31,32,34,37,41],without:[0,2,4,5,6,9,10,13,19,27,28,29,30,31,33,34,35,37,40,41,43],wizard:31,won:[6,10,22,27,28,30,32,33,34,41,43,45],woobi:[2,3,6,27],word:[15,17,29,30,41,45,46],work:[3,5,6,10,13,15,19,20,22,27,28,29,30,32,33,34,36,37,39,40,41,43,44,45],workaround:24,world:[0,2,4,31,34],worri:24,worth:3,would:[4,5,13,28,29,30,31,33,34,41,42,43,45,46],wouldn:34,write:[1,2,6,7,26,30,34,40,41,46],written:[0,27,30,41,46],wrote:28,wspm:45,wspr:45,wth:[],www:[2,4,6,20],x509:[29,34,43],xfer:[23,47],xtra:41,xvf:30,xxd:29,year:[0,4,30,34,41],yes:[28,31,41],yesterdai:34,yet:[4,21,30,34,41],yoru:29,you:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,38,39,40,41,42,43,44,45,46,47],you_want_to_export:27,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,38,39,40,41,43,46],yourbot:44,yourbranchnam:39,yourconfig:3,youreggdrop:29,youreggdropconfignameher:29,yourself:[7,29,30,39,40,43],yourusernam:39,yyyymmdd:34,zero:41,zip:30,zomg:[],zxvf:30},titles:["About Eggdrop","Boring legal stuff","Eggdrop, an open source IRC bot","Installing Eggdrop","README","Upgrading Eggdrop","Modules included with Eggdrop","Eggdrop Module Information","Assoc Module","Blowfish Module","Channels Module","Compress Module","Console Module","CTCP Module","DNS Module","Filesys Module","Ident Module","IRC Module","Notes Module","PBKDF2 Module","Seen Module","Server Module","Share Module","Transfer Module","Twitch Module","Uptime Module","Woobie Module","Writing an Eggdrop Module","Writing an Eggdrop Script","Common First Steps","Setting Up Eggdrop","Enabling TLS Security on Eggdrop","Bans, Invites, and Exempts","Botnet Sharing and Linking","Eggdrop Core Settings","Eggdrop Features","IPv6 support","IRCv3 support","The Party Line","Patching Eggdrop","Encryption/Hashing","Eggdrop Tcl Commands","Textfile Substitutions","TLS support","Advanced Tips","Eggdrop Twitch Tcl Commands","Twitch","Users and Flags"],titleterms:{"default":44,"function":[27,46],"int":41,"new":41,"return":41,"short":30,"static":7,"super":30,Adding:33,DNS:14,TLS:[31,43],The:[30,38],Using:33,about:[0,36,37,43],account2nick:41,account:41,accounttrack:41,add:[29,41],addbot:41,addchanrec:41,addit:[27,31],address:41,addus:41,advanc:[34,44],api:24,arg1:41,arg2:41,arg:[41,45],argn:41,assign:29,assoc:[8,41],authent:[29,43],automat:29,background:40,backup:41,ban:[32,41],banlist:41,banmask:41,base64:41,basic:34,bind:[41,45],block:41,blowfish:9,boot:41,bore:1,bot:[2,15,33,41],botattr:41,botflag:33,botishalfop:41,botisop:41,botisvoic:41,botlist:41,botnam:41,botnet:[5,31,33,34,43],botnick:41,botonchan:41,botport:41,bottre:33,callev:41,can:[2,7],cancel:15,cap:[37,41],capabl:37,certif:43,chan:[41,45],chanban:41,chandname2nam:41,chanexempt:41,chanflag:41,chang:[5,41],chaninvit:41,chanlist:41,channame2dnam:41,channel:[10,15,29,41,45],chansettyp:41,charact:41,chat4:36,chat6:36,chat:36,chattr:41,chhandl:41,clear:15,clearqueu:41,cmd:45,command:[4,5,24,41,44,45],comment:41,common:29,commun:31,compil:7,compress:[11,41],compressfil:41,config:[5,15,30,41,44,46],configur:[29,30,31,40],configurearg:41,connect:[31,41],consol:[12,34,41],control:41,core:34,count:41,countus:41,creator:41,crontab:4,ctcp:[13,36],ctime:41,cygwin:3,dcc:[34,41,43],dccbroadcast:41,dccdumpfil:41,dcclist:41,dccputchan:41,dccsend:41,dccsimul:41,dccuse:41,decrypt:41,delchanrec:41,delhost:41,deludef:41,delus:41,desc:[15,41],descript:15,dest:15,destin:41,develop:4,die:41,dir:[15,41],directori:[15,34,41],disclaim:46,dname:41,dnslookup:41,docker:4,document:[4,5],download:30,dst:15,dumpfil:41,durat:41,dynam:7,echo:41,edit:[30,46],eggdrop:[0,2,3,4,5,6,7,27,28,29,30,31,34,35,39,41,45],enabl:[31,40,41],encpass:41,encrypt:[40,41],entri:41,erasenot:41,event:41,exampl:33,execut:34,exempt:[32,41],exemptlist:41,exemptmask:41,extra:41,featur:35,file:[5,15,30,31,34,41,44,46],filemask:15,filenam:[15,41],filepath:15,fileresend:41,filesend:41,filesi:[15,41],filestat:15,find:2,findus:41,first:29,flag:[15,29,33,41,45,47],flushmod:41,formatstr:41,from:41,ftp:4,gener:31,get:[2,4,15,30,41],getaccount:41,getchan:41,getchanhost:41,getchanidl:41,getchaninfo:41,getchanjoin:41,getchanmod:41,getdccawai:41,getdccidl:41,getdesc:41,getdir:41,getfil:41,getfileq:41,getfilesendtim:41,getflag:41,getlink:41,getown:41,getpwd:41,getudef:41,getus:41,git:4,github:39,global:41,hand2idx:41,hand2nick:41,handl:41,handlen:41,handonchan:41,haschanrec:41,hash:40,help:[2,4],helpfil:41,hide:15,histori:30,host:[29,41],hostmask:41,hostnam:41,how:[2,4,5,7],hybrid:40,ident:16,idx2hand:41,idx:41,ignorelist:41,includ:6,info:41,inform:[7,31],instal:[2,3,7,30,36,43],interfac:40,invit:[32,41],invitelist:41,invitemask:41,ipv6:36,irc:[2,17,31,43,46],ircnick:41,ircv3:37,isawai:41,isban:41,isbansticki:41,isbotnick:41,ischanban:41,ischanexempt:41,ischaninvit:41,ischanjup:41,iscompress:41,isdynam:41,isexempt:41,isexemptsticki:41,ishalfop:41,isidentifi:41,isignor:41,isinvit:41,isinvitesticki:41,isircbot:41,isjup:41,islink:41,ismod:45,isop:41,ispermban:41,ispermexempt:41,isperminvit:41,isset:41,istl:41,isupport:41,isvip:45,isvoic:41,join:29,jump:41,keep:44,kei:[31,41,43],keyword:41,killassoc:41,killban:41,killchanban:41,killchanexempt:41,killchaninvit:41,killdcc:41,killexempt:41,killignor:41,killinvit:41,killtim:41,killutim:41,languag:41,lastbind:41,legal:1,level:41,lifetim:41,limit:[24,41,46],line:[4,38],link:[33,41],list:41,listen:[31,41],listnot:41,loadchannel:41,loadhelp:41,loadmodul:[7,41],localfil:15,locat:30,log:[29,34,44],logfil:41,make:33,manipul:41,mask:41,maskhost:41,masktyp:41,match:41,matchaddr:41,matchattr:41,matchban:41,matchcidr:41,matchexempt:41,matchinvit:41,matchstr:41,md5:41,messag:41,minut:41,miscellan:41,mkdir:[15,41],mode:41,modifi:44,modul:[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,34,41],modular:44,module_clos:27,module_expmem:27,module_report:27,module_start:27,module_t:27,monitor:41,more:2,msg:41,must:5,myip:41,name:41,need:7,newban:41,newchanban:41,newchanexempt:41,newchaninvit:41,newexempt:41,newignor:41,newinvit:41,newnam:41,nick2hand:41,nick:[41,45],nicknam:[15,41],nickserv:29,note:[18,41],notic:4,numberlist:41,numvers:41,obtain:4,old:41,oldnam:41,onchan:41,onchansplit:41,onelin:41,onlin:41,open:2,optim:15,option:41,output:41,own:[],parti:38,partylin:[15,24,29],pass:41,passwdok:41,password:41,patch:39,path:34,pattern:41,pbkdf2:19,pend:15,permiss:29,port:41,pre:[2,4,31],prefix:41,prepar:31,prerequisit:30,proc:41,procedur:41,protect:31,pushmod:41,putallbot:41,putbot:41,putcmdlog:41,putdcc:41,puthelp:41,putkick:41,putlog:41,putloglev:41,putnow:41,putquick:41,putserv:41,putxferlog:41,pwd:15,queue:41,queuesiz:41,quick:[3,4],quit:15,rand:41,raw:41,read:5,readm:4,reason:41,record:[33,41],refreshchan:41,regist:46,rehash:41,reload:41,reloadhelp:41,remov:41,renam:44,renudef:41,req:41,requir:[3,27,41],requisit:[2,4,31],resetban:41,resetchan:41,resetchanidl:41,resetchanjoin:41,resetconsol:41,resetexempt:41,resetinvit:41,restart:[29,41],rfcequal:41,rmdir:[15,41],roomstat:45,sasl:29,save:41,savechannel:41,script:[5,28,34,43],second:41,secur:[31,43],seen:20,self:44,sendnot:41,server:[21,31,41],serveraddress:41,set:[4,29,30,34,36,41,43],setchan:41,setchaninfo:41,setdccawai:41,setdesc:41,setflag:41,setlink:41,setown:41,setpwd:41,setudef:41,setup:15,setus:41,share:[15,22,33],show:30,snapshot:4,socklist:41,solo:40,some:2,sourc:[2,15,30],src:41,ssl:[34,43],start:30,starttl:41,startup:[3,4],stat:15,statu:41,step:29,stickban:41,stickexempt:41,stickinvit:41,still:7,storenot:41,str:41,strftime:41,string1:41,string2:41,string:[41,44],strip:41,stripcod:41,stuff:1,submit:39,substitut:42,support:[36,37,43],system:4,tag:41,tagmsg:41,target:41,tcl:[5,24,40,41,45],tcp:41,telnet:34,term:33,text:41,textfil:42,thing:2,time:41,timer:41,timerid:[],timernam:41,tip:44,tlsstatu:41,topic:41,traffic:41,transfer:23,twcmd:45,twitch:[24,45,46],twitchmod:45,twitchvip:45,type:[41,45],unam:41,unbind:41,uncompressfil:41,unhid:15,unixtim:41,unlink:41,unloadhelp:41,unloadmodul:41,unshar:15,unstickban:41,unstickexempt:41,unstickinvit:41,upgrad:[4,5],uptim:[25,41],usag:[15,36,37,40,43],use:[],user:[15,29,33,41,47],userlist:41,userport:41,userst:45,utim:41,validchan:41,valididx:41,validus:41,valu:41,variabl:[41,44],version:[30,41],via:[39,41],washalfop:41,wasop:41,web:46,what:[4,7,27,33],where:2,whom:41,why:[],window:3,without:7,woobi:26,write:[27,28],you:2,your:44}}) \ 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/mod/assoc","modules/mod/blowfish","modules/mod/channels","modules/mod/compress","modules/mod/console","modules/mod/ctcp","modules/mod/dns","modules/mod/filesys","modules/mod/ident","modules/mod/irc","modules/mod/notes","modules/mod/pbkdf2","modules/mod/seen","modules/mod/server","modules/mod/share","modules/mod/transfer","modules/mod/twitch","modules/mod/uptime","modules/mod/woobie","modules/writing","tutorials/firstscript","tutorials/firststeps","tutorials/setup","tutorials/tlssetup","using/accounts","using/bans","using/botnet","using/core","using/features","using/ipv6","using/ircv3","using/partyline","using/patch","using/pbkdf2info","using/tcl-commands","using/text-sub","using/tls","using/tricks","using/twitch-tcl-commands","using/twitchinfo","using/users"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["about/about.rst","about/legal.rst","index.rst","install/install.rst","install/readme.rst","install/upgrading.rst","modules/included.rst","modules/index.rst","modules/mod/assoc.rst","modules/mod/blowfish.rst","modules/mod/channels.rst","modules/mod/compress.rst","modules/mod/console.rst","modules/mod/ctcp.rst","modules/mod/dns.rst","modules/mod/filesys.rst","modules/mod/ident.rst","modules/mod/irc.rst","modules/mod/notes.rst","modules/mod/pbkdf2.rst","modules/mod/seen.rst","modules/mod/server.rst","modules/mod/share.rst","modules/mod/transfer.rst","modules/mod/twitch.rst","modules/mod/uptime.rst","modules/mod/woobie.rst","modules/writing.rst","tutorials/firstscript.rst","tutorials/firststeps.rst","tutorials/setup.rst","tutorials/tlssetup.rst","using/accounts.rst","using/bans.rst","using/botnet.rst","using/core.rst","using/features.rst","using/ipv6.rst","using/ircv3.rst","using/partyline.rst","using/patch.rst","using/pbkdf2info.rst","using/tcl-commands.rst","using/text-sub.rst","using/tls.rst","using/tricks.rst","using/twitch-tcl-commands.rst","using/twitchinfo.rst","using/users.rst"],objects:{},objnames:{},objtypes:{},terms:{"04may2000":35,"3rd":5,"5c0":[21,30,35],"break":[15,42],"byte":[17,21,23,27,42],"case":[14,19,21,28,30,32,35,42],"catch":42,"char":[27,35,42],"const":27,"default":[2,3,4,10,11,14,15,17,21,23,29,30,31,32,33,35,41,42,44],"export":45,"final":[0,4,28,29,30,35,41],"function":[0,1,2,4,6,7,19,24,30,34,35,37,41,42,45,46],"import":[27,28,29,30,32,35,39,42],"int":27,"long":[6,10,14,18,21,22,33,35,42,43,46],"new":[4,5,7,19,24,28,29,30,32,35,36,37,38,39,40,41,44,45,47],"null":27,"public":[0,1,4,28,29,31,35,42,44,45,48],"return":[17,27,32,41,46],"short":[2,27,29,37,44],"static":[2,3,10,27,29,42],"super":2,"switch":[5,27,30,32,35,42,44,45],"throw":42,"true":28,"try":[3,4,6,7,20,21,25,27,28,29,30,32,35,46],"var":42,"void":27,"while":[0,4,5,10,16,24,30,32,33,35,39,41,42,47],AND:[19,30,42],ARE:28,Adding:[2,24,47],And:28,CVS:4,DNS:[2,6,42],DOING:28,For:[1,2,3,5,7,15,21,30,31,34,35,37,38,39,41,42,44,45,46,47],IPs:[29,31,37],NFS:23,NOT:[5,28,30,32,34,35,42,46],Not:[6,21,29,38],One:[0,4,28,32,42],THE:3,TLS:[2,3,4,5,29,30,35,42],That:[24,28,30,34,42,48],The:[0,1,2,3,4,5,6,10,11,13,14,15,16,19,21,22,23,24,25,27,28,29,31,32,33,34,35,36,38,41,42,44,45,46,47,48],Their:37,Then:[5,29,30,44],There:[1,3,4,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,29,31,32,33,35,37,41,43,44,47,48],These:[5,11,17,27,30,32,33,34,35,37,43,44,46,48],Use:[16,17,19,21,27,30,35,42],Used:42,Useful:42,Using:[2,4,27,42],WILL:46,With:[0,4,6,15,34,35,41,42,44],YES:7,Yes:7,aaa:[],abcdechannel:42,abil:[2,7,16,31,32,36,42],abl:[3,6,10,15,17,21,30,32,35,39,41,42],abort:[23,30,42,44],about:[2,4,6,24,25,27,28,29,35,42,45,47],abov:[1,4,10,17,19,27,28,29,36,42,43],absolut:[0,31,42,48],abus:[0,2,4],accept:[15,22,24,31,34,35,42,44,47],access:[0,4,16,21,27,28,29,30,36,39,41,42,44,46,47,48],accomplish:3,accord:[1,42,48],accordingli:21,account:[0,2,4,16,18,27,29,30,36,38,40,41,47],accur:[32,42,46],accuraci:32,across:[0,4,34,38,40,42,45],act:[16,27,35,36,42,44],action:[28,29,31,35,42],activ:[2,10,16,30,32,33,39,42,44],actual:[0,4,15,27,28,31,35,39,42],acut:[],add:[3,4,5,7,10,16,17,24,27,28,30,31,32,34,35,36,41,47],add_builtin:27,add_hook:27,add_tcl_command:27,add_tcl_int:27,add_tcl_str:27,added:[0,3,4,5,19,22,24,28,30,32,34,35,36,37,38,41,42,44,46],addhost:17,adding:[4,7,21,27,35,36,38,42],addit:[2,4,5,16,21,30,35,42,44,46],addition:[16,30,32,42],addlang:[35,42],address:[18,22,25,30,34,35,37,44],addus:30,adh:35,adjust:[0,4,17],admin:[35,43],admit:23,advanc:[0,2,4,6,20,28,36],advantag:[5,30,45],advertis:[0,4,42],advis:[3,21,23],affect:[5,10,24,35,36,37,42,47],affet:42,affili:[1,47],after:[3,4,10,16,17,21,27,28,29,32,33,35,42,44,45,47],afterward:[17,35],again:[6,15,25,27,33,34,35,41,42,46],against:[10,15,19,21,28,30,41,42,46],age:42,aggress:34,aka:35,alarm:42,alert:[32,47],algorithm:[19,41],all:[1,5,6,7,10,13,14,15,17,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,44,45,46,47,48],alloc:[27,42],allow:[0,3,4,5,6,7,10,11,15,16,17,18,19,21,22,23,24,27,28,29,30,32,34,35,36,41,42,44,45,47],alltool:35,almost:[0,4,30,33,48],along:[4,15],alphabet:35,alphanumer:47,alreadi:[10,21,27,28,30,31,32,34,35,41,42,47],also:[0,2,3,4,7,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,29,30,33,34,35,36,39,41,42,43,44,45,46,47,48],alt:[21,35],alter:[15,36,42,47],altern:[2,4,16,21,30,31,34,35,42,44],although:[17,30,35,42],altnick:[21,30],altogeth:19,alwai:[0,3,4,10,30,32,33,35,42],amount:[6,35],anachron:31,ani:[0,1,3,4,5,7,12,15,16,17,18,21,22,24,27,28,29,30,33,35,36,39,41,42,44,46,47,48],annoi:28,announc:32,anonym:35,anoth:[0,10,15,17,18,21,22,27,30,34,35,42,43,46],another:5,ansi:42,answer:[0,7,13,16,21,28],any_other_funct:27,anymor:[6,9,19,35],anyon:[10,33,42],anyth:[0,4,15,28,29,30,34,35,39,42,46],anywai:35,anywher:[39,42],aol:[28,41],aop:10,apart:[27,35],api:6,apostroph:39,appear:[29,30,34,35,42,46],append:[27,42],appli:[30,33,35,41,48],applic:[1,35,42],appreci:31,appropri:[3,5,30,35,38,40,41],april:[24,46],apt:[30,31],arbitrari:42,arbitrarili:46,archiv:4,area:[6,15,35,42,45,48],aren:[30,35,42,45,46],arg:27,argument:[15,17,28,29,37,42,46],around:[0,4,24,31,37,42,47],arriv:42,ascii:42,ask:[4,17,29,30,39,42,44],assign:[34,35,42],assist:[2,30,32,44],assoc:[2,6],associ:[24,32,42,47],assum:[21,28,30,31,32,33,35,42],assumpt:38,assur:46,asynchron:[6,14,42],attach:[32,42,46],attack:[10,19,41],attempt:[5,10,16,17,21,24,31,32,33,34,35,42,44,47],attent:[5,21,32,42],attribut:[33,34,42,48],auch:27,aug:42,august:17,auth:[35,44],authent:[2,32,41,42,47],author:[28,31,35,44],auto:[34,48],autobotchk:[3,4,29],autoconf:3,autoconfigur:3,autodetect:44,autohalfop:10,autom:[0,2,4],automat:[2,3,4,5,12,16,21,30,32,33,34,35,36,37,41,42,44,47,48],autoop:10,autosav:12,autovoic:[10,48],avail:[4,10,15,19,25,27,29,30,31,35,36,37,39,42,47],avoid:[6,14,29],awai:[36,38,42],awar:42,awesom:28,b33f:30,baa:42,back:[21,28,30,35,37,40,41,42,45],background:[2,4,28],backslash:30,backup:[5,27],backward:[5,38],bad:[10,42,48],badg:48,badgui:46,ban:[0,2,4,10,17,24,34,35,36,47,48],bandwidth:[6,11],banner:[35,43],bar:42,barr:35,base64:29,base:[4,30,32,35,41,42],basi:30,basic:[2,4,6,7,20,28,30],bask:40,bbb:[],bcst:42,bear:1,becaus:[0,4,16,21,27,28,35,42,45,46,47],becom:[29,30,35,42],been:[0,1,4,5,15,17,21,27,33,35,36,42,46],beerbot:32,befor:[0,4,10,14,16,17,18,21,22,23,27,29,30,32,34,35,42,47],began:38,begin:[16,28,37,42],behalf:42,behav:42,behavior:[13,17,33,35,37,42],behind:35,being:[0,4,10,15,17,21,31,32,36,37,42,46],beldin:34,bell:42,belong:35,below:[10,15,16,22,24,27,28,30,35,41,42,46],best:[2,3,6,16,30,34,42,46],better:[3,4,6,20,30,35],between:[3,6,10,15,18,21,22,31,32,34,35,37,42],beverag:41,big:[5,23,42,45],binari:[3,31],bind:[2,16,17,21,24,27,28,32,35,45,47],birthdai:35,bit:[3,15,24,28,30,31,35,42,44,47],bitch:10,bitchx:42,blank:42,bless:1,blindli:17,bloat:7,block:[23,24,27,30,43,47],blowfish:[1,2,5,6,19,27,35,41,42],bodi:28,bogu:35,bold:[4,42,43,48],boldfac:42,boot:35,bore:[2,4],boston:1,bot:[0,1,3,4,5,6,7,10,12,13,14,16,17,18,19,20,21,22,23,25,27,28,29,30,31,33,35,36,37,38,39,41,43,44,45,46,47,48],bota:34,botaddr:42,botaddress:42,botattr:34,botb:34,botc:34,botchk:[4,29,30],botdir:30,botfl:42,botflag:[2,22],both:[0,4,10,21,23,31,32,34,37,41,42,44],botnam:34,botnet:[0,2,3,4,6,8,10,12,15,21,25,30,36,37,39,41,42,45,48],botnetcentr:43,botnetnick:42,botnetop:10,botnick:[21,28,29,30,35],bottom:28,bottre:2,bounc:17,bound:[16,35,42],boundari:14,box:[30,35],brace:10,bracket:37,branch:[4,40],breach:42,brief:30,broadcast:[24,39,42,46,47],broken:[15,28,35,42],brows:15,brute:19,buf:17,buffer:22,bug:[0,3,4,28,30,40],build:42,built:[2,16,42,45],builtin:[16,42],busi:28,button:[40,47],bypass:42,bywho:42,cach:[14,42],cafil:[35,44],calcul:21,call:[0,3,4,27,28,29,34,35,42,46],callback:32,can:[0,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],cancel:[6,42],cannot:[0,27,30,32,41,42,48],cap:[2,27,32,36,47],cap_net_bind_servic:16,capabl:[2,35,36,42,45,47],capac:47,capath:[35,44],capit:[4,48],caption:[],captur:[30,42,45],care:[35,42,47],carefulli:[30,42],carelessli:5,categori:42,caught:42,caus:[16,30,34,42,45],caution:42,cbc:42,ccht:46,center:43,central:[15,35],cerfif:[],cert:[29,35,44],certain:[33,35,36,37,42,43,46,48],certainli:[24,30,47],certif:[2,3,21,29,31,35,42],certifict:44,cet:35,chaddr:[5,34],chain:[35,44],challeng:[28,29],chan:[5,10,17,28,29,30,45],chanc:30,chanfil:[10,30,45],chang:[1,2,6,9,10,15,17,19,21,22,24,28,30,31,34,35,36,38,39,40,44,46,47],chaninfo:[29,34],chanmod:[10,29],channel:[0,2,4,5,6,8,12,17,20,21,22,24,27,28,30,32,33,34,35,36,39,43,45,47,48],channelflag:42,chanrec:[17,42],chanserv:10,chanset:[10,29,34],charact:[2,10,15,21,30,34,35,37,41],chase:[0,4],chat4:2,chat6:2,chat:[0,2,4,6,13,21,29,30,34,35,36,39,42,44,46,47],chatter:35,chattr:[29,48],check:[2,4,5,10,21,27,28,29,31,35,41,42,44,46],checkout:[30,40],chfinger:35,chghost:[36,38],chjn:42,chmod:[3,35],chof:42,choic:[1,21,28],chon:42,choos:[3,7,29,30,35,36,47],chpass:41,chpt:42,chri:1,chunk:21,cidr:[35,42],cipher:[35,42,44],claim:[24,47],clarifi:33,clean:15,clear:[4,6,40,42,44,46,47],clearchat:[24,46],clearmsg:[24,46],cleartext:42,clemson:48,click:[40,47],client:[15,16,21,24,29,30,32,35,38,42,44,47],cloak:29,clone:[2,4,10,30],close:[27,42],cmd:[35,42],cmd_t:27,cmsg:46,code:[1,2,3,4,7,27,28,42],coder:[],col:43,cold:[40,41],colon:[35,37],color:[4,42],column:43,com:[2,4,5,6,20,21,28,29,30,34,35,41,42,44],combin:[36,42],combo:29,come:[4,6,17,21,30,40,42],comfort:30,comma:[35,39,42],commadlin:30,command:[2,3,6,10,12,15,16,17,20,21,27,28,29,30,31,32,33,34,35,36,37,39,41,44,47,48],commandlin:30,comment:[15,17,25,28,30,35,41],commerci:30,common:[2,21,30,31,34,35,38,44,48],commonli:[29,31,35,42],commun:[2,27,34,39,40,42],compat:[3,5,38,42,46,47],compil:[0,2,3,4,27,30,31,35,37,42,44],complet:[3,4,10,15,22,30,36,42,44,48],compliant:[17,21,42],compon:42,comprehens:46,compress:[2,6,29],compris:38,concurr:[35,41],conf:[3,7,16,29,30,38,42,44],config:[2,3,4,6,7,10,11,12,13,14,16,17,18,19,21,22,23,24,25,27,28,29,31,32,33,34,35,37,41,43,44],configfil:42,configur:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,35,37,40,42,44],confirm:[40,42],conflict:16,confus:42,connect:[2,4,5,6,14,15,16,21,24,27,29,30,34,35,37,39,44,47,48],connet:[],consequ:46,consid:[4,30,32,33,35,39,42],consider:41,consist:[34,36,39,42],consol:[2,4,6,10,27,36,39],constantli:27,constitut:[10,21,35],consult:[37,38,44],contact:[28,35],contain:[1,3,4,5,28,30,32,34,35,37,42,44,46],content:[41,42,46],contest:6,context:27,continu:[30,42],contribut:40,control:[0,2,4,17,21,28,29,34,35,36,44,47,48],conv_form:29,conveni:35,convers:[27,39,44],convert:42,cooldud:30,coordin:35,copi:[1,2,5,7,15,23,27,30,42],copyright:[0,1,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],core:[2,3,6,7,17,18,21,27,28,42,45],correct:[3,31,35,41],correctli:[3,42],correspond:[10,29,33,42],cos:10,could:[1,21,28,34,35,37,40,41,42,44,47],couldn:42,count:21,counterpart:42,coupl:42,cours:[3,28,34,35,42],cover:[32,33,34],cpu:[21,35,42],crappi:42,crash:[3,42],creat:[0,3,4,15,16,22,27,28,29,30,33,35,40,41,42,44,45,47],creation:[29,32],credit:[28,42],cron:42,crontab:[2,3,29,42],cross:30,crotab:[],crt:[29,35,44],crypto:41,cryptograph:[19,41,42],crytopgraphi:41,ctcp:[2,6,10,21,29,30,35,42,44],ctcr:42,ctrl:42,curl:30,current:[2,4,6,7,9,15,17,18,19,24,27,29,30,32,35,36,39,42,43,44,46],custom:[16,21,28,29,32,36,42,44],cut:29,cycl:[10,21,35],cygwin:[2,37],daemon:[16,29,35],dai:[18,23,35,42,45],daili:[30,42],dalnet:[4,17,21],danc:42,danger:42,danish:35,data:[4,10,22,27,31,41,42],databas:[15,42],date:[1,4,30,32,35,42],db8:[21,30,35],dcc:[0,2,4,6,15,20,21,23,27,29,30,34,36,37,39,41,45],dead:30,deal:[35,42,48],dealloc:27,deauthent:32,debian:[30,31],debug:[3,25,27,28,35,42,44,46],dec:[15,42],decemb:[0,26,36,39],decent:27,decid:[38,41],decis:47,declar:[28,42],decreas:35,defens:28,defin:[4,6,10,11,13,17,21,27,28,30,32,33,34,35,38,42,48],definit:[28,30,31,41],degrad:47,dehalfop:[10,42,48],del_hook:27,delai:[10,15,17,28],delet:[30,42,45],deliber:44,delimit:42,deliv:42,demand:[0,4],demonstr:[6,26,42],denot:[31,42],deop:[10,42,48],depend:[27,32,33,40,42,44,48],deprec:[5,31,42],deprici:21,depth:[35,44],der:29,deriv:41,desc:[6,27],describ:[27,28,30,31,34,35],descript:[6,27,28,29,35,42,46,48],descriptivebranchnam:40,deserv:28,design:[0,2,4,19,38,46],desir:[7,27,29,30,41],despit:31,dest:[3,6,30,31,35,42,44],destin:[16,27],destroi:[0,4],detail:[3,4,6,27,30,32,42,44,46],detect:[7,21,31,37,42,44],determin:[2,3,16,27,29,30,34,37,42,44],dev:[4,30,31],devel:3,develop:[0,1,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],devleop:[],dict:[42,46],dictionari:42,did:[1,41],didn:[28,30,42],die:[27,29,30],died:21,differ:[1,3,4,5,10,15,21,28,31,32,35,41,42,45,46],differenti:42,diffutil:3,digest:[19,42],digit:[35,44],dinner:41,dir:[6,29],direct:[7,31,34,40,42],directli:[5,6,10,16,22,30,42],directori:[2,3,4,6,7,23,27,29,30,31,36,40,44,45],disabl:[10,17,21,35,37,42,44],disc:42,discard:[22,42],disclaim:[2,42],disconnect:[21,22,35,42],discontinu:47,discourag:17,discuss:[4,40],disk:[0,23,30,35,36,42],displai:[12,15,17,21,29,30,35,42,43,46],displaynam:27,dispos:42,dissect:28,distinguish:42,distribut:[0,1,4,30],distro:31,dload:23,dns:[6,14,35,42],doc:[0,3,4,5,6,21,28,31,35,39,42,46,47],document:[2,16,28,30,31,34,37,38,40,44,45],doe:[10,24,28,29,32,33,35,38,39,42,46,47,48],doesn:[12,14,17,30,39,42,45,46],doing:[19,21,28,35,42,43],domain:[1,14,34],don:[4,7,10,14,15,17,21,22,24,27,28,29,30,34,35,39,42,44,45],donat:[24,47],done:[5,22,27,29,30,31,34,40,41,42,47],donkei:30,dontkickop:10,dot:39,doubl:21,doubt:37,down:[0,3,4,15,34,42],downer:24,download:[3,4,5,7,15,23,35,36,42],dozen:28,dp_help:27,dp_log:27,dp_mode:27,dp_server:27,dp_stdout:27,dport:16,dprintf:27,drastic:[27,42],driven:42,dronepup:42,drop:[3,4,35,42],dropp:[],dst:6,due:[17,21,28,35,42,46],dump:[21,35,42],duplic:42,dupwait:35,dure:[3,11,22,27,29,30],dynam:[2,3,10,29,30,33,42],dynamicban:[10,42],dynamicexempt:[10,42],dynamicinvit:[10,42],each:[0,4,6,10,15,18,23,28,29,30,32,34,35,36,39,42,45,46,48],earlier:19,easi:[5,28,30,42,44],easier:[3,19],easiest:42,easili:[0,1,2,4,28,36,42],east:35,ebai:35,ecb:42,ecdsa:29,echo:[36,38,45],ecparam:29,eden:42,edit:[2,3,28,45],editor:[29,30],editplu:30,edu:[42,48],effect:[15,33,35,42],effici:[0,4,30,34,35,36],effort:[0,2,4,42],efnet:[4,17,21],egg_lang:35,eggdrop1:7,eggdrop:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,37,38,41,43,44,45,47,48],eggdroptest:[32,46],egggdrop:2,egghead:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,33,34,35,36,37,38,39,40,41,42,43,44,45,48],egghelp:[4,30],eight:[35,42],either:[3,4,15,16,29,30,31,32,33,34,35,37,42,44,46],element:42,elimin:29,els:[28,39,42],email:[4,29,35,42],embed:42,emerg:38,emot:46,empti:[42,46],enabl:[0,2,4,7,10,12,15,17,21,23,27,28,30,34,35,36,37,38,44,45,47],enclos:[10,37,42,46],encod:[42,43],encount:[30,47],encourag:[2,30,41],encpass2:41,encrypt:[2,5,6,9,19,29,31,34,36,44],end:[3,27,35,41,42,43],endless:10,enforc:[10,29,32,35],enforceban:10,english:[35,45],enhanc:7,enjoi:41,enlarg:3,enough:35,ensur:[27,29,30,34,41,42],enter:[3,10,15,29,31,35,39,40,41,42,44,46],entir:[30,42,46,47],entitl:48,entri:[3,4,29,30,35],env:35,environ:[16,35,36,44],eof:42,equal:42,equival:[6,21,31],equivil:[],eras:[15,42],error:[4,21,27,30,35,42,47],escap:42,especi:28,essenti:41,est:35,establish:[37,42,44],etc:[0,2,4,10,17,24,27,30,32,34,35,36,42,45,48],eth0:16,ethic:35,etiquett:4,european:35,evalu:42,even:[0,4,7,15,17,27,30,33,34,35,36,39,42,47],event:[0,4,24,27,32,34,35,46,47],eventu:19,ever:[29,30,35,42,44],everi:[0,3,4,10,15,17,21,23,27,28,29,32,33,35,37,41,42,48],everydai:35,everyon:[39,42],everyth:[3,28,42],everywher:[35,37,42],evnt:[21,42],exact:42,exactli:[15,17,27,28,42],examin:27,exampl:[2,3,4,5,7,15,16,21,27,28,29,30,31,35,39,42,44,45,46,47],exceed:35,except:[4,13,21,27,35,42,44],excess:[4,10,21],exchang:29,exclud:42,exclus:[21,42],execut:[2,3,7,27,28,32,42],exempt:[0,1,2,4,10,17,24,34,36,47,48],exhaust:[42,46],exist:[0,4,15,21,27,32,41,42,46,47,48],exit:[4,6,12,15,21,42],expand:[0,2,4],expans:42,expect:[6,13,35,42],experi:[3,15,28,30],experienc:3,expir:[10,17,18,21,33,35,42,44],explain:[10,42],explan:[10,30,31,42,46],explicit:38,explicitli:[5,42,44],express:42,extend:[24,36,38,42],extens:[3,30,32],extern:[16,29,35],extra:[7,35,38],extract:[30,42],f270:30,face:47,fact:[0,4,46],fail:[14,23,35,42,44],failur:[42,46],fake:42,fals:42,famili:35,familiar:[4,28],fanci:41,fancyp:28,far:15,fast:30,faster:42,fastest:4,fatal:42,fault:27,favor:[5,22],featur:[0,2,4,7,10,17,21,22,29,30,32,35,37,38,40,42,44,47,48],februari:13,feel:[4,5,27,40],few:[24,28,30,31,35,42,47],field:[21,32,35,42,44],fifth:1,fight:10,figur:[3,30],fil:42,file:[1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,36,37,41,43,44,48],file_receiv:42,file_send:42,file_send_pend:42,filearea:42,filedb:[15,42],filemask:6,filenam:[6,10,18,30,35,44],filepath:6,files:15,filesi:[2,6,35],filestat:6,filesystem:[15,42,48],fill:[35,40,44],filt:[27,42],find:[3,6,14,17,20,27,28,29,30,39,40,42,47],fine:[17,21,35,46],finger:[13,30],fingerprint:[29,35,44],finish:[4,15,30,42],finnish:35,firewal:35,first:[0,2,4,5,15,19,21,27,28,30,31,34,35,41,42,44,45,46],five:42,fix:[0,3,4,27,35,42],flag:[2,5,6,10,13,17,22,27,28,30,35,36,43],flagmask:46,flash:43,flat:42,flexibl:[42,44],flood:[0,4,10,13,18,21,34,35,36,42,48],floor:1,flud:42,flush:22,focus:[24,47],folder:7,follow:[3,4,5,10,15,17,21,24,27,30,31,34,35,36,38,40,41,42,43,44,45,46,47],foo:[28,29,42],forbid:3,forc:[3,10,12,15,19,22,28,35,37,42],forcefulli:44,forev:35,forget:42,fork:[31,40],form:[0,4,27,28,42,43],format:[7,21,27,29,30,31,35,41,42,43,46],forward:18,found:[2,4,27,35,42,46],foundat:1,four:[10,28,32,35,37,42,43],fourth:28,fprint:[35,44],fragil:42,franklin:1,free:[1,2,5,27],freebsd:37,freeli:[0,4],freenod:21,french:35,frequent:[4,30],fresh:35,fri:42,friend:[10,48],frim:27,from:[0,1,2,3,4,5,6,7,10,15,16,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,37,39,41,43,44,45,46,47,48],front:[10,28,30,31,42,47],ftp:[5,30],full:[3,4,5,24,30,37,42,44,46,47],fuller:1,fulli:[5,35,42,47],fun:[3,47],func:27,func_nam:27,func_tabl:27,function_to_cal:27,further:[29,42],futur:[3,17,30,41,42],fwd:18,gain:[0,4,41,48],game:[0,2,4,24,47],garbag:27,gatewai:[24,46,47],gave:30,gayteen:0,gcc:3,gener:[0,1,3,4,19,24,28,29,30,38,41,42,44,47],genkei:29,genrsa:35,geo:28,german:35,get:[6,7,10,21,22,23,27,28,31,32,35,39,48],geteggdrop:[2,4,30],getinfo:42,getop:10,gif:15,git:[2,3,30,40],github:[2,4,30],give:[3,4,10,15,21,28,30,34,35,36,39,41,42,48],given:[4,14,15,16,30,42,46],global:[2,12,16,17,21,22,27,28,33,34,46,48],globalflag:42,gmt:[35,42],gnu:[0,1,3,4,11],goe:[3,10,29,33,34,39,42,44],going:[0,4,15,21,28,31,32,42],gone:[17,42],goober:42,good:[0,15,21,24,28,30,35,42,47,48],got:42,gpl:[0,4],grab:42,grain:28,grant:[29,36,44,47],graphic:44,greater:42,gree:28,greet:[0,2,4,10,28,32],greetmsg:28,greetscript:28,grep:29,ground:35,group:[15,16,35,38,42],grown:0,gseen:[6,20],guarante:[17,32],guess:17,gui:46,guid:[2,3,28,30,31],gunzip:30,guppi:42,gzip:[11,42],had:[3,5,10,34,35,42,47],haha:4,halfop:[10,42,48],hand:[28,35,42],handi:30,handl:[28,29,33,35,41,44,46],handshak:42,hang:[6,14],happen:[28,30,33,35,42],hard:[28,35],harder:28,hardwar:[0,4],has:[0,1,2,4,5,10,14,15,17,21,28,30,31,32,33,34,35,36,37,41,42,44,46,47,48],hash:[2,5,19,30],hasn:21,hate:48,have:[0,1,3,4,5,6,9,10,12,15,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,36,37,39,41,42,44,45,46,47,48],haven:30,head:35,header:[2,4,27,28,31,44],heaven:3,held:46,hello:[17,21,29,30,35,36,42],help:[0,3,13,21,27,28,29,30,33,34,35,37,39,42,43,48],helper:3,henc:[7,27,42],here:[2,4,10,13,14,15,17,18,21,23,28,29,30,33,34,35,42,45,46],herself:4,hidden:[15,30,36],hide:[6,37,42],high:45,higher:[17,19,22,23,30,44],highest:42,highli:[3,21,30],highlight:48,him:1,himself:4,hint:28,his:[21,30],histor:42,histori:46,hit:42,hold:[22,42],hole:35,home:[3,15,16,29,30,44],hook:27,hook_5minut:27,hook_backup:27,hook_daili:27,hook_di:27,hook_hourli:27,hook_idl:27,hook_load:27,hook_minut:27,hook_num:27,hook_pre_rehash:27,hook_read_userfil:27,hook_rehash:27,hook_secondli:27,hook_userfil:27,hope:[30,47],hopefulli:[3,42],hors:30,host:[0,2,4,10,16,21,24,28,33,34,35,44,46,48],hostmask:[28,29,33,34,36,41],hostnam:[6,10,14,29,35,37],hosttarget:[24,46],hour:[6,25,27,33,35,42],hourli:[18,27,35],how:[0,3,6,10,13,14,15,18,21,22,24,28,29,30,31,33,34,35,42,44,45,46,47],howev:[4,7,13,21,29,31,32,35,41,42,44,45],htgt:46,html:[4,37],http:[2,4,6,20,25,30,32,38],hub:[4,22,30,34,35,41,44],hubbot:31,hubcap:48,humor:29,hup:42,hurt:5,iconfig:[3,7,30],idea:[28,30,40],ideal:[41,47],ident:[2,6,7,17,21,29,35,37,41,42],identd:[16,30],identifi:[29,35,41,42,48],idl:[10,27,42],idx:27,ignor:[0,4,13,21,22,28,34,35,36,42,46],ill:42,imag:4,immedi:[21,30,32,41,42],imperson:16,implement:[6,7,16,31,32,35,38,40,41,42,47],implementatino:31,impli:[1,27],importantli:28,improv:[0,4],inact:[10,23],inc:1,incess:0,includ:[0,2,3,4,7,17,25,27,29,30,31,33,35,36,37,41,42,44,46,47],incom:[15,35,42],increas:[32,35,41],incred:[30,42],independ:7,indic:[21,27,30,42,46],infeas:[24,47],infin:35,infinit:15,info:[3,4,10,12,17,27,30,35],inform:[0,2,3,4,5,6,10,15,25,27,28,29,30,32,34,35,37,38,42,44],infrastructur:44,ing:[17,24,47],init:[21,35,42],init_serv:21,initi:[27,28,30,37,38,42,44],input:42,insecur:10,insensit:42,insert:[10,43],insid:[28,35],instal:[0,4,5,28,29,31,35],instanc:[10,32],instantli:21,instead:[1,4,5,10,15,16,17,22,24,30,35,41,42,44,45,47,48],instruct:[7,30,41],integ:[10,42],integr:2,intend:[3,33,42],intens:21,intent:[24,47],intention:28,interact:[3,4,6,16,17,35,42,44,47],intercept:42,interchang:[31,37],interest:4,interfac:[2,24,42,47],intern:[21,32,35,42,46],internet:[0,4,42,44],interpret:[3,37,42,43],interv:42,introduc:[4,30,42],invalid:42,invers:43,invit:[0,2,4,10,17,24,34,36,38,47],invite:42,invok:42,involv:29,invt:42,ipaddress:42,iptabl:16,ipv4:[30,35,37],ipv4address:42,ipv6:[2,30,35,36,42],ipv6address:42,irc:[0,4,6,15,16,21,24,28,29,30,32,33,34,35,36,37,38,39,42,43,45,46,48],ircawai:42,ircd:[17,21,42],ircii:[23,42],ircnet:[4,10,17,21],ircop:[10,17],ircu2:17,ircv3:[2,32,36,42,45],isn:[6,15,21,22,25,30,33,42],isol:34,isop:10,isoptest:10,isp:30,isset:32,issu:[4,5,16,24,30,32,35,40,42,44,46,47],issuer:44,issupport:32,istn:10,isupport:32,ital:42,item:42,its:[1,2,4,7,10,15,16,17,19,21,22,24,28,30,32,34,35,36,40,42,45,47],itself:[15,27,28,29,35,42],itsself:[],j9irk4vs28b0obz9easys4w2ystji3u:47,jan:[42,44],janitor:[15,48],januari:[1,8,9,12,18,20,23,25,42],jkp:30,job:44,john:1,join:[2,6,10,12,17,18,24,28,30,31,33,35,36,38,39,42,46,47,48],jpk:35,jul:7,juli:0,jump:[21,34,44],jun:45,june:16,jupe:42,just:[0,3,4,5,6,14,15,17,19,22,27,29,30,32,34,35,39,41,42,45,46,47],karma:40,keep:[2,4,10,15,21,23,30,35,47],kei:[2,3,10,17,24,28,29,35,41,46,47],kept:[33,35],keyout:[29,44],keypair:[29,31],kick:[10,17,21,32,35,42,45,48],kicker:42,kiddi:35,kill:[30,42],killer:5,kilobyt:[15,35],kind:42,know:[17,18,21,24,27,28,32,33,34,35,42,45,47],knowledg:0,known:[21,29,35,41,42],kreativrauschen:[6,20],kvirc:44,lag:[35,39],lame:[10,17,34,35,42],lamer:35,lameshar:34,lamest:[10,30,34,35,43],lamestbot:[3,10,18,21,30,34,35,42,43],lang:45,languag:[28,35,36,45],larg:[2,15,17,21,35],larger:[28,41],last:[0,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,30,33,34,35,37,38,39,42,43,44,45,46,48],lastli:42,laston:42,late:42,later:[1,3,6,9,18,19,25,28,30,35,42,44],latest:[4,5,30],launch:30,layer:[29,31],lazi:17,leaf:[34,35,41,44],learn:[17,29,30,35,36,42],least:[4,17,27,30,33,35],leav:[10,21,30,35,39,42,47],left:[17,42],legal:[2,4],len:21,length:[17,21,27,41,42,44],less:[13,39,42],let:[4,6,10,14,18,27,28,30,34,35,36,42],letter:[4,35,48],level:[11,16,29,32,35,48],libera:[2,4,5,21,27,28,29,30],librari:[28,41,44],libssl:[4,30,31],licens:[0,1,4],lieu:42,life:[18,30],light:47,like:[0,1,4,6,9,10,13,15,17,19,27,28,29,30,35,36,37,39,40,41,42,44,46,47,48],limbo:35,limit:[2,6,10,15,17,21,34,37],lindex:42,line:[2,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,34,35,36,41,42,44,45,46,47],link:[0,2,3,4,5,6,7,15,22,23,27,35,36,38,41,44,45],linux:37,list:[0,4,6,10,14,15,19,21,22,24,25,27,28,29,30,31,32,34,35,36,38,39,44,46,47],listen:[29,30,34,35,37,44],liter:[27,42],littl:[3,5,15,24,30,34,45],llama:34,llamabot:[30,35],load:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,34,35,41,42,47],loadmodul:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,35,41,47],lobster:41,local:[15,28,30,35,39,40,42,44],localfil:6,locat:[2,4,23,28,29,31,35,44],log:[0,2,4,10,19,24,27,30,32,40,41,42,47],logfil:[25,27,30,35,45],logfilenam:35,logflag:35,logic:42,login:[30,35,41,46],logmod:27,logsiz:35,longer:[3,5,15,17,19,27,30,31,42],look:[0,4,5,6,10,20,25,26,28,29,31,32,35,36,41,42,44,47],lookup:[14,35,37,42],lose:10,lost:42,lot:[5,17,28,30,32],low:[21,23],lower:21,lowercas:21,lsa:15,luck:[30,47],lurk:2,mac:37,machin:[3,16,30,35],macro:27,made:[0,1,3,4,5,10,22,40,42,44,47],magic:28,mai:[1,4,5,10,11,15,16,17,23,28,30,34,35,37,38,42,45,46,47],main:[7,28,30,31,32,39],maintain:[2,16,30,32,45,46],mainten:48,major:[27,30,42],make:[0,2,3,4,5,6,7,10,13,15,19,21,22,24,27,28,29,30,31,35,37,38,40,42,44,45,47],makefil:[3,27],making_modulenam:27,man:35,manag:[2,4,6,15,24,31,47],mandatori:42,mani:[4,5,10,14,15,17,21,27,29,30,31,34,35,42],manipul:[2,35],manpag:35,manual:[4,29,34,35,37,42,44,46],mar:37,march:[33,43,48],mark:[15,36,42,48],mask:[15,21,28,35,46],masquerad:35,master:[15,29,30,33,34,35,42,43,48],match:[1,2,10,15,17,27,28,33,35,41,44,46],math:42,matter:[1,14,28,29],max:[15,17,18,21,23,35],maxdepth:[],maxim:35,maximum:[10,14,15,17,18,21,23,35,41,42,44],maxsend:14,mayb:[28,35],mco:[35,42],mcobx:30,md5:[6,9],mean:[15,17,21,28,29,32,33,34,35,36,37,41,42,44,46],meaning:[24,42,47],meaningless:48,measur:21,mechan:29,meet:44,mem:42,member:[10,27,32],memberlist:42,memori:[27,42],mention:27,meridian:35,messag:[4,10,21,27,28,30,32,35,36,38,39,41,43,45,46],method:[4,6,9,16,17,19,24,28,29,30,31,41,45,47],midnight:35,might:[4,17,23,27,35,42,44],migrat:5,militari:35,milk:48,min:35,miniatur:39,minimum:[0,10,42,46],minor:[27,42],minu:10,minut:[4,10,17,23,27,29,30,33,35],mirc:[21,42],misc:[35,42],miscellan:2,misnom:42,miss:[4,30,32,42],mix:[10,17],mkcoblx:35,mkdir:6,mnnrrpp:42,mnot:22,mnt:30,moc:42,mod:[3,6,7,20,24,27,35,42,46],mode:[4,5,10,13,17,21,24,27,29,32,33,35,36,38,47],mode_proc:42,mode_proc_fix:42,modechang:42,moder:[24,29,46,47],modern:[16,41],modes_per_line_max:17,modif:[5,30,42],modifi:[2,6,14,17,28,32,35,42],modul:[0,2,4,30,32,34,36,41,47],modular:2,module_clos:[],module_depend:27,module_entri:27,module_expmem:[],module_find:27,module_load:27,module_nam:27,module_regist:27,module_renam:27,module_report:[],module_start:[],module_t:[],module_undepend:27,module_unload:27,modulenam:[7,27],moment:[17,30,31],monitor:[33,36,38],month:[35,42],moo:42,more:[3,4,5,6,13,15,17,20,27,28,29,30,31,34,35,36,38,40,41,42,44],moreov:35,most:[0,2,4,5,16,17,21,27,28,29,30,31,35,36,39,42,46,47],mostli:[24,42,47],motd:[35,43],mount:23,move:[3,4,15,21,30,42,47],mpj:42,mrlame:[30,35],mrslame:[30,35],msg:[4,6,17,20,21,29,30,35,36,39,41,46],msgid:46,msgm:[21,42],much:[2,3,24,27,30,39,42],multi:30,multipl:[0,2,4,16,28,30,34,35,36,42,46],must:[1,2,3,4,10,14,16,17,21,23,27,29,30,31,32,34,35,41,42,44,46],mydir:15,myownevent123:42,myproc:42,mytag:42,myvar:45,myword:17,name:[3,4,6,8,15,21,27,28,29,30,31,32,35,46],nano:30,nat:[16,35,37],natur:46,nearli:7,necessari:[10,31],necessarili:42,need:[0,3,4,10,14,16,17,21,27,28,29,30,31,32,34,35,37,41,42,44,46,47,48],needal:42,needop:42,neg:[14,35,42],negcach:14,negoti:[42,44],net:[1,3,17,21,24,30,32,38],netbsd:37,nethack:48,netsplit:[16,17,35,36,42],network:[0,2,4,17,21,35,42,43],never:[4,5,10,35,42],new_module_nam:27,newer:[5,30],newhandl:42,newidx:42,newnick:42,newus:[30,35],next:[5,10,15,21,27,28,30,31,35,42],nfree:27,nice:27,nicebot:30,nick:[10,17,21,25,28,29,30,35,48],nicknam:[6,21,28,29,30,32,35,43,45,46,48],nickserv:[2,44],nist256p:29,nkch:42,nmalloc:27,no_irc:[6,21],nobodi:[15,28],node:[29,44],nodesynch:10,noemail:4,non:[3,10,14,16,17,21,27,29,33,34,42,44,47],none:[8,9,10,12,14,18,19,20,21,23,26,42],noout:29,noqueu:42,nor:16,normal:[0,4,6,13,14,15,16,21,27,28,31,35,42,44,45,46,47],notabl:47,notat:35,notc:42,notcproc:42,note:[2,3,6,7,9,10,14,17,19,21,22,27,29,30,32,34,35,41,44,46,47],notebox:42,notefil:[18,42],notepad:30,noth:[27,35,42,47],notic:[2,13,15,28,34,35,42,47],notif:42,notifi:[18,21,30,35,36,38,42],nots:1,nov:34,novemb:[22,38],novic:[0,4],now:[3,5,15,16,17,28,29,30,31,34,35,37,41,42,46,48],ntik:42,number:[2,10,15,17,18,19,21,23,24,27,30,31,34,35,41,42,44,46,47,48],numer:[29,31,42],nxdomain:14,oauth:47,obtain:[2,31,44],obvious:[33,42],occur:[17,28,42],occurr:27,octal:35,octob:[10,19,21,35],off:[10,16,17,21,30,34,35,39,42],offer:[30,31,32,46,47],offici:[2,4],offlin:42,offset:35,often:[4,6,14,29,35,46],oident:16,oidentd:16,okai:35,old:[6,19,21,30],old_module_nam:27,older:[4,37,42],oldest:[2,42],oldhandl:42,omin:28,omit:[42,44],onc:[4,10,15,17,19,21,28,29,30,40,42],one:[4,10,15,16,17,21,27,28,29,30,31,33,34,35,36,39,40,41,42,44,45],ones:[14,22,34,37,42],onjoin:18,onli:[3,4,5,6,7,10,15,16,17,18,20,21,22,25,26,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],onlin:[6,15,18,29,32],opchar:17,open:[16,29,35,39,40,42,44],openbsd:37,openssl:[2,3,4,19,29,30,31,35,44],oper:[13,21,28,35,37,42,43],opped:[10,42,48],opping:[0,4],oppos:42,ops:[10,32,42,48],optim:[6,21],optino:38,option:[1,3,4,7,10,15,16,19,21,29,30,35,44,47],order:[4,14,28,32,35,41,42,44,46],ordinari:[42,44],org:[2,4,5,6,25,28,30,31,34,35,42],origin:[1,21,30,40,42],oss:16,other:[0,1,4,6,9,10,14,15,16,17,18,19,21,22,27,28,29,30,31,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48],otherdir:3,otherwis:[3,4,12,15,28,32,33,34,35,37,41,42,44,46],our:[30,34,42],ousterhout:1,out:[0,3,4,23,25,28,29,30,34,35,39,41,42,44],outform:29,outgo:[35,42,45],output:[2,3,27,29,31,41,43,45,46],outsid:[19,31,35],over:[15,21,24,27,28,30,35,37,42,44,45,47],overal:32,overhead:7,overrid:[22,37,44],overridden:17,overwrit:[16,30,42],overwritten:[5,35,42],own:[1,7,15,16,21,22,28,29,30,31,38,42,44,45,47],owner:[4,10,30,35,39,42,48],p_tcl_hash_list:27,packag:[1,3,4,30,31],pad:42,page:[30,40],pai:[5,32,42],pain:[23,30],pair:[29,31,32,42,44,46],paragraph:3,paramet:42,paranoid:[22,35],pars:42,part:[0,4,21,24,28,35,36,42,44,45,47],parti:[2,5,12,30,34,35,36,42,44,48],particular:[5,29,35],partproc:42,partylin:[2,4,6,12,30,31,32,34,35,37,41,42,44,45,46,47,48],pass:[28,29,30,32,37,39,41,46],passiv:34,passthru:35,password:[5,6,9,17,19,21,22,29,30,34,35,36,39,41,44,47],past:[1,4,27,35],patch:[2,37,42],path:[2,3,15,16,30,31,42,44],pathnam:42,patient:15,pbk:41,pbkdf2:[2,5,6,41],peer:[21,35,44],pem:[29,35],penalti:21,pend:[6,10],peopl:[4,10,15,16,17,18,21,22,28,30,35,36,39,42,43,48],per:[17,42,46],percent:43,perfect:32,perform:[0,3,4,5,10,30,42,48],perhap:30,period:[6,14,30,42],perm:35,perman:[10,33,35,42],permiss:[4,35,41],permit:42,perorm:2,persist:30,person:[4,28,30,35,42],phew:30,phrase:42,physic:34,pick:42,pictur:5,pid:[30,35,42],pidfil:35,piec:[3,28],ping:13,pipe:34,pl1:42,place:[1,3,5,7,10,15,17,28,30,33,35,42,44,47],plain:[29,35,44],plaintext:[29,42,44],plan:[4,28,42],platform:[0,4,24,42,47],pleas:[4,5,6,7,9,10,16,19,21,31,35,38,42],plu:[10,21,35,42,44],pmsg:28,point:[3,6,21,26,30,34,35,42],pointer:[1,3,4,36,43],popul:46,popular:[0,4,5,30,35],port:[1,5,14,16,21,22,29,30,31,34,35,37,44],portabl:42,portion:[3,7,10,42],portrang:35,posit:[27,35],posix:42,possibl:[3,10,13,15,21,29,31,35,37,38,39,42,44,46],potenti:[5,16,28,42,46],pour:40,power:[4,36],practic:[41,42],pre:[42,44],preced:[30,42,44],prefer:[35,37,44],prefix:[5,17,21,28,31,35,39,44,46,47],preinit:42,prematur:30,prepar:34,prepend:35,prerehash:42,prerequisit:2,prerestart:42,prerout:16,present:[2,6,28,29,32,37,42,46,47],preserv:30,pretend:47,pretendnet:31,pretti:[0,39],preval:29,prevent:[0,4,10,17,18,24,30,34,37,42,47],previou:[1,3,4,5,19,30,42,47],previous:[5,30,42],primari:[21,35],prime256v1:29,prime:35,printf:27,prior:[3,29,30,32,41,44],prioriti:42,privat:[18,22,28,29,30,31,35,39,42,44],privatekei:[29,31,35,44],privileg:[0,4,16,48],privmsg:[10,28,29,42],probabl:[4,21,29,30,31,42],problem:[30,35,37],proc:[21,27,28,46],proce:42,procedur:[2,22,32,46,48],process:[0,3,4,5,11,15,16,23,29,30,34,41,42,44],procnam:[28,42,46],produc:[35,42],program:[0,2,4,16,29,30],progress:15,prohibit:35,project:[2,40,47],prompt:[3,4,32],promptli:30,proper:[3,37,42],properli:[5,30,31,34,35],protect:[0,2,3,4,10,19,21,29,30,33,35,41,42,44,48],protectfriend:10,protecthalfop:10,protectop:10,protocol:[31,35,38,42,44],prove:30,provid:[0,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,27,29,30,35,37,38,40,42,44,46,47],pseudo:42,pub:[4,5,21,29,32,42],pubkei:29,publicli:25,publish:35,pubm:[21,42],pull:[4,40,41],punish:[10,42,48],purpos:[0,1,6,25,26,34,35,42],push:[40,42],put:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,35,42,44],putlog:[21,27,28],putquick:21,putserv:[10,28,29],putti:29,pwd:[6,30],quakenet:[4,21],qualifi:35,quann:[6,20],queri:[14,16,32,37],question:[4,29],queu:[15,21,42],queue:[21,27],quick:[2,27,30,35],quicker:30,quickli:[2,35],quiet:[21,35,48],quit:[4,6,21,30,35,42],quot:[42,46],quota:35,raid:[24,47],rais:[10,21],ram:35,rand_max:42,random:[10,21,34,42],rang:[30,35],rate:21,rather:[5,42,44],raw:[32,35,44],rawt:42,rcvd:42,reach:[17,21,35],react:[28,32],read:[0,2,3,4,6,7,16,27,28,29,30,31,35,42,43,47],readabl:42,readm:[2,3],readonli:27,real:[21,27,42],realli:[28,30,35,45],realnam:[21,42],reason:[4,27,29,30,34,35],reboot:[16,29],receiv:[14,15,21,23,29,34,42,46],recent:[4,30,42,44],recev:[],recipi:42,recogn:[17,21,29,48],recom:[],recommend:[4,5,10,23,27,30,41,42,45,46],recompil:[17,30],reconnect:[22,42],record:[2,22,27,32,36,48],redirect:16,reduc:[27,46],refer:[27,28,31,35,42],refin:28,reflect:[5,42],refresh:[42,46],regardless:42,regist:[2,10,29],regular:[10,42,44],regularli:36,rehash:[7,27,28,35],reiniti:42,reject:[21,34,35],rejn:42,rejoin:[30,42],rel:[14,27,30,42],relai:[0,4,34,35],relat:[1,6,10,28,37,42],releas:[0,1,30,41,42],relev:[4,27,30],reli:42,reliabl:[32,42,46],relink:34,relinquish:42,rem_builtin:27,rem_tcl_command:27,rem_tcl_int:27,rem_tcl_str:27,remain:[10,33,42],remaind:[15,46],rememb:[10,28,29,30],remind:35,remot:[15,34,35,42,43],remotebotnam:42,remov:[5,10,15,19,27,29,30,33,36,37,41,45,46,47],renam:[2,15,27,30,35,42],render:[5,24,47],repeat:[4,32,42],replac:[10,21,27,29,35,42,43,47],repli:[6,13,14,16,17,32,35,42],replic:[46,47],repo:40,report:[6,15,25,27,30,45],repositori:[4,30],repres:[42,46],req:[29,35,44],request:[0,4,5,7,10,13,15,17,21,30,32,33,35,37,38,40,42,44,45,47],requir:[2,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,35,41,44,46],reread:42,resend:[14,42],reserv:[30,35,39],reset:42,resolut:35,resolv:[6,14,35,42],resourc:27,respect:[14,37,42,43],respond:[10,30,42],respons:[21,32,42],rest:[3,27,34,35,41,42,46],restart:[2,3,4,5,7,28,30,35],restrict:[1,15,16,21,35,42,43,47],result:[21,32,33,35,37,42],resum:42,resync:22,retain:42,retri:23,retriev:[6,18],retrydelai:14,reus:[5,42],reveng:10,revengebot:10,revers:[41,42],revert:42,review:[29,31],revis:[0,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,35,37,38,39,42,43,44,45,46,48],revok:[21,35],rfc1459:[38,42],rfc2812:38,rfc:[17,21,24,42,47],rfc_compliant:42,rich:[0,4,30],right:[6,15,16,26,28,30,42],rijndael:19,risk:[1,21],rizon:21,rmdir:6,rmst:46,robei:[1,3,4,36,43,48],robot:36,roomsstat:24,roomstat:[24,47],root:[15,16],round:[19,41],rout:[16,42],routin:[17,35,42],rsa:35,rule:30,run:[2,3,4,5,7,10,16,21,27,28,29,30,31,32,34,35,41,43,44,46],s_client:44,safe:[19,29,30,31,41,47],sai:[4,10,15,28,31,34,42],said:[28,34,42],sake:47,salt:[28,41],same:[0,3,4,5,7,10,11,16,17,27,28,30,32,34,35,38,41,42,43,44,45,46],sampl:[10,30,47],sane:21,sanitycheck:35,sasl:[2,30,36,38],save:[5,6,10,11,12,22,34,35,36,41],scan:30,scenario:[31,32,34],schat:[35,44],schedul:42,scheme:1,scope:31,screen:[4,40,43],script:[0,2,3,4,7,10,21,29,30,33,36,37,42,45,46,47,48],scripter:34,sdcc:44,sdebug:3,seamless:41,seamlessli:19,search:[27,29,42],sec:35,second:[4,10,13,14,17,21,23,27,28,35,45],secondli:42,secret:10,section:[5,10,17,21,24,28,30,34,35,42,47],secur:[0,2,4,6,9,19,29,30,34,35,36,41,42],see:[0,2,3,4,5,6,10,15,17,21,24,25,27,28,29,30,31,32,34,35,37,39,40,41,42,43,46],seen:[2,6,10,32,35,42],selecet:42,select:[4,30,35,36,40,42],self:[2,21,31,35,44],send:[4,6,11,15,17,18,21,22,23,27,28,30,32,34,37,42,45,46],sender:42,sens:[0,4],sensit:41,sent:[6,15,17,22,25,29,32,35,38,39,42,44,46,48],separ:[3,7,21,30,34,35,36,37,38,42,45,46],septemb:14,seri:[30,42,44],serv:35,server:[2,5,6,7,10,13,14,15,16,17,19,24,25,27,29,30,35,36,37,38,44,45,46,47],serverlist:42,serverop:10,serverror:21,servic:[6,10,16,24,29,32,42,44,47],servivc:42,session:[4,37,38],set:[0,1,2,3,5,6,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,31,32,33,34,36,38,39,41,43,45,46,47,48],setcap:16,setnam:[36,38],setup:[4,6,7,30,35],seven:[10,42],sever:[0,4,13,27,30,31,38,42,45],sexystuff:28,sha1:44,sha1sum:29,sha256:19,shall:35,share:[0,2,4,6,10,11,23,27,35,36,42],sharebot:[34,35,42],sharefail:23,she:42,shell:[0,3,4,16,29,30,35,42],shorter:10,should:[1,3,4,5,10,12,13,14,15,17,19,21,22,24,27,28,29,30,34,35,37,39,41,42,44,46,47],shouldn:16,show:[4,6,10,15,25,28,34,35,42],shown:[15,30,35],shutdown:42,shutdownreason:42,side:[35,42,44,47],sidenot:31,sighup:42,sigil:42,sigkil:42,sign:[21,29,31,35,42,43,44,47],signal:42,signific:[4,6],significantli:[32,46],signoff:42,sigquit:42,sigterm:42,silent:35,simialar:[],similar:[4,10,29,30,35,39,40,42,45],similarli:46,simpl:[4,27,28,29,30,42],simpli:[4,5,29,30,31,38,42,47],simplifi:42,simul:[35,42],simultan:[15,23,42],sinc:[0,3,5,17,30,34,35,36,37,42,44,45],singl:[16,17,29,42,46],sit:[0,4,10,35,41],site:[6,48],situat:[32,34],six:42,size:[15,23,27,35,42],skim:4,skip:[30,42],slash:[30,39],slave:34,slennox:30,slow:[15,30,35],slower:35,small:[3,23,34,45],smaller:3,smile:3,snapshot:[2,30],snowbot:15,snt:29,sock:[27,35],socket:[16,27,31,42,44],softwar:[0,1,2,4],solut:41,some:[0,4,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,30,32,33,34,35,36,37,38,42,44,45,47,48],someircnetwork:35,someon:[4,10,17,28,30,31,42,46],someth:[4,28,30,40,42,47],sometim:[4,21,30],somewher:[3,35],song:42,soon:[10,42],sort:[0,4,33],sound:28,sourc:[1,3,4,5,6,7,27,28,31,35,40,42,44,45],space:[0,23,35,38,42],spawn:0,spec:32,special:[34,42],specif:[6,10,14,16,17,19,21,24,30,34,37,38,42,44,46,47,48],specifi:[10,14,15,16,18,21,22,27,29,30,33,35,36,37,41,42,44,46],spectrum:[24,47],spent:[30,42],split:[10,17,37,39,42,43],splt:42,spoiler:47,spoken:42,spoof:16,spread:35,squar:37,squelch:21,src:[3,7,17,27],ssh:30,ssl:[2,3,4,5,21,29,30,31,36,42],sslcert:[3,31,35,44],sslinc:44,ssllib:44,sslport:44,sslsilent:[3,44],sssss:[],stabil:23,stabl:[2,4,30],stack:[17,37,42],stackabl:[],stage:27,stai:42,stall:42,stand:[0,4,30],standard:[14,16,17,23,27,28,38,42,44,47,48],start:[2,3,4,5,6,9,16,19,21,26,28,29,34,35,38,39,41,42,43,46,47],starttl:44,startup:[2,41,42],stat:6,state:[4,42],statement:42,statist:[6,15,25],statu:[0,2,4,10,24,27,31,35,45,46,47],status:32,statuslog:10,stb:21,stdio:27,stdlib:27,stdout:27,stealth:[30,35],step:[2,3,5,27,30,47],stick:33,sticki:[33,42],still:[1,4,5,10,15,22,30,31,32,35,36,42,47],stone:21,stop:[0,10,15,17,27,42,46],stopnethack:[10,48],storag:[6,12,41],store:[5,6,10,12,15,18,24,25,28,30,32,34,41,42,46,47],str_dir:27,str_protect:27,stream:[24,47],street:1,strftime:35,string:[2,17,27,28,29,35,41,46,47],strong:35,strongli:[2,4,30],stuff:[2,4,27,28,30,35,42],style:[33,42],sub:[15,42],subdirectori:[15,42],subject:44,sublist:42,submit:[2,42],subscrib:[46,47],subsequ:42,substitut:[2,35],succeed:42,success:[27,30,42],successfulli:[4,27,42,46],sudo:[16,30],suffic:28,suffici:31,suffix:[7,35],suggest:[5,27],suit:[16,30],suitabl:46,sum:28,summar:21,sun:35,sundai:42,supplant:42,supplementari:32,suppli:35,support:[0,2,3,4,5,6,8,10,11,14,16,17,18,21,22,23,29,30,31,33,35,36,42,45,47],sure:[4,10,27,28,30,31,34,35,42,47],symbol:[31,42],synchron:44,syntax:[5,29,35,44,48],sys:27,system:[2,3,7,14,15,16,27,29,30,35,36,37,42,43,44],tab:27,tabl:[27,38,42],tag:[15,36,38,46],tail:29,take:[3,4,5,6,15,19,21,25,28,30,35,41,42,44],taken:[27,42],takeov:17,talk:[28,31,32,36,39],talli:27,tar:[4,7,30],tarbal:[0,30],target:46,task:[0,2,4,34],tcl:[0,1,2,3,4,6,10,11,21,27,28,30,33,35,36,37,44,45,47],tcl_cmd:27,tcl_int:27,tcl_string:27,tclsh:4,tcltk:4,tcp:[2,16,37],team:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],technic:47,techniqu:45,tell:[15,28,29,30,31,32,34,35,42,47],telnet:[2,29,30,34,36,37,39,41,42,43,44],temp:42,templat:40,temporari:[10,23,25,33,35],ten:29,term:[2,28,31,42],termin:[4,5,42],test:[28,30,48],text:[4,10,21,27,29,35,43,44,45,46,48],textfil:2,than:[4,10,13,15,17,30,31,35,41,42,44],thank:4,thee:42,thei:[0,3,4,5,7,10,12,13,17,18,21,22,27,28,29,30,31,32,33,34,35,41,42,44,46],them:[0,1,3,4,5,7,10,12,13,14,15,17,18,21,22,23,27,28,29,30,31,34,35,36,37,38,41,42,45,47,48],themselv:[17,30,34,42,45],therebi:[45,47],therefor:[6,17,30,35,42],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47,48],thing:[3,4,6,24,26,27,28,29,34,35,42,47],think:[40,48],third:[28,34],thorough:[27,29,31,47],those:[1,3,7,11,15,21,27,28,29,30,42,45,46,47],though:[15,21,28,30,42,44],thr:35,three:[21,29,32,33,34,35,42],through:[4,10,15,21,24,28,31,36,37,38,39,42,47,48],throughout:27,thse:[],thu:[16,28,32,37,41,42],tidi:27,ties:42,till:[],time:[0,3,4,10,14,15,16,17,19,22,23,28,29,30,31,32,33,34,35,36,38,39,41,43,44,45,47],timeout:[6,14,21,23,35,46],timestamp:[35,42],timezon:35,tip:[2,42],titl:48,tiwtch:6,tls:[42,44],tmi:46,tmp:[23,42],toctre:[],todai:42,togeth:[0,2,4,21,28,34,35,36,38,42],token:47,told:28,ton:24,too:[15,17,21,23,27,35,42],tool:[3,30],top:[3,4,28,40,42],topc:42,topic:47,total:[10,27,36,42],tout:42,toward:28,trace:21,track:[2,3,15,24,27,29,42,47],tradit:[24,37,45,46,47],tradition:16,traffic:[3,35,45],trail:27,transfer:[2,6,7,11,15,22,30,34,35,37,42,44,48],transit:[19,41,42],transmit:21,transpar:35,transport:31,treat:[42,47],tree:[0,4,30],tri:[27,35,42],trick:[28,45],trigger:[10,21,27,28,32,42,46],troubl:[14,35],troubleshoot:[4,30],truncat:46,trust:[4,35,48],ttl:14,turbo:[23,30],turn:[10,16,21,35,42],tutori:[2,31],twcmd:[24,47],twice:42,twitch:[2,6,36],twith:46,two:[4,6,17,22,28,30,32,33,34,35,41,42,44,45],type:[3,4,6,7,10,12,17,21,24,27,28,29,30,31,32,33,34,35,36,37,38,39,44],typic:[15,24,35,36,39,42,47],typo:42,ubuntu:31,ufl:42,ugli:15,uglyman:15,uhost:[28,42],uid:[35,44],umod:21,unabl:[17,30,34,37,42,47],unaccess:36,unavail:[21,35],unban:[10,35,42],unbind:[17,35,45,46],uncertainti:46,uncom:[29,31,35,41],under:[0,4,30,36,42],underli:42,underlin:[42,43],undernet:[4,17,21,42],understand:[35,42],understood:21,unexpect:42,unhid:6,unimport:35,unintend:46,uniqu:[35,42,46],univers:35,unix:[0,3,15,16,30,36],unknown:42,unld:42,unless:[17,21,28,30,33,35,42],unlik:[3,36],unlimit:34,unlink:[23,35],unload:[27,42],unoffici:37,unpack:0,unreach:34,unrealircd:[17,42],unreli:[24,46,47],unrest:0,unset:42,unshar:[6,48],unstick:33,unsticki:33,unstuck:42,unsur:30,untar:5,until:[7,10,15,33,35,42],unzip:[5,30],updat:[4,5,19,27,30,32,35,36,41,42,46],upgrad:[2,41,44],uplink:42,upload:[15,30,36,42,45],upon:[0,4,46,48],upper:14,uptim:[2,6],url:[35,42],usa:1,usabl:[6,15,35],usag:[2,4,6,27,35,42],use:[0,1,3,4,5,6,7,9,10,12,13,14,15,16,17,19,21,22,23,27,28,29,30,31,33,34,35,37,39,41,42,43,44,45,46,47,48],used:[0,2,4,10,11,13,15,19,21,27,28,29,30,31,33,34,35,36,37,39,41,42,43,44,45,46,47,48],useful:[1,4,10,23,30,34,42,44,45],useless:[5,24,47],user:[0,2,3,4,5,6,7,9,10,11,12,13,16,17,18,19,20,21,22,23,24,27,28,30,31,32,33,35,36,37,39,40,41,43,44,45,46,47],userban:10,userexempt:10,userfil:[0,2,4,5,6,9,10,11,19,22,23,27,29,30,34,35,41,42,45],userflag:17,userhost:46,userinfo1:35,userinfo:[13,42],userinvit:10,userlist:[6,17,20,22],usernam:[16,29,30,35,46,47],usernotic:[24,46],userst:[24,47],uses:[3,6,17,21,23,27,28,29,30,31,33,35,41,42,44,47,48],using:[1,3,4,6,7,9,10,15,16,17,19,21,27,28,29,30,33,34,35,37,41,42,44,45,46,47],usrntc:46,usst:46,usual:[4,29,30,31,33,37,40,41,42,44,47],utc:35,util:3,utim:28,vagu:30,vali:42,valiant:[0,4],valid:[3,10,21,27,34,35,36,42,44],valis0:42,valu:[10,13,14,17,21,24,27,28,35,41,43,44,46,47],vari:[42,48],variabl:[2,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,32,35,37,43,46],variable_nam:27,varieti:[0,4],variou:[1,27,30,33,35,42],verbos:42,veri:[4,6,16,20,21,28,35],verif:[21,35,44],verifi:[21,29,35,44],version:[0,1,2,3,4,5,13,17,25,27,28,37,38,43,44,46],vertic:42,vhost4:[30,35,37],vhost6:[30,35,37],vhost:[30,35,37],via:[2,3,4,6,11,16,17,20,22,27,28,29,30,32,33,34,35,36,37,38,39,41,43,44,46,47],video:42,view:[5,7,19,29,30,36,42,46],viewer:46,vim:30,vip:[46,47],virtual:35,visibl:42,visit:[5,47],vista:37,voic:[0,2,4,10,29,42,48],wai:[1,3,4,16,21,24,27,28,29,30,31,32,33,34,35,39,41,42,44,47],wait:[6,14,15,17,21,23,30,32,35,42],walk:31,wall:42,wallop:[35,42],want:[0,3,4,6,10,12,14,15,17,18,21,23,27,28,29,30,34,35,37,42,44,45],war:0,warm:40,warn:[4,16,28,42],warranti:1,washalfop:48,wasn:42,wasop:[10,17,48],wasoptest:10,watch:[39,46],web:[2,6,24,35,46],webpag:2,websit:30,week:42,weekdai:42,welcom:28,well:[1,24,28,29,30,31,32,35,41,42,44,47],were:[1,16,17,30,33,34,35,37,41,42,47],west:35,wget:30,what:[0,1,2,5,6,10,15,17,21,25,28,29,30,35,38,39,41,42],whatev:[1,3,28,35,36,42,43],when:[3,4,6,7,9,10,12,15,16,17,21,22,27,28,29,30,32,33,35,37,39,41,42,44,46,47],whenev:[21,27,32,34,42,44],where:[4,6,10,14,15,18,21,27,28,29,30,31,32,35,36,41,42,44,46],wherea:42,wherev:37,whether:[35,37,42],whew:28,which:[3,5,6,10,12,14,15,16,21,22,27,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],whichev:33,whisper:[24,46],whitespac:42,who:[10,15,17,21,28,30,32,35,39,42,48],whoi:[29,35],whole:27,whose:[33,42],whox:[36,42],why:[28,30,42],wide:[39,44],width:43,wild:42,wildcard:[10,28,29,42,46],window:[2,29,37],wise:[4,35],wish:[3,5,7,16,17,25,27,30,33,34,35,42,46],within:[6,15,27,30,31,33,35,38,42],without:[0,2,4,5,6,9,10,13,19,27,28,29,30,31,34,35,36,38,41,42,44],wizard:31,won:[6,10,22,27,28,30,33,34,35,42,44,46],woobi:[2,3,6,27],word:[15,17,29,30,42,46,47],work:[3,5,6,10,13,15,19,20,22,27,28,29,30,33,34,35,37,38,40,41,42,44,45,46],workaround:[24,32],world:[0,2,4,31,35],worri:24,worth:3,would:[4,5,13,28,29,30,31,32,34,35,42,43,44,46,47],wouldn:35,write:[1,2,6,7,26,30,35,41,42,47],written:[0,27,30,42,47],wrote:28,wspm:46,wspr:46,wth:[],www:[2,4,6,20],x509:[29,35,44],xfer:[23,48],xtra:42,xvf:30,xxd:29,year:[0,4,30,35,42],yes:[28,31,42],yesterdai:35,yet:[4,21,30,35,42],yoru:29,you:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48],you_want_to_export:27,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,39,40,41,42,44,47],yourbot:45,yourbranchnam:40,yourconfig:3,youreggdrop:29,youreggdropconfignameher:29,yourself:[7,29,30,40,41,44],yourusernam:40,yyyymmdd:35,zero:42,zip:30,zomg:[],zxvf:30},titles:["About Eggdrop","Boring legal stuff","Eggdrop, an open source IRC bot","Installing Eggdrop","README","Upgrading Eggdrop","Modules included with Eggdrop","Eggdrop Module Information","Assoc Module","Blowfish Module","Channels Module","Compress Module","Console Module","CTCP Module","DNS Module","Filesys Module","Ident Module","IRC Module","Notes Module","PBKDF2 Module","Seen Module","Server Module","Share Module","Transfer Module","Twitch Module","Uptime Module","Woobie Module","Writing an Eggdrop Module","Writing an Eggdrop Script","Common First Steps","Setting Up Eggdrop","Enabling TLS Security on Eggdrop","Account tracking in Eggdrop","Bans, Invites, and Exempts","Botnet Sharing and Linking","Eggdrop Core Settings","Eggdrop Features","IPv6 support","IRCv3 support","The Party Line","Patching Eggdrop","Encryption/Hashing","Eggdrop Tcl Commands","Textfile Substitutions","TLS support","Advanced Tips","Eggdrop Twitch Tcl Commands","Twitch","Users and Flags"],titleterms:{"default":45,"function":[27,47],"int":42,"new":42,"return":42,"short":30,"static":7,"super":30,Adding:34,DNS:14,TLS:[31,44],The:[30,39],Using:[32,34],about:[0,37,38,44],account2nick:42,account:[32,42],accounttrack:42,add:[29,42],addbot:42,addchanrec:42,addit:[27,31],address:42,addus:42,advanc:[35,45],api:24,arg1:42,arg2:42,arg:[42,46],argn:42,assign:29,assoc:[8,42],authent:[29,44],automat:29,background:41,backup:42,ban:[33,42],banlist:42,banmask:42,base64:42,basic:35,best:32,bind:[42,46],block:42,blowfish:9,boot:42,bore:1,bot:[2,15,34,42],botattr:42,botflag:34,botishalfop:42,botisop:42,botisvoic:42,botlist:42,botnam:42,botnet:[5,31,34,35,44],botnick:42,botonchan:42,botport:42,bottre:34,callev:42,can:[2,7],cancel:15,cap:[38,42],capabl:[32,38],certif:44,chan:[42,46],chanban:42,chandname2nam:42,chanexempt:42,chanflag:42,chang:[5,42],chaninvit:42,chanlist:42,channame2dnam:42,channel:[10,15,29,42,46],chansettyp:42,charact:42,chat4:37,chat6:37,chat:37,chattr:42,check:32,chhandl:42,clear:15,clearqueu:42,cmd:46,command:[4,5,24,42,45,46],comment:42,common:29,commun:31,compil:7,compress:[11,42],compressfil:42,config:[5,15,30,42,45,47],configur:[29,30,31,41],configurearg:42,connect:[31,42],consol:[12,35,42],control:42,core:35,count:42,countus:42,creator:42,crontab:4,ctcp:[13,37],ctime:42,cygwin:3,dcc:[35,42,44],dccbroadcast:42,dccdumpfil:42,dcclist:42,dccputchan:42,dccsend:42,dccsimul:42,dccuse:42,decrypt:42,delchanrec:42,delhost:42,deludef:42,delus:42,desc:[15,42],descript:15,dest:15,destin:42,determin:32,develop:4,die:42,dir:[15,42],directori:[15,35,42],disclaim:47,dname:42,dnslookup:42,docker:4,document:[4,5],download:30,dst:15,dumpfil:42,durat:42,dynam:7,echo:42,edit:[30,47],effort:32,eggdrop:[0,2,3,4,5,6,7,27,28,29,30,31,32,35,36,40,42,46],enabl:[31,32,41,42],encpass:42,encrypt:[41,42],entri:42,erasenot:42,event:42,exampl:34,execut:35,exempt:[33,42],exemptlist:42,exemptmask:42,extend:32,extra:42,featur:36,file:[5,15,30,31,35,42,45,47],filemask:15,filenam:[15,42],filepath:15,fileresend:42,filesend:42,filesi:[15,42],filestat:15,find:2,findus:42,first:29,flag:[15,29,34,42,46,48],flushmod:42,formatstr:42,from:42,ftp:4,gener:31,get:[2,4,15,30,42],getaccount:42,getchan:42,getchanhost:42,getchanidl:42,getchaninfo:42,getchanjoin:42,getchanmod:42,getdccawai:42,getdccidl:42,getdesc:42,getdir:42,getfil:42,getfileq:42,getfilesendtim:42,getflag:42,getlink:42,getown:42,getpwd:42,getudef:42,getus:42,git:4,github:40,global:42,hand2idx:42,hand2nick:42,handl:42,handlen:42,handonchan:42,haschanrec:42,hash:41,help:[2,4],helpfil:42,hide:15,histori:30,host:[29,42],hostmask:42,hostnam:42,how:[2,4,5,7],hybrid:41,ident:16,idx2hand:42,idx:42,ignorelist:42,includ:6,info:42,inform:[7,31],instal:[2,3,7,30,37,44],interfac:41,invit:[33,42],invitelist:42,invitemask:42,ipv6:37,irc:[2,17,31,44,47],ircnick:42,ircv3:38,isawai:42,isban:42,isbansticki:42,isbotnick:42,ischanban:42,ischanexempt:42,ischaninvit:42,ischanjup:42,iscompress:42,isdynam:42,isexempt:42,isexemptsticki:42,ishalfop:42,isidentifi:42,isignor:42,isinvit:42,isinvitesticki:42,isircbot:42,isjup:42,islink:42,ismod:46,isop:42,ispermban:42,ispermexempt:42,isperminvit:42,isset:42,istl:42,isupport:42,isvip:46,isvoic:42,join:[29,32],jump:42,keep:45,kei:[31,42,44],keyword:42,killassoc:42,killban:42,killchanban:42,killchanexempt:42,killchaninvit:42,killdcc:42,killexempt:42,killignor:42,killinvit:42,killtim:42,killutim:42,languag:42,lastbind:42,legal:1,level:42,lifetim:42,limit:[24,42,47],line:[4,39],link:[34,42],list:42,listen:[31,42],listnot:42,loadchannel:42,loadhelp:42,loadmodul:[7,42],localfil:15,locat:30,log:[29,35,45],logfil:42,make:34,manipul:42,mask:42,maskhost:42,masktyp:42,match:42,matchaddr:42,matchattr:42,matchban:42,matchcidr:42,matchexempt:42,matchinvit:42,matchstr:42,md5:42,messag:42,minut:42,miscellan:42,mkdir:[15,42],mode:42,modifi:45,modul:[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,35,42],modular:45,module_clos:27,module_expmem:27,module_report:27,module_start:27,module_t:27,monitor:42,more:2,msg:42,must:5,myip:42,name:42,need:7,newban:42,newchanban:42,newchanexempt:42,newchaninvit:42,newexempt:42,newignor:42,newinvit:42,newnam:42,nick2hand:42,nick:[42,46],nicknam:[15,42],nickserv:29,note:[18,42],notic:4,notifi:32,numberlist:42,numvers:42,obtain:4,old:42,oldnam:42,onchan:42,onchansplit:42,onelin:42,onlin:42,open:2,optim:15,option:42,output:42,own:[],parti:39,partylin:[15,24,29],pass:42,passwdok:42,password:42,patch:40,path:35,pattern:42,pbkdf2:19,pend:15,permiss:29,port:42,pre:[2,4,31],prefix:42,prepar:31,prerequisit:30,proc:42,procedur:42,protect:31,pushmod:42,putallbot:42,putbot:42,putcmdlog:42,putdcc:42,puthelp:42,putkick:42,putlog:42,putloglev:42,putnow:42,putquick:42,putserv:42,putxferlog:42,pwd:15,queue:42,queuesiz:42,quick:[3,4],quit:15,rand:42,raw:42,read:5,readm:4,reason:42,record:[34,42],refreshchan:42,regist:47,rehash:42,reload:42,reloadhelp:42,remov:42,renam:45,renudef:42,req:42,requir:[3,27,32,42],requisit:[2,4,31],resetban:42,resetchan:42,resetchanidl:42,resetchanjoin:42,resetconsol:42,resetexempt:42,resetinvit:42,restart:[29,42],rfcequal:42,rmdir:[15,42],roomstat:46,sasl:29,save:42,savechannel:42,script:[5,28,32,35,44],second:42,secur:[31,44],seen:20,self:45,sendnot:42,server:[21,31,32,42],serveraddress:42,set:[4,29,30,35,37,42,44],setchan:42,setchaninfo:42,setdccawai:42,setdesc:42,setflag:42,setlink:42,setown:42,setpwd:42,setudef:42,setup:15,setus:42,share:[15,22,34],show:30,snapshot:4,socklist:42,solo:41,some:2,sourc:[2,15,30],src:42,ssl:[35,44],stackabl:42,start:30,starttl:42,startup:[3,4],stat:15,statu:[32,42],step:29,stickban:42,stickexempt:42,stickinvit:42,still:7,storenot:42,str:42,strftime:42,string1:42,string2:42,string:[42,45],strip:42,stripcod:42,stuff:1,submit:40,substitut:43,support:[32,37,38,44],system:4,tag:[32,42],tagmsg:42,target:42,tcl:[5,24,32,41,42,46],tcp:42,telnet:35,term:34,text:42,textfil:43,thing:2,time:42,timer:42,timerid:[],timernam:42,tip:45,tlsstatu:42,topic:42,track:32,traffic:42,transfer:23,twcmd:46,twitch:[24,46,47],twitchmod:46,twitchvip:46,type:[42,46],unam:42,unbind:42,uncompressfil:42,unhid:15,unixtim:42,unlink:42,unloadhelp:42,unloadmodul:42,unshar:15,unstickban:42,unstickexempt:42,unstickinvit:42,upgrad:[4,5],uptim:[25,42],usag:[15,37,38,41,44],use:[],user:[15,29,34,42,48],userlist:42,userport:42,userst:46,utim:42,validchan:42,valididx:42,validus:42,valu:42,variabl:[42,45],version:[30,42],via:[40,42],washalfop:42,wasop:42,web:47,what:[4,7,27,34],where:2,whom:42,whox:32,why:[],window:3,without:7,woobi:26,write:[27,28],you:2,your:45}}) \ No newline at end of file diff --git a/doc/html/tutorials/firstscript.html b/doc/html/tutorials/firstscript.html index cb7f27747..7ddc58f93 100644 --- a/doc/html/tutorials/firstscript.html +++ b/doc/html/tutorials/firstscript.html @@ -6,7 +6,7 @@ - Writing an Eggdrop Script — Eggdrop 1.9.3 documentation + Writing an Eggdrop Script — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index 6f5f4bc73..a176fca34 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -6,7 +6,7 @@ - Common First Steps — Eggdrop 1.9.3 documentation + Common First Steps — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index 399d47c2c..d9c1bd41d 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -6,7 +6,7 @@ - Setting Up Eggdrop — Eggdrop 1.9.3 documentation + Setting Up Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index 2ed53b411..13f99eab0 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -6,7 +6,7 @@ - Enabling TLS Security on Eggdrop — Eggdrop 1.9.3 documentation + Enabling TLS Security on Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/accounts.html b/doc/html/using/accounts.html index 3ac3b9b4b..635bbd06d 100644 --- a/doc/html/using/accounts.html +++ b/doc/html/using/accounts.html @@ -6,7 +6,7 @@ - Account tracking in Eggdrop — Eggdrop 1.9.3 documentation + Account tracking in Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation @@ -207,7 +207,7 @@

      Using Accounts with Tcl Scripts © Copyright 2022, Eggheads. - Last updated on Sep 18, 2022. + Last updated on Nov 10, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/bans.html b/doc/html/using/bans.html index e3493c8d3..bccb67da2 100644 --- a/doc/html/using/bans.html +++ b/doc/html/using/bans.html @@ -6,7 +6,7 @@ - Bans, Invites, and Exempts — Eggdrop 1.9.3 documentation + Bans, Invites, and Exempts — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/botnet.html b/doc/html/using/botnet.html index 805fb4f0f..9d6abcc86 100644 --- a/doc/html/using/botnet.html +++ b/doc/html/using/botnet.html @@ -6,7 +6,7 @@ - Botnet Sharing and Linking — Eggdrop 1.9.3 documentation + Botnet Sharing and Linking — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation

      Terms

      The following are some common terms used in this document:

      Botnet
      -
      A botnet consists of one or more bots connected together.
      +
      A botnet consists of two or more bots connected together.
      Link
      Link is the term used to describe a bot connecting to another bot.
      Hub
      @@ -428,7 +429,7 @@

      Making bots share user records © Copyright 2022, Eggheads. - Last updated on Jul 12, 2022. + Last updated on Nov 10, 2022. Created using Sphinx 1.8.5.

      diff --git a/doc/html/using/core.html b/doc/html/using/core.html index 186e4c606..9e00c138e 100644 --- a/doc/html/using/core.html +++ b/doc/html/using/core.html @@ -6,7 +6,7 @@ - Eggdrop Core Settings — Eggdrop 1.9.3 documentation + Eggdrop Core Settings — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/features.html b/doc/html/using/features.html index 0186707a8..bd4ac4294 100644 --- a/doc/html/using/features.html +++ b/doc/html/using/features.html @@ -6,7 +6,7 @@ - Eggdrop Features — Eggdrop 1.9.3 documentation + Eggdrop Features — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/ipv6.html b/doc/html/using/ipv6.html index a6d6cf720..2722906a9 100644 --- a/doc/html/using/ipv6.html +++ b/doc/html/using/ipv6.html @@ -6,7 +6,7 @@ - IPv6 support — Eggdrop 1.9.3 documentation + IPv6 support — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

      + href="../index.html">Eggdrop 1.9.4 documentation

    • TLS support
    • IRCv3 support
    • +
    • Account tracking in Eggdrop
    • Encryption/Hashing
    • Twitch
    • Advanced Tips
    • @@ -200,7 +201,7 @@

      Settings © Copyright 2022, Eggheads. - Last updated on Jul 12, 2022. + Last updated on Nov 10, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/ircv3.html b/doc/html/using/ircv3.html index 4c17e7f20..aaf08ba28 100644 --- a/doc/html/using/ircv3.html +++ b/doc/html/using/ircv3.html @@ -6,7 +6,7 @@ - IRCv3 support — Eggdrop 1.9.3 documentation + IRCv3 support — Eggdrop 1.9.4 documentation @@ -15,7 +15,7 @@ - + @@ -61,6 +61,7 @@

      Table of Contents

    • Supported CAP capabilities
  • +
  • Account tracking in Eggdrop
  • Encryption/Hashing
  • Twitch
  • Advanced Tips
  • @@ -158,7 +159,7 @@

    Supported CAP capabilities previous | - next diff --git a/doc/html/using/partyline.html b/doc/html/using/partyline.html index 34d6ef5ca..93dc1ec45 100644 --- a/doc/html/using/partyline.html +++ b/doc/html/using/partyline.html @@ -6,7 +6,7 @@ - The Party Line — Eggdrop 1.9.3 documentation + The Party Line — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

    + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/patch.html b/doc/html/using/patch.html index b5f9098b9..063847d69 100644 --- a/doc/html/using/patch.html +++ b/doc/html/using/patch.html @@ -6,7 +6,7 @@ - Patching Eggdrop — Eggdrop 1.9.3 documentation + Patching Eggdrop — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

    + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/pbkdf2info.html b/doc/html/using/pbkdf2info.html index 56e29505e..af1b55ee0 100644 --- a/doc/html/using/pbkdf2info.html +++ b/doc/html/using/pbkdf2info.html @@ -6,7 +6,7 @@ - Encryption/Hashing — Eggdrop 1.9.3 documentation + Encryption/Hashing — Eggdrop 1.9.4 documentation @@ -16,7 +16,7 @@ - + - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Flag MaskAction
    +mChecks if the user has the m global flag
    +mnChecks if the user has the m OR n global flag
    |+mnChecks if the user has the m OR n global flag
    |+mn #fooChecks if the user has the m OR n channel flag for #foo
    &+mnChecks if the user has the m AND n global flag
    &mn #fooChecks if the user has the m AND n channel flag for #foo
    |+o #fooChecks if the user has the o channel flag for #foo
    +o|+n #fooChecks if the user has the o global flag OR the n channel flag -for #foo
    +m&+v #fooChecks if the user has the m global flag AND the v channel flag -for #foo
    -mChecks if the user does not have the m global flag
    |-n #fooChecks if the user does not have the n channel flag for #foo
    +m|-n #fooChecks if the user has the global m flag OR does not have a -channel n flag for #foo
    -n&-m #fooChecks if the user does not have the global n flag AND does -not have the channel m flag for #foo
    ||+bChecks if the user has the bot flag b
    -
    -
    @@ -1198,7 +1137,9 @@

    accounttracking

    getaccount <nickname> [channel]

    -
    Returns: the services account name associated with nickname (if Eggdrop is configured to track account status), and “” if they are not logged in or Eggdrop is not able to determine the account status. WARNING: this account list may not be accurate depending on the server and configuration. This command is only accurate 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).
    +

    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]

    @@ -1406,7 +1347,7 @@

    onchansplit <nick> [channel]

    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 matchattr above for additional examples).

    +

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

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

    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

    @@ -2390,10 +2331,8 @@

    timer <minutes> <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 no timer
    -

    Name is specified, Eggdrop will assign a timerName in the format of “timer<integer>”.

    -
    -

    Returns: a timerName

    +

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

    +

    Returns: a timerName

    Module: core

    @@ -2915,20 +2854,83 @@

    language

    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.

    -

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

    +

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

    +
    +

    Stackable binds

    +

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

    +
    +
    +

    Removing a bind

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

    +
    +
    +

    Flag Masks

    +

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

    +

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

    +

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

    +

    Some additional examples:

    + ++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Flag MaskAction
    m, +m, m|*Checks if the user has the m global flag
    +mnChecks if the user has the m OR n global flag
    |+mnChecks if the user has the m OR n channel flag
    |+mn #fooChecks if the user has the m OR n channel flag for #foo
    &+mnChecks if the user has the m AND n channel flag
    &mn #fooChecks if the user has the m AND n channel flag for #foo
    |+o #fooChecks if the user has the o channel flag for #foo
    +o|+n #fooChecks if the user has the o global flag OR the n channel flag +for #foo
    +m&+v #fooChecks if the user has the m global flag AND the v channel flag +for #foo
    -mChecks if the user does not have the m global flag
    |-n #fooChecks if the user does not have the n channel flag for #foo
    +m|-n #fooChecks if the user has the global m flag OR does not have a +channel n flag for #foo
    -n&-m #fooChecks if the user does not have the global n flag AND does +not have the channel m flag for #foo
    ||+bChecks if the user has the bot flag b
    +

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

    +

    Bind Types

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

    @@ -3122,10 +3124,10 @@

    Bind Typesnick!ident@host (depending on the keyword); flags are ignored. If the proc returns 1, Eggdrop will not process the line any further (this could cause unexpected behavior in some cases), although RAWT binds are processed before RAW binds (and thus, a RAW bind cannot block a RAWT bind).

    Module: server

      @@ -3464,9 +3466,9 @@

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

    1. ACCOUNT (stackable)
    2. @@ -3474,7 +3476,8 @@

      Bind Typesnick!user@hostname.com account” where channel is the channel the user was found on when the bind was triggered, the hostmask is the user’s hostmask, and account is the account name the user is logging in to, or “” for logging out. The mask argument can accept wildcards. For the proc, nick is the nickname of the user logging into/out of an account, user is the user@host.com hostmask, hand is the handle of the user (or * if none), and account is the name of the account the user logged in to (or “” if the user logged out of an account).

      +

      Description: this bind will trigger when eggdrop detects a change in the authentication status of a user’s service account. The mask for the bind is in the format “#channel nick!user@hostname.com account” and accepts wildcards. account is either the account name the user is logging in to or “*” if the user is not logged in to an account.

      +

      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 but this bind could be triggered late or never on account changes. Please see doc/ACCOUNTS for additional information.

      1. ISUPPORT (stackable)
      2. @@ -3637,7 +3640,7 @@

        TCP Connections -

        Match Characters

        +

        Match Characters

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

        @@ -3660,6 +3663,10 @@

        Match Characters

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

        Match Characters © Copyright 2022, Eggheads. - Last updated on Jul 12, 2022. + Last updated on Nov 10, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/text-sub.html b/doc/html/using/text-sub.html index f043f9d2f..2eb4ed8f4 100644 --- a/doc/html/using/text-sub.html +++ b/doc/html/using/text-sub.html @@ -6,7 +6,7 @@ - Textfile Substitutions — Eggdrop 1.9.3 documentation + Textfile Substitutions — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

        + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/tls.html b/doc/html/using/tls.html index dad561e18..09531799b 100644 --- a/doc/html/using/tls.html +++ b/doc/html/using/tls.html @@ -6,7 +6,7 @@ - TLS support — Eggdrop 1.9.3 documentation + TLS support — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

        + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/tricks.html b/doc/html/using/tricks.html index bb11aa970..a63929472 100644 --- a/doc/html/using/tricks.html +++ b/doc/html/using/tricks.html @@ -6,7 +6,7 @@ - Advanced Tips — Eggdrop 1.9.3 documentation + Advanced Tips — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

        + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/twitch-tcl-commands.html b/doc/html/using/twitch-tcl-commands.html index 45419792b..c973faeb1 100644 --- a/doc/html/using/twitch-tcl-commands.html +++ b/doc/html/using/twitch-tcl-commands.html @@ -6,7 +6,7 @@ - Eggdrop Twitch Tcl Commands — Eggdrop 1.9.3 documentation + Eggdrop Twitch Tcl Commands — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

        + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/twitchinfo.html b/doc/html/using/twitchinfo.html index e6fad3dea..76ba167ed 100644 --- a/doc/html/using/twitchinfo.html +++ b/doc/html/using/twitchinfo.html @@ -6,7 +6,7 @@ - Twitch — Eggdrop 1.9.3 documentation + Twitch — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

        + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/html/using/users.html b/doc/html/using/users.html index debe28233..174947f73 100644 --- a/doc/html/using/users.html +++ b/doc/html/using/users.html @@ -6,7 +6,7 @@ - Users and Flags — Eggdrop 1.9.3 documentation + Users and Flags — Eggdrop 1.9.4 documentation @@ -24,7 +24,7 @@

        + href="../index.html">Eggdrop 1.9.4 documentation diff --git a/doc/modules/mod.filesys b/doc/modules/mod.filesys index 34290d2b5..49ea3ee1c 100644 --- a/doc/modules/mod.filesys +++ b/doc/modules/mod.filesys @@ -176,7 +176,7 @@ rm [files] ... Cleans up the current directory's database. If you have a large directory with many files you may want to use this command if you experience slow-downs/delays over time. Normally, the db should clean - up itsself though. + up itself though. .unhide diff --git a/doc/modules/mod.irc b/doc/modules/mod.irc index ace9404cb..cff7c251b 100644 --- a/doc/modules/mod.irc +++ b/doc/modules/mod.irc @@ -94,7 +94,7 @@ There are also some variables you can set in your config file: bind msg - myword *msg:hello Many IRCops find bots by seeing if they reply to 'hello' in a msg. - You can change this to another word by un-commenting thse two lines + You can change this to another word by un-commenting these two lines and changing "myword" to the word wish to use instead of'hello'. It must be a single word. diff --git a/doc/tcl-commands.doc b/doc/tcl-commands.doc index bf4d5db3b..8b73f3b70 100644 --- a/doc/tcl-commands.doc +++ b/doc/tcl-commands.doc @@ -7,7 +7,7 @@ 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 according to category. -This list is accurate for Eggdrop v1.9.3. Scripts written for v1.3, +This list is accurate for Eggdrop v1.9.4. Scripts written for v1.3, v1.4, 1.6 and 1.8 series of Eggdrop should probably work with a few minor modifications depending on the script. Scripts which were written for v0.9, v1.0, v1.1 or v1.2 will probably not work without @@ -404,44 +404,8 @@ matchattr [channel] Either | or & can be used as a separator between global, channel, and bot flags, but only one separator can be used per flag section. A '+' is used to check if a user has the subsequent flags, and a '-' is used - to check if a user does NOT have the subsequent flags. - - ----------------------------------------------------------------------- - Flag Mask Action - ----------- ----------------------------------------------------------- - +m + Checks if the user has the m global flag - - +mn Checks if the user has the m OR n global flag - - |+mn Checks if the user has the m OR n global flag - - |+mn #foo Checks if the user has the m OR n channel flag for #foo - - &+mn Checks if the user has the m AND n global flag - - &mn #foo Checks if the user has the m AND n channel flag for #foo - - |+o #foo Checks if the user has the o channel flag for #foo - - +o|+n #foo Checks if the user has the o global flag OR the n channel - flag for #foo - - +m&+v #foo Checks if the user has the m global flag AND the v channel - flag for #foo - - -m Checks if the user does not have the m global flag - - |-n #foo Checks if the user does not have the n channel flag for - #foo - - +m|-n #foo Checks if the user has the global m flag OR does not have a - channel n flag for #foo - - -n&-m #foo Checks if the user does not have the global n flag AND does - not have the channel m flag for #foo - - ||+b Checks if the user has the bot flag b - ----------------------------------------------------------------------- + to check if a user does NOT have the subsequent flags. Please see Flag + Masks for additional information on flag usage. Returns: 1 if the specified user has the flags matching the provided mask; 0 otherwise @@ -1223,14 +1187,15 @@ accounttracking getaccount [channel] - Returns: the services account name associated with nickname (if - Eggdrop is configured to track account status), and "" if they are not - logged in or Eggdrop is not able to determine the account status. - WARNING: this account list may not be accurate depending on the server - and configuration. This command is only accurate 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). + 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 [channel] @@ -1455,7 +1420,7 @@ chanlist [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 - matchattr above for additional examples). + 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 @@ -2447,10 +2412,9 @@ utimer [count [timerName]] 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 no timer - -Name is specified, Eggdrop will assign a timerName in the format of -"timer". + it will become the unique identifier for the timer. If timerName is + not specified, Eggdrop will assign a timerName in the format of + "timer". Returns: a timerName @@ -2478,7 +2442,7 @@ utimers Module: core -^^^^^^^^^^^^^^^^^^^ killtimer ^^^^^^^^^^^^^^^^^^^ +killtimer Description: removes the timerName minutely timer from the timer list. @@ -2486,7 +2450,7 @@ utimers Module: core -^^^^^^^^^^^^^^^^^^^^ killutimer ^^^^^^^^^^^^^^^^^^^^ +killutimer Description: removes the timerName secondly timer from the timer list. @@ -2994,21 +2958,98 @@ 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. +every time a user says "danger" on the channel. When a bind is +triggered, ALL of the Tcl procs that are bound to it will be called. Raw +binds are triggered before builtin binds, as a builtin bind has the +potential to modify args. + +Stackable binds Some bind types are marked as "stackable". That means that you can bind multiple commands to the same trigger. Normally, for example, a bind such as 'bind msg - stop msg:stop' (which makes a msg-command "stop" call the Tcl proc "msg:stop") will overwrite any previous binding you had for the msg command "stop". With stackable bindings, like 'msgm' for -example, you can bind the same command to multiple procs. When the 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. +example, you can bind the same command to multiple procs. + +Removing a bind To remove a bind, use the 'unbind' command. For example, to remove the bind for the "stop" msg command, use 'unbind msg - stop msg:stop'. +Flag Masks + +In the Bind Types section (and other commands, such as matchattr), you +will see several references to the "flags" argument. The "flags" +argument takes a flag mask, which is a value that represents the type of +user that is allowed to trigger the procedure associated to that bind. +The flags can be any of the standard Eggdrop flags (o, m, v, etc). +Additionally, when used by itself, a "-" or "*" can be used to skip +processing for a flag type. A flag mask has three sections to it- +global, channel, and bot flag sections. Each section is separated by the +| or & logical operators ( the | means "OR" and the & means "AND; if +nothing proceeds the flag then Eggdrop assumes it to be an OR). +Additionally, a '+' and '-' can be used in front of a flag to check if +the user does (+) have it, or does not (-) have it. + +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 means "OR" and ties +the two types of flags together). You could change this mask to be +"v&v", which would check if the user has a global "v" flag AND a channel +"v" flag. Lastly, to check if a user ONLY has a channel flag, you would +use "*|v" as a mask, which would not check global flags but does check +if the user had a channel "v" flag. + +You will commonly see flag masks for global flags written "ov"; this is +the same as "|ov" or "*|ov". + +Some additional examples: + + ----------------------------------------------------------------------- + Flag Mask Action + ----------- ----------------------------------------------------------- + m, +m, m|* Checks if the user has the m global flag + + +mn Checks if the user has the m OR n global flag + + |+mn Checks if the user has the m OR n channel flag + + |+mn #foo Checks if the user has the m OR n channel flag for #foo + + &+mn Checks if the user has the m AND n channel flag + + &mn #foo Checks if the user has the m AND n channel flag for #foo + + |+o #foo Checks if the user has the o channel flag for #foo + + +o|+n #foo Checks if the user has the o global flag OR the n channel + flag for #foo + + +m&+v #foo Checks if the user has the m global flag AND the v channel + flag for #foo + + -m Checks if the user does not have the m global flag + + |-n #foo Checks if the user does not have the n channel flag for + #foo + + +m|-n #foo Checks if the user has the global m flag OR does not have a + channel n flag for #foo + + -n&-m #foo Checks if the user does not have the global n flag AND does + not have the channel m flag for #foo + + ||+b Checks if the user has the bot flag b + ----------------------------------------------------------------------- + +As a side note, Tcl scripts historically have used a '-' to skip +processing of a flag type (Example: -|o). It is unknown where and why +this practice started, but as a style tip, Eggdrop developers recommend +using a '*' to skip processing, so as not to confuse a single "-" +meaning "skip processing" with a preceding "-ov" which means "not these +flags". + Bind Types The following is a list of bind types and how they work. Below each bind @@ -3295,26 +3336,22 @@ the Tcl proc, and an explanation. (17) RAW (stackable) - bind raw + bind raw procname IMPORTANT: While not necessarily deprecated, this bind has been - supplanted by the RAWT bind as of 1.9.0. You probably want to be using - RAWT, not RAW. - - Description: previous versions of Eggdrop required a special compile - option to enable this binding, but it's now standard. The keyword is - either a numeric, like "368", or a keyword, such as "PRIVMSG". "from" - will be the server name or the source user (depending on the keyword); - flags are ignored. The order of the arguments is identical to the - order that the IRC server sends to the bot. The pre-processing only - splits it apart enough to determine the keyword. If the proc returns - 1, Eggdrop will not process the line any further (this could cause - unexpected behavior in some cases), although RAWT binds are processed - before RAW binds (and thus, a RAW bind cannot block a RAWT bind). The - RAW bind does not support the IRCv3 message-tags capability, please - see RAWT for more information. + supplanted by the RAWT bind, which supports the IRCv3 message-tags + capability, as of 1.9.0. You probably want to be using RAWT, not RAW. + + Description: The mask can contain wildcards and is matched against the + keyword, which is either a numeric, like "368", or a keyword, such as + "PRIVMSG". "from" will be the server name or the source + nick!ident@host (depending on the keyword); flags are ignored. If the + proc returns 1, Eggdrop will not process the line any further (this + could cause unexpected behavior in some cases), although RAWT binds + are processed before RAW binds (and thus, a RAW bind cannot block a + RAWT bind). Module: server @@ -3824,22 +3861,21 @@ the Tcl proc, and an explanation. (52) RAWT (stackable) - bind rawt + bind rawt - procname + procname Description: similar to the RAW bind, but allows an extra field for - the IRCv3 message-tags capability. The keyword is either a numeric, - like "368", or a keyword, such as "PRIVMSG" or "TAGMSG". "from" will - be the server name or the source user (depending on the keyword); - flags are ignored. "tag" will be the contents, if any, of the entire - tag message prefixed to the server message in a dict format, such as - "msgid 890157217279768 aaa bbb". The order of the arguments is - identical to the order that the IRC server sends to the bot. If the - proc returns 1, Eggdrop will not process the line any further, to - include not being processed by a RAW bind (this could cause unexpected - behavior in some cases). As of 1.9.0, it is recommended to use the - RAWT bind instead of the RAW bind. + the IRCv3 message-tags capability. The mask can contain wildcards and + is matched against the keyword which is either a numeric, like "368", + or a keyword, such as "PRIVMSG" or "TAGMSG". "from" will be the server + name or the source nick!ident@host (depending on the keyword); flags + are ignored. "tag" is a dictionary (flat key/value list) of the + message tags with "" for empty values (e.g. "account eggdrop realname + LamestBot"). If the proc returns 1, Eggdrop will not process the line + any further, to include not being processed by a RAW bind (this could + cause unexpected behavior in some cases). As of 1.9.0, it is + recommended to use the RAWT bind instead of the RAW bind. (53) ACCOUNT (stackable) @@ -3847,19 +3883,18 @@ the Tcl proc, and an explanation. procname - Description: triggered when Eggdrop detects a change in a service - account status. The change could be initiated by receiving an IRCv3 - ACCOUNT message, receiving IRCv3 extended-join information when a user - on an existing channel joins a new channel, or detecting an IRCv3 - account-tag in a PRIVMSG. The mask for the bind is in the format - "#channel nick!user@hostname.com account" where channel is the channel - the user was found on when the bind was triggered, the hostmask is the - user's hostmask, and account is the account name the user is logging - in to, or "" for logging out. The mask argument can accept wildcards. - For the proc, nick is the nickname of the user logging into/out of an - account, user is the user@host.com hostmask, hand is the handle of the - user (or * if none), and account is the name of the account the user - logged in to (or "" if the user logged out of an account). + Description: this bind will trigger when eggdrop detects a change in + the authentication status of a user's service account. The mask for + the bind is in the format "#channel nick!user@hostname.com account" + and accepts wildcards. account is either the account name the user is + logging in to or "*" if the user is not logged in to an account. + + 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 but this bind + could be triggered late or never on account changes. Please see + doc/ACCOUNTS for additional information. (54) ISUPPORT (stackable) @@ -4090,6 +4125,9 @@ the four special characters: ~ matches 1 or more space characters (can be used for whitespace between words) (This char only works in binds, not in regular matching) + + \* matches a literal *, but please note that Tcl needs escaping as + well, so a bind would have to use "\*" or {*} for a mask argument ----- ----------------------------------------------------------------- Copyright (C) 1999 - 2022 Eggheads Development Team From 272983c2c34dd25673ab8dcf1be9ce897f217c85 Mon Sep 17 00:00:00 2001 From: Geo Date: Thu, 10 Nov 2022 17:27:05 -0500 Subject: [PATCH 133/320] Run autoconf --- configure | 20 ++++++++++---------- src/mod/compress.mod/configure | 20 ++++++++++---------- src/mod/dns.mod/configure | 20 ++++++++++---------- 3 files changed, 30 insertions(+), 30 deletions(-) diff --git a/configure b/configure index ecfb818de..b7e1fb352 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac bc41b3ea. +# From configure.ac 13ab0170. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop 1.9.3. +# Generated by GNU Autoconf 2.69 for Eggdrop 1.9.4. # # Report bugs to . # @@ -583,8 +583,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Eggdrop' PACKAGE_TARNAME='eggdrop' -PACKAGE_VERSION='1.9.3' -PACKAGE_STRING='Eggdrop 1.9.3' +PACKAGE_VERSION='1.9.4' +PACKAGE_STRING='Eggdrop 1.9.4' PACKAGE_BUGREPORT='bugs@eggheads.org' PACKAGE_URL='' @@ -1334,7 +1334,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop 1.9.3 to adapt to many kinds of systems. +\`configure' configures Eggdrop 1.9.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1401,7 +1401,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Eggdrop 1.9.3:";; + short | recursive ) echo "Configuration of Eggdrop 1.9.4:";; esac cat <<\_ACEOF @@ -1511,7 +1511,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Eggdrop configure 1.9.3 +Eggdrop configure 1.9.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2222,7 +2222,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Eggdrop $as_me 1.9.3, which was +It was created by Eggdrop $as_me 1.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -10513,7 +10513,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Eggdrop $as_me 1.9.3, which was +This file was extended by Eggdrop $as_me 1.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10579,7 +10579,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Eggdrop config.status 1.9.3 +Eggdrop config.status 1.9.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 356916e6d..29f9f2adc 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac bc41b3ea. +# From configure.ac 13ab0170. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop Compress Module 1.9.3. +# Generated by GNU Autoconf 2.69 for Eggdrop Compress Module 1.9.4. # # Report bugs to . # @@ -583,8 +583,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Eggdrop Compress Module' PACKAGE_TARNAME='eggdrop-compress-module' -PACKAGE_VERSION='1.9.3' -PACKAGE_STRING='Eggdrop Compress Module 1.9.3' +PACKAGE_VERSION='1.9.4' +PACKAGE_STRING='Eggdrop Compress Module 1.9.4' PACKAGE_BUGREPORT='bugs@eggheads.org' PACKAGE_URL='' @@ -1240,7 +1240,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop Compress Module 1.9.3 to adapt to many kinds of systems. +\`configure' configures Eggdrop Compress Module 1.9.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1303,7 +1303,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Eggdrop Compress Module 1.9.3:";; + short | recursive ) echo "Configuration of Eggdrop Compress Module 1.9.4:";; esac cat <<\_ACEOF @@ -1383,7 +1383,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Eggdrop Compress Module configure 1.9.3 +Eggdrop Compress Module configure 1.9.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1687,7 +1687,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Eggdrop Compress Module $as_me 1.9.3, which was +It was created by Eggdrop Compress Module $as_me 1.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3687,7 +3687,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Eggdrop Compress Module $as_me 1.9.3, which was +This file was extended by Eggdrop Compress Module $as_me 1.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3740,7 +3740,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Eggdrop Compress Module config.status 1.9.3 +Eggdrop Compress Module config.status 1.9.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index c14fa7a18..00072f073 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac bc41b3ea. +# From configure.ac 13ab0170. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop DNS Module 1.9.3. +# Generated by GNU Autoconf 2.69 for Eggdrop DNS Module 1.9.4. # # Report bugs to . # @@ -582,8 +582,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Eggdrop DNS Module' PACKAGE_TARNAME='eggdrop-dns-module' -PACKAGE_VERSION='1.9.3' -PACKAGE_STRING='Eggdrop DNS Module 1.9.3' +PACKAGE_VERSION='1.9.4' +PACKAGE_STRING='Eggdrop DNS Module 1.9.4' PACKAGE_BUGREPORT='bugs@eggheads.org' PACKAGE_URL='' @@ -1200,7 +1200,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop DNS Module 1.9.3 to adapt to many kinds of systems. +\`configure' configures Eggdrop DNS Module 1.9.4 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1263,7 +1263,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Eggdrop DNS Module 1.9.3:";; + short | recursive ) echo "Configuration of Eggdrop DNS Module 1.9.4:";; esac cat <<\_ACEOF @@ -1342,7 +1342,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Eggdrop DNS Module configure 1.9.3 +Eggdrop DNS Module configure 1.9.4 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1476,7 +1476,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Eggdrop DNS Module $as_me 1.9.3, which was +It was created by Eggdrop DNS Module $as_me 1.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3119,7 +3119,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Eggdrop DNS Module $as_me 1.9.3, which was +This file was extended by Eggdrop DNS Module $as_me 1.9.4, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -3172,7 +3172,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Eggdrop DNS Module config.status 1.9.3 +Eggdrop DNS Module config.status 1.9.4 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" From 2c493b66ba7dec041dbb3f85a2da5d32e4499245 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 11 Dec 2022 20:48:59 +0000 Subject: [PATCH 134/320] Fix typo --- doc/sphinx_source/tutorials/tlssetup.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx_source/tutorials/tlssetup.rst b/doc/sphinx_source/tutorials/tlssetup.rst index 23e2ea636..6cc8fff3e 100644 --- a/doc/sphinx_source/tutorials/tlssetup.rst +++ b/doc/sphinx_source/tutorials/tlssetup.rst @@ -39,7 +39,7 @@ Eggdrop has the ability to protect botnet (direct bot to bot) communications wit 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 implementatino 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:: +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 From b2c9dae3f767c3942eda8b80c30e22ba6e9459fb Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 11 Dec 2022 21:26:40 -0500 Subject: [PATCH 135/320] Add systemd option to autobotchk Patch by: @PeGaSuS-Coder , Geo Adds a -systemd option to the autobotchk script. Will be considered Beta for now, and based on user feedback go stable in the next release. --- INSTALL | 8 +- README | 30 +++++--- doc/html/tutorials/firststeps.html | 23 +++++- doc/sphinx_source/install/install.rst | 6 +- doc/sphinx_source/install/readme.rst | 17 +++-- doc/sphinx_source/tutorials/firststeps.rst | 42 +++++++++- scripts/autobotchk | 89 ++++++++++++++++++---- 7 files changed, 171 insertions(+), 44 deletions(-) diff --git a/INSTALL b/INSTALL index 064b9ea37..1b355fd85 100644 --- a/INSTALL +++ b/INSTALL @@ -115,8 +115,12 @@ Eggdrop into from the previous step] automatically restart if the machine goes down or (heaven forbid) the bot should crash. Eggdrop includes a helper script - to generate a proper crontab script and entry. You can run this - script by typing: + to auto-generate either a systemd or crontab entry. To add a + systemd job, run: + + ./scripts/autobotchk [yourconfig.conf] -systemd + + or to add a crontab job, run: ./scripts/autobotchk [yourconfig.conf] diff --git a/README b/README index 456773650..9e5bef168 100644 --- a/README +++ b/README @@ -156,28 +156,36 @@ COMMAND LINE Most people never use any of the options except -m and you usually only need to use that once. -SETTING UP A CRONTAB +AUTO-STARTING EGGDROP Systems go down from time to time, taking your Eggdrop along with it. You may not be not around to restart it manually, so you can instead use -your host's crontab system to automatically restart Eggdrop should it -quit for any reason. Eggdrop comes with an autobotchk shell script -creates that both checks if your Eggdrop is still running, and a crontab -entry to run the botchk script every 10 minutes. +features of the operating system to automatically restart Eggdrop should +it quit for any reason. Eggdrop comes with an autobotchk shell script +that can create either a systemd or crontab entry. The systemd option +will monitor your Eggdrop and a) start it when the machine boots and b) +restart the Eggdrop if it crashes for any reason. The (older) crontab +option will check (by default) every 10 minutes to see if your Eggdrop +is still running, and attempt to restart it if it is not. - Using autobotchk is probably the fastest way of creating your botchk - and adding a crontab entry. From the install directory, simply run: + To auto-generate a systemd job, from the Eggdrop install directory, + simply run: + + ./scripts/autobotchk -systemd + + To auto-geneerate a script to check Eggdrop's status and run it via a + crontab entry, simply run: ./scripts/autobotchk This will crontab your bot using the default setup. If you want a list - of autobotchk options, type './autobotchk'. An example with options - would be: + of autobotchk options, type './autobotchk'. A crontab example with + options would be: ./scripts/autobotchk -noemail -5 - This would setup crontab to run the botchk every 5 minutes and also to - not send you email saying that it restarted your bot. + This would setup crontab to run the botchk every 5 minutes and not + send you an email saying that it restarted your bot. DOCUMENTATION diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index a176fca34..4a8c80084 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -180,13 +180,15 @@

        Configure Channel Settings

        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? To do that, we use the system’s crontab daemon to run a script (called botchk) every ten minutes that checks 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. To make this process as simple as possible, we have included a script that can automatically configure your crontab and botchk scripts for you. To set up your crontab/botchk combo:

        +

        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)

        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. -
        4. If you don’t want to customize anything via the options listed in #2, you can start the script simply by running:

          +
        5. If you don’t want to customize anything via the options listed in #2, you can install a crontab job to start Eggdrop simply by running:

          ./scripts/autobotchk yourEggdropConfigNameHere.conf
           
          @@ -203,6 +205,21 @@

          Automatically restarting an Eggdropcrontab -e to open the crontab file in your system’s default editor and remove the crontab line.

        +
        +

        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. +
        3. Install the systemd job for Eggdrop simply by running:

          +
          ./scripts/autobotchk yourEggdropConfigNameHere.conf -systemd
          +
          +
          +
        4. +
        5. Note the output at the end of the script informing you of the command you can use to start/stop the Eggdrop in thee future

          +
        6. +
        +
        +

        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:

        @@ -273,7 +290,7 @@

        Setting up SASL authentication © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 03, 2022. Created using Sphinx 1.8.5.

        diff --git a/doc/sphinx_source/install/install.rst b/doc/sphinx_source/install/install.rst index ece05c0e4..2a1679844 100644 --- a/doc/sphinx_source/install/install.rst +++ b/doc/sphinx_source/install/install.rst @@ -96,7 +96,11 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier. 9. It's advisable to run your bot via crontab, so that it will automatically restart if the machine goes down or (heaven forbid) - the bot should crash. Eggdrop includes a helper script to generate a proper crontab script and entry. You can run this script by typing:: + the bot should crash. Eggdrop includes a helper script to auto-generate either a systemd or crontab entry. To add a systemd job, run:: + + ./scripts/autobotchk [yourconfig.conf] -systemd + + or to add a crontab job, run:: ./scripts/autobotchk [yourconfig.conf] diff --git a/doc/sphinx_source/install/readme.rst b/doc/sphinx_source/install/readme.rst index 385c76265..0a1593dc6 100644 --- a/doc/sphinx_source/install/readme.rst +++ b/doc/sphinx_source/install/readme.rst @@ -142,21 +142,24 @@ Command Line Most people never use any of the options except -m and you usually only need to use that once. -Setting up a Crontab --------------------- +Auto-starting Eggdrop +--------------------- -Systems go down from time to time, taking your Eggdrop along with it. You may not be not around to restart it manually, so you can instead use your host's crontab system to automatically restart Eggdrop should it quit for any reason. Eggdrop comes with an autobotchk shell script creates that both checks if your Eggdrop is still running, and a crontab entry to run the botchk script every 10 minutes. +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. - Using autobotchk is probably the fastest way of creating your botchk and adding a crontab entry. From the install directory, simply run:: + To auto-generate a systemd job, from the Eggdrop install directory, simply run:: - ./scripts/autobotchk + ./scripts/autobotchk -systemd + To auto-geneerate a script to check Eggdrop's status and run it via a crontab entry, simply run:: + + ./scripts/autobotchk - This will crontab your bot using the default setup. If you want a list of autobotchk options, type './autobotchk'. An example with options would be:: + This will crontab your bot using the default setup. If you want a list of autobotchk options, type './autobotchk'. A crontab example with options would be:: ./scripts/autobotchk -noemail -5 - This would setup crontab to run the botchk every 5 minutes and also to not send you email saying that it restarted your bot. + This would setup crontab to run the botchk every 5 minutes and not send you an email saying that it restarted your bot. Documentation ------------- diff --git a/doc/sphinx_source/tutorials/firststeps.rst b/doc/sphinx_source/tutorials/firststeps.rst index c3c1c9043..71330a631 100644 --- a/doc/sphinx_source/tutorials/firststeps.rst +++ b/doc/sphinx_source/tutorials/firststeps.rst @@ -80,15 +80,18 @@ which will enforce the s, n, and t flags on a channel. 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? To do that, we use the system's crontab daemon to run a script (called botchk) every ten minutes that checks 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. To make this process as simple as possible, we have included a script that can automatically configure your crontab and botchk scripts for you. To set up your crontab/botchk combo: +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) +^^^^^^^^^^^^^^^^^^^^ 1. Enter the directory you installed your Eggdrop to. Most commonly, this is ~/eggdrop (also known as /home//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! +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. If you don't want to customize anything via the options listed in #2, you can start the script simply by running:: +3. If you don't want to customize anything via the options listed in #2, you can install a crontab job to start Eggdrop simply by running:: - ./scripts/autobotchk yourEggdropConfigNameHere.conf + ./scripts/autobotchk yourEggdropConfigNameHere.conf 4. Review the output of the script, and verify your new crontab entry by typing:: @@ -100,6 +103,37 @@ By default, it should create an entry that looks similar to:: This will run the generated botchk script every ten minutes and restart your Eggdrop if it is not running during the check. Also note that if you run autobotchk from the scripts directory, you'll have to manually specify your config file location with the -dir option. To remove a crontab entry, use ``crontab -e`` to open the crontab file in your system's default editor and remove the crontab line. +Systemd Method (Newer Systems) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +1. Enter the directory you installed your Eggdrop to. Most commonly, this is ~/eggdrop (also known as /home//eggdrop). + +2. Install the systemd job for Eggdrop simply by running:: + + ./scripts/autobotchk yourEggdropConfigNameHere.conf -systemd + +3. Note the output at the end of the script informing you of the command you can use to start/stop the Eggdrop in thee future. For example, to manually start the Eggdrop, use:: + + systemctl --user start .service + +To stop Eggdrop, use:: + + systemctl --user stop .service + +To rehash (not reload) Eggdrop, use:: + + systemctl --user reload .service + +(Yes, we acknowledge the confusion that the systemd reload command will execute the Eggdrop '.rehash' command, not the '.reload' command. Unfortunately, systemd did not consult us when choosing its commands!) + +To prevent Eggdrop from automatically running after a system start, use:: + + systemctl --user disable .service + +To re-enable Eggdrop automatically starting after a system start, use:: + + systemctl --user enable .service + Authenticating with NickServ ---------------------------- diff --git a/scripts/autobotchk b/scripts/autobotchk index d517717f9..801b80dc5 100755 --- a/scripts/autobotchk +++ b/scripts/autobotchk @@ -3,6 +3,8 @@ # Copyright (C) 1999-2003 Jeff Fisher (guppy@eggheads.org) # Copyright (C) 2004-2022 Eggheads Development Team # +# systemd formating contributed by PeGaSuS +# # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 @@ -89,11 +91,16 @@ exec tclsh$lastver "$0" ${1+"$@"} # with len > handlen, for (botnet-)nicks with \[ \] and for # $(botnet-)nick used in pidfile, userfile or (botnet-)nick # 19Apr2017: Fix running this from a non-eggdrop dir. +# 28Nov2023: Added -systemd option, to (duh) create a systemd job if {$argc == 0} { puts "\nusage: $argv0 \[options\] \[additional configs\]" puts "Options:" puts "--------" + puts " systemd options:" + puts " -systemd (install systemd job instead of cron)" + puts "" + puts " crontab options:" puts " -dir (directory to run autobotchk in)" puts " -noemail (discard crontab e-mails)" puts " -5 (5 minute checks)" @@ -126,7 +133,7 @@ proc newsplit {text {split " "}} { } puts "\nautobotchk 1.11, (C) 1999-2003 Jeff Fisher (guppy@eggheads.org)" -puts "\n (C) 2004-2016 Eggheads Development Team" +puts " (C) 2004-2022 Eggheads Development Team" puts "------------------------------------------------------------\n" set mainconf [newsplit argv] @@ -134,12 +141,15 @@ set confs [list $mainconf] set dir [pwd] set delay 10 set email 1 +set systemd 0 +catch {exec which kill} kill # If you renamed your eggdrop binary, you should change this variable set binary "eggdrop" while {[set opt [newsplit argv]] != ""} { switch -- $opt { + "-systemd" { set systemd 1 } "-time" - "-1" { set delay 1 } "-5" { set delay 5 } @@ -257,17 +267,64 @@ foreach config $confs { } set nick [string range [subst -nocommands $nick] 0 $handlen] set botnet-nick [string range [subst -nocommands ${botnet-nick}] 0 $handlen] - if {![info exists pidfile]} { - puts " Defaulting \$pidfile to \"pid.${botnet-nick}\"" - set pidfile "pid.${botnet-nick}" + +### systemd stuff +if {$systemd} { + puts "Enabling user lingering..." + if {[catch {exec loginctl enable-linger} res]} { + puts "Oops, something went wrong. Is systemd running on this system?" + exit } - set pidfile [subst -nocommands $pidfile] - if {[catch {open $dir/${botnet-nick}.botchk w} fd]} { - puts " *** ERROR: unable to open '${botnet-nick}.botchk' for writing" + puts "Creating systemd directory..." + catch {file mkdir ~/.config/systemd/user } res + if {[catch {open ~/.config/systemd/user/${botnet-nick}.service w} fd]} { + puts " *** ERROR: unable to open '${botnet-nick}.service' for writing" puts "" exit } - puts $fd "#! /bin/sh + puts $fd "### Eggdrop systemd unit, generated by autosystemd" + puts $fd "" + puts $fd "\[Unit\]" + puts $fd "Description=${botnet-nick} (Eggdrop)" + puts $fd "After=default.target" + puts $fd "" + puts $fd "\[Service\]" + puts $fd "WorkingDirectory=${dir}" + puts $fd "ExecStart=${dir}/eggdrop ${config}" + puts $fd "ExecReload=${kill} -s HUP \$MAINPID" + puts $fd "Type=forking" + puts $fd "Restart=on-abnormal" + puts $fd "" + puts $fd "\[Install\]" + puts $fd "WantedBy=default.target" + close $fd + + catch {exec systemctl --user enable ${botnet-nick}.service} res + puts $res + puts "systemd job successfully installed as '${botnet-nick}.service'." + puts "* Use 'systemctl --user ${botnet-nick}.service' to control your Eggdrop" + puts "Starting Eggdrop..." + if {[catch {exec systemctl --user start ${botnet-nick}.service} res]} { + puts "ERROR: Eggdrop did not start." + puts $res + } else { + puts "Success." + } + exit +} + + +if {![info exists pidfile]} { + puts " Defaulting \$pidfile to \"pid.${botnet-nick}\"" + set pidfile "pid.${botnet-nick}" +} +set pidfile [subst -nocommands $pidfile] +if {[catch {open $dir/${botnet-nick}.botchk w} fd]} { + puts " *** ERROR: unable to open '${botnet-nick}.botchk' for writing" + puts "" + exit +} +puts $fd "#! /bin/sh # # ${botnet-nick}.botchk (generated on [clock format [clock seconds] -format "%B %d, %Y @ %I:%M%p"]) # @@ -360,14 +417,14 @@ fi exit 0 " - close $fd - puts "Wrote '${botnet-nick}.botchk' successfully ([file size $dir/${botnet-nick}.botchk] bytes)" - if {[catch {exec chmod u+x $dir/${botnet-nick}.botchk} 0]} { - puts " *** ERROR: unable to 'chmod u+x' the output file" - puts "" - exit - } - puts -nonewline "Scanning crontab entries ... " +close $fd +puts "Wrote '${botnet-nick}.botchk' successfully ([file size $dir/${botnet-nick}.botchk] bytes)" +if {[catch {exec chmod u+x $dir/${botnet-nick}.botchk} 0]} { + puts " *** ERROR: unable to 'chmod u+x' the output file" + puts "" + exit +} +puts -nonewline "Scanning crontab entries ... " set tmp ".autobotchk[clock clicks].[pid]" set cronbotchk [string map {\\ \\\\ \[ \\\[ \] \\\]} "${botnet-nick}.botchk"] From c76182c8687715d440b4e25385e171fe5175c67e Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 12 Dec 2022 17:32:00 -0500 Subject: [PATCH 136/320] Update NEWS for 1.9.4 --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index 44a6d3594..6dfe4de3d 100644 --- a/NEWS +++ b/NEWS @@ -20,6 +20,8 @@ Eggdrop v1.9.4: General changes: - Fixed a DNS bug causing Eggdrop to often hang on DCC or telnet connections + - BETA: Added -systemd option to autobotchk script to restart Eggdrop via + systemd instead of cron - Reverted matchattr match syntax to previous functionality. Matching against "-" as a flag will once again successfully match against "no" flags, instead of returning an error. @@ -36,6 +38,8 @@ Eggdrop v1.9.4: - Moved the 'gotmsg' function back as a raw bind. It was inadvertantly moved to a rawt bind in 1.9.3, causing issuse with scripts attempting to unbind this internal reference + Module changes: + - None Eggdrop config changes: - None From 15949fb0675bc6a17916022cd7b9f3b39c5b5e52 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 12 Dec 2022 17:43:41 -0500 Subject: [PATCH 137/320] update docs for 1.9.4 --- doc/html/about/about.html | 2 +- doc/html/about/legal.html | 2 +- doc/html/index.html | 4 ++-- doc/html/install/install.html | 12 +++++++++--- doc/html/install/readme.html | 20 +++++++++++-------- doc/html/install/upgrading.html | 2 +- doc/html/modules/included.html | 2 +- doc/html/modules/index.html | 2 +- doc/html/modules/mod/assoc.html | 2 +- doc/html/modules/mod/blowfish.html | 2 +- doc/html/modules/mod/channels.html | 2 +- doc/html/modules/mod/compress.html | 2 +- doc/html/modules/mod/console.html | 2 +- doc/html/modules/mod/ctcp.html | 2 +- doc/html/modules/mod/dns.html | 2 +- doc/html/modules/mod/filesys.html | 2 +- doc/html/modules/mod/ident.html | 2 +- doc/html/modules/mod/irc.html | 2 +- doc/html/modules/mod/notes.html | 2 +- doc/html/modules/mod/pbkdf2.html | 2 +- doc/html/modules/mod/seen.html | 2 +- doc/html/modules/mod/server.html | 2 +- doc/html/modules/mod/share.html | 2 +- doc/html/modules/mod/transfer.html | 2 +- doc/html/modules/mod/twitch.html | 2 +- doc/html/modules/mod/uptime.html | 2 +- doc/html/modules/mod/woobie.html | 2 +- doc/html/modules/writing.html | 2 +- doc/html/objects.inv | Bin 1279 -> 1319 bytes doc/html/search.html | 2 +- doc/html/searchindex.js | 2 +- doc/html/tutorials/firstscript.html | 2 +- doc/html/tutorials/firststeps.html | 24 +++++++++++++++++++++-- doc/html/tutorials/setup.html | 2 +- doc/html/tutorials/tlssetup.html | 4 ++-- doc/html/using/accounts.html | 2 +- doc/html/using/bans.html | 2 +- doc/html/using/botnet.html | 2 +- doc/html/using/core.html | 2 +- doc/html/using/features.html | 2 +- doc/html/using/ipv6.html | 2 +- doc/html/using/ircv3.html | 2 +- doc/html/using/partyline.html | 2 +- doc/html/using/patch.html | 2 +- doc/html/using/pbkdf2info.html | 2 +- doc/html/using/tcl-commands.html | 8 ++++---- doc/html/using/text-sub.html | 2 +- doc/html/using/tls.html | 2 +- doc/html/using/tricks.html | 2 +- doc/html/using/twitch-tcl-commands.html | 2 +- doc/html/using/twitchinfo.html | 2 +- doc/html/using/users.html | 2 +- doc/sphinx_source/using/tcl-commands.rst | 6 ++++-- doc/tcl-commands.doc | 13 ++++++------ 54 files changed, 107 insertions(+), 74 deletions(-) diff --git a/doc/html/about/about.html b/doc/html/about/about.html index aaa966ae2..1da39cdbe 100644 --- a/doc/html/about/about.html +++ b/doc/html/about/about.html @@ -177,7 +177,7 @@

        About Eggdrop © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/about/legal.html b/doc/html/about/legal.html index 29a4e2838..1b1690f18 100644 --- a/doc/html/about/legal.html +++ b/doc/html/about/legal.html @@ -128,7 +128,7 @@

        Boring legal stuff © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/index.html b/doc/html/index.html index c0d84e9bc..412af9939 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -142,7 +142,7 @@

        Where to find more helpQuick Startup
      3. Upgrading
      4. Command Line
      5. -
      6. Setting up a Crontab
      7. +
      8. Auto-starting Eggdrop
      9. Documentation
      10. Obtaining Help
      11. @@ -375,7 +375,7 @@

        Where to find more help © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/install/install.html b/doc/html/install/install.html index d6ce5d245..a3a2ba473 100644 --- a/doc/html/install/install.html +++ b/doc/html/install/install.html @@ -212,8 +212,14 @@

        Quick Startup
        It’s advisable to run your bot via crontab, so that it will
        -

        automatically restart if the machine goes down or (heaven forbid) -the bot should crash. Eggdrop includes a helper script to generate a proper crontab script and entry. You can run this script by typing:

        +
        +

        automatically restart if the machine goes down or (heaven forbid) +the bot should crash. Eggdrop includes a helper script to auto-generate either a systemd or crontab entry. To add a systemd job, run:

        +
        ./scripts/autobotchk [yourconfig.conf] -systemd
        +
        +
        +
        +

        or to add a crontab job, run:

        ./scripts/autobotchk [yourconfig.conf]
         
        @@ -284,7 +290,7 @@

        Modules © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/install/readme.html b/doc/html/install/readme.html index 24d2c1630..4b774c066 100644 --- a/doc/html/install/readme.html +++ b/doc/html/install/readme.html @@ -49,7 +49,7 @@

        Table of Contents

      12. Quick Startup
      13. Upgrading
      14. Command Line
      15. -
      16. Setting up a Crontab
      17. +
      18. Auto-starting Eggdrop
      19. Documentation
      20. Obtaining Help
      21. @@ -247,19 +247,23 @@

        Command Line -

        Setting up a Crontab

        -

        Systems go down from time to time, taking your Eggdrop along with it. You may not be not around to restart it manually, so you can instead use your host’s crontab system to automatically restart Eggdrop should it quit for any reason. Eggdrop comes with an autobotchk shell script creates that both checks if your Eggdrop is still running, and a crontab entry to run the botchk script every 10 minutes.

        +
        +

        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.

        -

        Using autobotchk is probably the fastest way of creating your botchk and adding a crontab entry. From the install directory, simply run:

        +

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

        +
        ./scripts/autobotchk <Eggdrop config file> -systemd
        +
        +
        +

        To auto-geneerate a script to check Eggdrop’s status and run it via a crontab entry, simply run:

        ./scripts/autobotchk <Eggdrop config file>
         
        -

        This will crontab your bot using the default setup. If you want a list of autobotchk options, type ‘./autobotchk’. An example with options would be:

        +

        This will crontab your bot using the default setup. If you want a list of autobotchk options, type ‘./autobotchk’. A crontab example with options would be:

        ./scripts/autobotchk <Eggdrop config file> -noemail -5
         
        -

        This would setup crontab to run the botchk every 5 minutes and also to not send you email saying that it restarted your bot.

        +

        This would setup crontab to run the botchk every 5 minutes and not send you an email saying that it restarted your bot.

        diff --git a/doc/html/install/upgrading.html b/doc/html/install/upgrading.html index 7a2842f4b..f66935b1e 100644 --- a/doc/html/install/upgrading.html +++ b/doc/html/install/upgrading.html @@ -191,7 +191,7 @@

        Documentation © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/modules/included.html b/doc/html/modules/included.html index edffbdbbc..0ea348b20 100644 --- a/doc/html/modules/included.html +++ b/doc/html/modules/included.html @@ -277,7 +277,7 @@

        Modules included with Eggdrop © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/modules/index.html b/doc/html/modules/index.html index f17d8d8bf..a0b377a35 100644 --- a/doc/html/modules/index.html +++ b/doc/html/modules/index.html @@ -169,7 +169,7 @@

        Do I still need to ‘loadmodule’ modules? © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index 473290a3f..546553921 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -159,7 +159,7 @@

        Search

        diff --git a/doc/html/modules/mod/blowfish.html b/doc/html/modules/mod/blowfish.html index bd82779ea..c07a42010 100644 --- a/doc/html/modules/mod/blowfish.html +++ b/doc/html/modules/mod/blowfish.html @@ -164,7 +164,7 @@

        Search

        diff --git a/doc/html/modules/mod/channels.html b/doc/html/modules/mod/channels.html index 5b8fb089b..80a886f81 100644 --- a/doc/html/modules/mod/channels.html +++ b/doc/html/modules/mod/channels.html @@ -540,7 +540,7 @@

        Search

        diff --git a/doc/html/modules/mod/compress.html b/doc/html/modules/mod/compress.html index bde3bc8ae..55b0f5e18 100644 --- a/doc/html/modules/mod/compress.html +++ b/doc/html/modules/mod/compress.html @@ -172,7 +172,7 @@

        Search

        diff --git a/doc/html/modules/mod/console.html b/doc/html/modules/mod/console.html index bdd760ceb..3550c0a6b 100644 --- a/doc/html/modules/mod/console.html +++ b/doc/html/modules/mod/console.html @@ -174,7 +174,7 @@

        Search

        diff --git a/doc/html/modules/mod/ctcp.html b/doc/html/modules/mod/ctcp.html index 70f7884ff..b56e3d14c 100644 --- a/doc/html/modules/mod/ctcp.html +++ b/doc/html/modules/mod/ctcp.html @@ -191,7 +191,7 @@

        Search

        diff --git a/doc/html/modules/mod/dns.html b/doc/html/modules/mod/dns.html index dbdd9a95d..083d15fd6 100644 --- a/doc/html/modules/mod/dns.html +++ b/doc/html/modules/mod/dns.html @@ -187,7 +187,7 @@

        Search

        diff --git a/doc/html/modules/mod/filesys.html b/doc/html/modules/mod/filesys.html index 2ce90adf9..6aa7b62e9 100644 --- a/doc/html/modules/mod/filesys.html +++ b/doc/html/modules/mod/filesys.html @@ -365,7 +365,7 @@

        .filesys module © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 5cfcd7cad..0fb9cf6a6 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -228,7 +228,7 @@

        Search

        diff --git a/doc/html/modules/mod/irc.html b/doc/html/modules/mod/irc.html index cd7d05f14..8e5e5f7ba 100644 --- a/doc/html/modules/mod/irc.html +++ b/doc/html/modules/mod/irc.html @@ -290,7 +290,7 @@

        Search

        diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index f27bedad9..f96790008 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -182,7 +182,7 @@

        Search

        diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index b02d7e06e..ce866e4b4 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -181,7 +181,7 @@

        Search

        diff --git a/doc/html/modules/mod/seen.html b/doc/html/modules/mod/seen.html index 23b657e19..94b1fad01 100644 --- a/doc/html/modules/mod/seen.html +++ b/doc/html/modules/mod/seen.html @@ -161,7 +161,7 @@

        Search

        diff --git a/doc/html/modules/mod/server.html b/doc/html/modules/mod/server.html index e83a3db20..ca54d385f 100644 --- a/doc/html/modules/mod/server.html +++ b/doc/html/modules/mod/server.html @@ -380,7 +380,7 @@

        Search

        diff --git a/doc/html/modules/mod/share.html b/doc/html/modules/mod/share.html index 2ffb85ec0..39b06314c 100644 --- a/doc/html/modules/mod/share.html +++ b/doc/html/modules/mod/share.html @@ -191,7 +191,7 @@

        Search

        diff --git a/doc/html/modules/mod/transfer.html b/doc/html/modules/mod/transfer.html index 9e2451cf1..6af988989 100644 --- a/doc/html/modules/mod/transfer.html +++ b/doc/html/modules/mod/transfer.html @@ -186,7 +186,7 @@

        Search

        diff --git a/doc/html/modules/mod/twitch.html b/doc/html/modules/mod/twitch.html index c7ad96918..94b38e74c 100644 --- a/doc/html/modules/mod/twitch.html +++ b/doc/html/modules/mod/twitch.html @@ -194,7 +194,7 @@

        Partyline commands © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index 45993ea2a..cc5e5f575 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -167,7 +167,7 @@

        Search

        diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index b9b05d0a4..aad24ae95 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -160,7 +160,7 @@

        Search

        diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index db0584e67..4cd607b43 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -428,7 +428,7 @@

        What to do with a module? © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/objects.inv b/doc/html/objects.inv index 769b0721ecbe8dca1923d114d1645a7c5de1f80d..3eeec3c4f2f64ba7cdec65c523bdfc5395e4a612 100644 GIT binary patch delta 1213 zcmV;u1Va1&38xB>dVh^q+m72d5PkPo2uL5}8cl&d6hVN!qKjsOMeHCCMG?>xZ4)b# z0!i8HzwhuWQW`pa*~^?cMhT4zx$=RakvUZqW<-U%$cPH^*ej;5DTIuq5E)59XxXuA0xn_X z`}{~Zw7#qnhS zT=13&Q-6$u<9|b*TyA*8s2{2?lMZ$Iz9FKKJrj+VgQBc?`g+%Fr2(!sr0Z7Ucd1f9 zajEVfTg$NpVxD58Ju*zeBVOR^!_EEkLn00RUXj+yA-n{7>bI0Tc{GH6Fdr(<58J}K zk+h5?Y**?^ZvvR!1RP{|4@Y94ZH!SRanPWrc%;p#lG0!1Is->MzR(_`~sQ2&EL)$_4F)mbLlePO+S>o5VPCb4Z6Vawe5l07b=( z3))Eq8|6|gX7+|jmEKo6ALem2jlu(G4v2YOO{wt0nG<53S5?YAaps7K`PGF+Z=5>g z)Ca2?(SIWghnyHX4bQD1&ew9+Ge3_bz-W{w`f#wnV80bsA?TL zFetb@M8GH_^sc^)hqK@29ak;g%`tGpk9InN=lF%evHzC_0%seJs|H z!(YhW=7zdOpOPvUo{`sXR<9Las#wR&Yj&(toSG`tGV@w3>J#M_6$uaJGPZ!Hk3h-43H)|Wu#56NQkLx%nzDwhl^{r1s zz?f$`eMKdrVH^-->jtaM=QXI(0rq=oq!?w#rp6C{Y-@Y;MPp~pjB>Mf25#BVek>!D z%0ZaoU`r&7A^yJxN`b!G?eK92K7UIDqJLteVFH1_-orR_;?RzE9&ek6H+JlejsnsM zW)KM%kDrk)$JVbenzs4Og{HM-Z~7#1egSiGO6_ za2?w}^N)d$;k=Qe z5t)F5Q-J^Mz}2jWtu`Dw6_%AmI&2wn*tJbt9==hWzG4&?56#k^h@kKhvEhAsj%(cI zPqsf#nw)}ff9xi_$l_v|VT bJ{-V23}`K~0Rr`{Y=i)MIYj&i88NeH3Jp#f delta 1173 zcmV;G1Zw-I3jYa^dVhsi%Z?j25WMRv25^p6gg8JBx$P5P*lR2-894?V4kZygA_pW# zTK#>R&mm`;%4Jt#broOT#TIGhXg0+DZM5nB?j&v2e>7wo{{3i9eRJm`o(_jj$zkQ; zo*hWPWVvC_x|fQJLlXnX{eDHXhG0wTNy~amJIQYBncl$vjemn3`O|OBor`^S@T%?Q zWzY4o&W#a~ejgb@fgXtvtk-pg7!eg7A|oou)1a8Xr4S;LLS!Tbp=Hl*3AliX@8cug z(BTFb&_vulyhTofr&=TQBl^s{CsFyX@IK@>HAIiU#b*PT&nwG zb2*kkj8lwsCx$6_#0&ghwC~5ej7eITzXXHg7#y_x_|r_=2%YGO=4WQIi_V#oLNp3 zK#?2Mg7#9Kh~ZMK7Dj|gl`d6!6y`=Xjl!)KUWK_*O{s9Lg=b;zR8`8|YvEmpP1S`a z7n^(7+_9<}(aj1kn^{+l99=EJ-3u#z& z0}k}`AAc?m5g6L{ZvUmG;88E}cK_}1`3t6@nRQoO!D61jwNWTrotdihEgBVEB&KmB zs+xxm3<@p|5ip7fy{|7L;$CJKqcJ5gC0Z?bj|LSViD-<2;iu|;JQ^Pc7l~+Gq-=Rr z!=ql~A0Ii>xF~LBkJAha><|a9Z0V}2DL2uVWPi#|cuR`>%yJTCW?2c;GA}hFiq85& zKNfSy;cw(%V?*Aev!u+0Ir7}i^0mTC8S9vN&Q5uXQ&Xl|W}d4>exlqWLxDceQ8OB7 z#7VEg*OWGzDn1mhg$7jbcU5xv;%^)t_9kC--0R~VZYZ#ib-}VYW(o0vbING6n0k3C^su-;FbkF zYFO2VP%1}Zii0hY(1!SL4Wt5nx7*><4t#t|1fpU`Lk9w%K0`Zn=1`8dbMBg_4|W=i zjsnsMW)KNC9)Iw;7@NO7X}ab+7j{8Ggn!D?tf$ekJA1Hk;gaJ5_KcWOF=Q7JDK(zM zXrS}q{MV9dN5eDwX7O?yHC zpFJYkaCnaG$GmM15zZSqG_(jiVKMEgx(>GM-FzkbI9-sT{TkZ96I>l~&^cNj_J5B0 zy0%D^VjpI$#}<(ZNH_)fW*e?%JGR166vvJ#AeqPZF%@car%x?+;}LK?o0%Q z9}zn~q1mXyf3bGV892x-^VQcNVCr~XH-glI! nZuS6IZV-&;)ny#~Z~*f#ptZ^x2oBV@vK9j9WfSoqL41_VbRaMs diff --git a/doc/html/search.html b/doc/html/search.html index abcccf546..bab736ece 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -147,7 +147,7 @@

        Search

        diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 4857dc0ce..8beae41b2 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["about/about","about/legal","index","install/install","install/readme","install/upgrading","modules/included","modules/index","modules/mod/assoc","modules/mod/blowfish","modules/mod/channels","modules/mod/compress","modules/mod/console","modules/mod/ctcp","modules/mod/dns","modules/mod/filesys","modules/mod/ident","modules/mod/irc","modules/mod/notes","modules/mod/pbkdf2","modules/mod/seen","modules/mod/server","modules/mod/share","modules/mod/transfer","modules/mod/twitch","modules/mod/uptime","modules/mod/woobie","modules/writing","tutorials/firstscript","tutorials/firststeps","tutorials/setup","tutorials/tlssetup","using/accounts","using/bans","using/botnet","using/core","using/features","using/ipv6","using/ircv3","using/partyline","using/patch","using/pbkdf2info","using/tcl-commands","using/text-sub","using/tls","using/tricks","using/twitch-tcl-commands","using/twitchinfo","using/users"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["about/about.rst","about/legal.rst","index.rst","install/install.rst","install/readme.rst","install/upgrading.rst","modules/included.rst","modules/index.rst","modules/mod/assoc.rst","modules/mod/blowfish.rst","modules/mod/channels.rst","modules/mod/compress.rst","modules/mod/console.rst","modules/mod/ctcp.rst","modules/mod/dns.rst","modules/mod/filesys.rst","modules/mod/ident.rst","modules/mod/irc.rst","modules/mod/notes.rst","modules/mod/pbkdf2.rst","modules/mod/seen.rst","modules/mod/server.rst","modules/mod/share.rst","modules/mod/transfer.rst","modules/mod/twitch.rst","modules/mod/uptime.rst","modules/mod/woobie.rst","modules/writing.rst","tutorials/firstscript.rst","tutorials/firststeps.rst","tutorials/setup.rst","tutorials/tlssetup.rst","using/accounts.rst","using/bans.rst","using/botnet.rst","using/core.rst","using/features.rst","using/ipv6.rst","using/ircv3.rst","using/partyline.rst","using/patch.rst","using/pbkdf2info.rst","using/tcl-commands.rst","using/text-sub.rst","using/tls.rst","using/tricks.rst","using/twitch-tcl-commands.rst","using/twitchinfo.rst","using/users.rst"],objects:{},objnames:{},objtypes:{},terms:{"04may2000":35,"3rd":5,"5c0":[21,30,35],"break":[15,42],"byte":[17,21,23,27,42],"case":[14,19,21,28,30,32,35,42],"catch":42,"char":[27,35,42],"const":27,"default":[2,3,4,10,11,14,15,17,21,23,29,30,31,32,33,35,41,42,44],"export":45,"final":[0,4,28,29,30,35,41],"function":[0,1,2,4,6,7,19,24,30,34,35,37,41,42,45,46],"import":[27,28,29,30,32,35,39,42],"int":27,"long":[6,10,14,18,21,22,33,35,42,43,46],"new":[4,5,7,19,24,28,29,30,32,35,36,37,38,39,40,41,44,45,47],"null":27,"public":[0,1,4,28,29,31,35,42,44,45,48],"return":[17,27,32,41,46],"short":[2,27,29,37,44],"static":[2,3,10,27,29,42],"super":2,"switch":[5,27,30,32,35,42,44,45],"throw":42,"true":28,"try":[3,4,6,7,20,21,25,27,28,29,30,32,35,46],"var":42,"void":27,"while":[0,4,5,10,16,24,30,32,33,35,39,41,42,47],AND:[19,30,42],ARE:28,Adding:[2,24,47],And:28,CVS:4,DNS:[2,6,42],DOING:28,For:[1,2,3,5,7,15,21,30,31,34,35,37,38,39,41,42,44,45,46,47],IPs:[29,31,37],NFS:23,NOT:[5,28,30,32,34,35,42,46],Not:[6,21,29,38],One:[0,4,28,32,42],THE:3,TLS:[2,3,4,5,29,30,35,42],That:[24,28,30,34,42,48],The:[0,1,2,3,4,5,6,10,11,13,14,15,16,19,21,22,23,24,25,27,28,29,31,32,33,34,35,36,38,41,42,44,45,46,47,48],Their:37,Then:[5,29,30,44],There:[1,3,4,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,29,31,32,33,35,37,41,43,44,47,48],These:[5,11,17,27,30,32,33,34,35,37,43,44,46,48],Use:[16,17,19,21,27,30,35,42],Used:42,Useful:42,Using:[2,4,27,42],WILL:46,With:[0,4,6,15,34,35,41,42,44],YES:7,Yes:7,aaa:[],abcdechannel:42,abil:[2,7,16,31,32,36,42],abl:[3,6,10,15,17,21,30,32,35,39,41,42],abort:[23,30,42,44],about:[2,4,6,24,25,27,28,29,35,42,45,47],abov:[1,4,10,17,19,27,28,29,36,42,43],absolut:[0,31,42,48],abus:[0,2,4],accept:[15,22,24,31,34,35,42,44,47],access:[0,4,16,21,27,28,29,30,36,39,41,42,44,46,47,48],accomplish:3,accord:[1,42,48],accordingli:21,account:[0,2,4,16,18,27,29,30,36,38,40,41,47],accur:[32,42,46],accuraci:32,across:[0,4,34,38,40,42,45],act:[16,27,35,36,42,44],action:[28,29,31,35,42],activ:[2,10,16,30,32,33,39,42,44],actual:[0,4,15,27,28,31,35,39,42],acut:[],add:[3,4,5,7,10,16,17,24,27,28,30,31,32,34,35,36,41,47],add_builtin:27,add_hook:27,add_tcl_command:27,add_tcl_int:27,add_tcl_str:27,added:[0,3,4,5,19,22,24,28,30,32,34,35,36,37,38,41,42,44,46],addhost:17,adding:[4,7,21,27,35,36,38,42],addit:[2,4,5,16,21,30,35,42,44,46],addition:[16,30,32,42],addlang:[35,42],address:[18,22,25,30,34,35,37,44],addus:30,adh:35,adjust:[0,4,17],admin:[35,43],admit:23,advanc:[0,2,4,6,20,28,36],advantag:[5,30,45],advertis:[0,4,42],advis:[3,21,23],affect:[5,10,24,35,36,37,42,47],affet:42,affili:[1,47],after:[3,4,10,16,17,21,27,28,29,32,33,35,42,44,45,47],afterward:[17,35],again:[6,15,25,27,33,34,35,41,42,46],against:[10,15,19,21,28,30,41,42,46],age:42,aggress:34,aka:35,alarm:42,alert:[32,47],algorithm:[19,41],all:[1,5,6,7,10,13,14,15,17,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,44,45,46,47,48],alloc:[27,42],allow:[0,3,4,5,6,7,10,11,15,16,17,18,19,21,22,23,24,27,28,29,30,32,34,35,36,41,42,44,45,47],alltool:35,almost:[0,4,30,33,48],along:[4,15],alphabet:35,alphanumer:47,alreadi:[10,21,27,28,30,31,32,34,35,41,42,47],also:[0,2,3,4,7,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,29,30,33,34,35,36,39,41,42,43,44,45,46,47,48],alt:[21,35],alter:[15,36,42,47],altern:[2,4,16,21,30,31,34,35,42,44],although:[17,30,35,42],altnick:[21,30],altogeth:19,alwai:[0,3,4,10,30,32,33,35,42],amount:[6,35],anachron:31,ani:[0,1,3,4,5,7,12,15,16,17,18,21,22,24,27,28,29,30,33,35,36,39,41,42,44,46,47,48],annoi:28,announc:32,anonym:35,anoth:[0,10,15,17,18,21,22,27,30,34,35,42,43,46],another:5,ansi:42,answer:[0,7,13,16,21,28],any_other_funct:27,anymor:[6,9,19,35],anyon:[10,33,42],anyth:[0,4,15,28,29,30,34,35,39,42,46],anywai:35,anywher:[39,42],aol:[28,41],aop:10,apart:[27,35],api:6,apostroph:39,appear:[29,30,34,35,42,46],append:[27,42],appli:[30,33,35,41,48],applic:[1,35,42],appreci:31,appropri:[3,5,30,35,38,40,41],april:[24,46],apt:[30,31],arbitrari:42,arbitrarili:46,archiv:4,area:[6,15,35,42,45,48],aren:[30,35,42,45,46],arg:27,argument:[15,17,28,29,37,42,46],around:[0,4,24,31,37,42,47],arriv:42,ascii:42,ask:[4,17,29,30,39,42,44],assign:[34,35,42],assist:[2,30,32,44],assoc:[2,6],associ:[24,32,42,47],assum:[21,28,30,31,32,33,35,42],assumpt:38,assur:46,asynchron:[6,14,42],attach:[32,42,46],attack:[10,19,41],attempt:[5,10,16,17,21,24,31,32,33,34,35,42,44,47],attent:[5,21,32,42],attribut:[33,34,42,48],auch:27,aug:42,august:17,auth:[35,44],authent:[2,32,41,42,47],author:[28,31,35,44],auto:[34,48],autobotchk:[3,4,29],autoconf:3,autoconfigur:3,autodetect:44,autohalfop:10,autom:[0,2,4],automat:[2,3,4,5,12,16,21,30,32,33,34,35,36,37,41,42,44,47,48],autoop:10,autosav:12,autovoic:[10,48],avail:[4,10,15,19,25,27,29,30,31,35,36,37,39,42,47],avoid:[6,14,29],awai:[36,38,42],awar:42,awesom:28,b33f:30,baa:42,back:[21,28,30,35,37,40,41,42,45],background:[2,4,28],backslash:30,backup:[5,27],backward:[5,38],bad:[10,42,48],badg:48,badgui:46,ban:[0,2,4,10,17,24,34,35,36,47,48],bandwidth:[6,11],banner:[35,43],bar:42,barr:35,base64:29,base:[4,30,32,35,41,42],basi:30,basic:[2,4,6,7,20,28,30],bask:40,bbb:[],bcst:42,bear:1,becaus:[0,4,16,21,27,28,35,42,45,46,47],becom:[29,30,35,42],been:[0,1,4,5,15,17,21,27,33,35,36,42,46],beerbot:32,befor:[0,4,10,14,16,17,18,21,22,23,27,29,30,32,34,35,42,47],began:38,begin:[16,28,37,42],behalf:42,behav:42,behavior:[13,17,33,35,37,42],behind:35,being:[0,4,10,15,17,21,31,32,36,37,42,46],beldin:34,bell:42,belong:35,below:[10,15,16,22,24,27,28,30,35,41,42,46],best:[2,3,6,16,30,34,42,46],better:[3,4,6,20,30,35],between:[3,6,10,15,18,21,22,31,32,34,35,37,42],beverag:41,big:[5,23,42,45],binari:[3,31],bind:[2,16,17,21,24,27,28,32,35,45,47],birthdai:35,bit:[3,15,24,28,30,31,35,42,44,47],bitch:10,bitchx:42,blank:42,bless:1,blindli:17,bloat:7,block:[23,24,27,30,43,47],blowfish:[1,2,5,6,19,27,35,41,42],bodi:28,bogu:35,bold:[4,42,43,48],boldfac:42,boot:35,bore:[2,4],boston:1,bot:[0,1,3,4,5,6,7,10,12,13,14,16,17,18,19,20,21,22,23,25,27,28,29,30,31,33,35,36,37,38,39,41,43,44,45,46,47,48],bota:34,botaddr:42,botaddress:42,botattr:34,botb:34,botc:34,botchk:[4,29,30],botdir:30,botfl:42,botflag:[2,22],both:[0,4,10,21,23,31,32,34,37,41,42,44],botnam:34,botnet:[0,2,3,4,6,8,10,12,15,21,25,30,36,37,39,41,42,45,48],botnetcentr:43,botnetnick:42,botnetop:10,botnick:[21,28,29,30,35],bottom:28,bottre:2,bounc:17,bound:[16,35,42],boundari:14,box:[30,35],brace:10,bracket:37,branch:[4,40],breach:42,brief:30,broadcast:[24,39,42,46,47],broken:[15,28,35,42],brows:15,brute:19,buf:17,buffer:22,bug:[0,3,4,28,30,40],build:42,built:[2,16,42,45],builtin:[16,42],busi:28,button:[40,47],bypass:42,bywho:42,cach:[14,42],cafil:[35,44],calcul:21,call:[0,3,4,27,28,29,34,35,42,46],callback:32,can:[0,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],cancel:[6,42],cannot:[0,27,30,32,41,42,48],cap:[2,27,32,36,47],cap_net_bind_servic:16,capabl:[2,35,36,42,45,47],capac:47,capath:[35,44],capit:[4,48],caption:[],captur:[30,42,45],care:[35,42,47],carefulli:[30,42],carelessli:5,categori:42,caught:42,caus:[16,30,34,42,45],caution:42,cbc:42,ccht:46,center:43,central:[15,35],cerfif:[],cert:[29,35,44],certain:[33,35,36,37,42,43,46,48],certainli:[24,30,47],certif:[2,3,21,29,31,35,42],certifict:44,cet:35,chaddr:[5,34],chain:[35,44],challeng:[28,29],chan:[5,10,17,28,29,30,45],chanc:30,chanfil:[10,30,45],chang:[1,2,6,9,10,15,17,19,21,22,24,28,30,31,34,35,36,38,39,40,44,46,47],chaninfo:[29,34],chanmod:[10,29],channel:[0,2,4,5,6,8,12,17,20,21,22,24,27,28,30,32,33,34,35,36,39,43,45,47,48],channelflag:42,chanrec:[17,42],chanserv:10,chanset:[10,29,34],charact:[2,10,15,21,30,34,35,37,41],chase:[0,4],chat4:2,chat6:2,chat:[0,2,4,6,13,21,29,30,34,35,36,39,42,44,46,47],chatter:35,chattr:[29,48],check:[2,4,5,10,21,27,28,29,31,35,41,42,44,46],checkout:[30,40],chfinger:35,chghost:[36,38],chjn:42,chmod:[3,35],chof:42,choic:[1,21,28],chon:42,choos:[3,7,29,30,35,36,47],chpass:41,chpt:42,chri:1,chunk:21,cidr:[35,42],cipher:[35,42,44],claim:[24,47],clarifi:33,clean:15,clear:[4,6,40,42,44,46,47],clearchat:[24,46],clearmsg:[24,46],cleartext:42,clemson:48,click:[40,47],client:[15,16,21,24,29,30,32,35,38,42,44,47],cloak:29,clone:[2,4,10,30],close:[27,42],cmd:[35,42],cmd_t:27,cmsg:46,code:[1,2,3,4,7,27,28,42],coder:[],col:43,cold:[40,41],colon:[35,37],color:[4,42],column:43,com:[2,4,5,6,20,21,28,29,30,34,35,41,42,44],combin:[36,42],combo:29,come:[4,6,17,21,30,40,42],comfort:30,comma:[35,39,42],commadlin:30,command:[2,3,6,10,12,15,16,17,20,21,27,28,29,30,31,32,33,34,35,36,37,39,41,44,47,48],commandlin:30,comment:[15,17,25,28,30,35,41],commerci:30,common:[2,21,30,31,34,35,38,44,48],commonli:[29,31,35,42],commun:[2,27,34,39,40,42],compat:[3,5,38,42,46,47],compil:[0,2,3,4,27,30,31,35,37,42,44],complet:[3,4,10,15,22,30,36,42,44,48],compliant:[17,21,42],compon:42,comprehens:46,compress:[2,6,29],compris:38,concurr:[35,41],conf:[3,7,16,29,30,38,42,44],config:[2,3,4,6,7,10,11,12,13,14,16,17,18,19,21,22,23,24,25,27,28,29,31,32,33,34,35,37,41,43,44],configfil:42,configur:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,35,37,40,42,44],confirm:[40,42],conflict:16,confus:42,connect:[2,4,5,6,14,15,16,21,24,27,29,30,34,35,37,39,44,47,48],connet:[],consequ:46,consid:[4,30,32,33,35,39,42],consider:41,consist:[34,36,39,42],consol:[2,4,6,10,27,36,39],constantli:27,constitut:[10,21,35],consult:[37,38,44],contact:[28,35],contain:[1,3,4,5,28,30,32,34,35,37,42,44,46],content:[41,42,46],contest:6,context:27,continu:[30,42],contribut:40,control:[0,2,4,17,21,28,29,34,35,36,44,47,48],conv_form:29,conveni:35,convers:[27,39,44],convert:42,cooldud:30,coordin:35,copi:[1,2,5,7,15,23,27,30,42],copyright:[0,1,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],core:[2,3,6,7,17,18,21,27,28,42,45],correct:[3,31,35,41],correctli:[3,42],correspond:[10,29,33,42],cos:10,could:[1,21,28,34,35,37,40,41,42,44,47],couldn:42,count:21,counterpart:42,coupl:42,cours:[3,28,34,35,42],cover:[32,33,34],cpu:[21,35,42],crappi:42,crash:[3,42],creat:[0,3,4,15,16,22,27,28,29,30,33,35,40,41,42,44,45,47],creation:[29,32],credit:[28,42],cron:42,crontab:[2,3,29,42],cross:30,crotab:[],crt:[29,35,44],crypto:41,cryptograph:[19,41,42],crytopgraphi:41,ctcp:[2,6,10,21,29,30,35,42,44],ctcr:42,ctrl:42,curl:30,current:[2,4,6,7,9,15,17,18,19,24,27,29,30,32,35,36,39,42,43,44,46],custom:[16,21,28,29,32,36,42,44],cut:29,cycl:[10,21,35],cygwin:[2,37],daemon:[16,29,35],dai:[18,23,35,42,45],daili:[30,42],dalnet:[4,17,21],danc:42,danger:42,danish:35,data:[4,10,22,27,31,41,42],databas:[15,42],date:[1,4,30,32,35,42],db8:[21,30,35],dcc:[0,2,4,6,15,20,21,23,27,29,30,34,36,37,39,41,45],dead:30,deal:[35,42,48],dealloc:27,deauthent:32,debian:[30,31],debug:[3,25,27,28,35,42,44,46],dec:[15,42],decemb:[0,26,36,39],decent:27,decid:[38,41],decis:47,declar:[28,42],decreas:35,defens:28,defin:[4,6,10,11,13,17,21,27,28,30,32,33,34,35,38,42,48],definit:[28,30,31,41],degrad:47,dehalfop:[10,42,48],del_hook:27,delai:[10,15,17,28],delet:[30,42,45],deliber:44,delimit:42,deliv:42,demand:[0,4],demonstr:[6,26,42],denot:[31,42],deop:[10,42,48],depend:[27,32,33,40,42,44,48],deprec:[5,31,42],deprici:21,depth:[35,44],der:29,deriv:41,desc:[6,27],describ:[27,28,30,31,34,35],descript:[6,27,28,29,35,42,46,48],descriptivebranchnam:40,deserv:28,design:[0,2,4,19,38,46],desir:[7,27,29,30,41],despit:31,dest:[3,6,30,31,35,42,44],destin:[16,27],destroi:[0,4],detail:[3,4,6,27,30,32,42,44,46],detect:[7,21,31,37,42,44],determin:[2,3,16,27,29,30,34,37,42,44],dev:[4,30,31],devel:3,develop:[0,1,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],devleop:[],dict:[42,46],dictionari:42,did:[1,41],didn:[28,30,42],die:[27,29,30],died:21,differ:[1,3,4,5,10,15,21,28,31,32,35,41,42,45,46],differenti:42,diffutil:3,digest:[19,42],digit:[35,44],dinner:41,dir:[6,29],direct:[7,31,34,40,42],directli:[5,6,10,16,22,30,42],directori:[2,3,4,6,7,23,27,29,30,31,36,40,44,45],disabl:[10,17,21,35,37,42,44],disc:42,discard:[22,42],disclaim:[2,42],disconnect:[21,22,35,42],discontinu:47,discourag:17,discuss:[4,40],disk:[0,23,30,35,36,42],displai:[12,15,17,21,29,30,35,42,43,46],displaynam:27,dispos:42,dissect:28,distinguish:42,distribut:[0,1,4,30],distro:31,dload:23,dns:[6,14,35,42],doc:[0,3,4,5,6,21,28,31,35,39,42,46,47],document:[2,16,28,30,31,34,37,38,40,44,45],doe:[10,24,28,29,32,33,35,38,39,42,46,47,48],doesn:[12,14,17,30,39,42,45,46],doing:[19,21,28,35,42,43],domain:[1,14,34],don:[4,7,10,14,15,17,21,22,24,27,28,29,30,34,35,39,42,44,45],donat:[24,47],done:[5,22,27,29,30,31,34,40,41,42,47],donkei:30,dontkickop:10,dot:39,doubl:21,doubt:37,down:[0,3,4,15,34,42],downer:24,download:[3,4,5,7,15,23,35,36,42],dozen:28,dp_help:27,dp_log:27,dp_mode:27,dp_server:27,dp_stdout:27,dport:16,dprintf:27,drastic:[27,42],driven:42,dronepup:42,drop:[3,4,35,42],dropp:[],dst:6,due:[17,21,28,35,42,46],dump:[21,35,42],duplic:42,dupwait:35,dure:[3,11,22,27,29,30],dynam:[2,3,10,29,30,33,42],dynamicban:[10,42],dynamicexempt:[10,42],dynamicinvit:[10,42],each:[0,4,6,10,15,18,23,28,29,30,32,34,35,36,39,42,45,46,48],earlier:19,easi:[5,28,30,42,44],easier:[3,19],easiest:42,easili:[0,1,2,4,28,36,42],east:35,ebai:35,ecb:42,ecdsa:29,echo:[36,38,45],ecparam:29,eden:42,edit:[2,3,28,45],editor:[29,30],editplu:30,edu:[42,48],effect:[15,33,35,42],effici:[0,4,30,34,35,36],effort:[0,2,4,42],efnet:[4,17,21],egg_lang:35,eggdrop1:7,eggdrop:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,37,38,41,43,44,45,47,48],eggdroptest:[32,46],egggdrop:2,egghead:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,33,34,35,36,37,38,39,40,41,42,43,44,45,48],egghelp:[4,30],eight:[35,42],either:[3,4,15,16,29,30,31,32,33,34,35,37,42,44,46],element:42,elimin:29,els:[28,39,42],email:[4,29,35,42],embed:42,emerg:38,emot:46,empti:[42,46],enabl:[0,2,4,7,10,12,15,17,21,23,27,28,30,34,35,36,37,38,44,45,47],enclos:[10,37,42,46],encod:[42,43],encount:[30,47],encourag:[2,30,41],encpass2:41,encrypt:[2,5,6,9,19,29,31,34,36,44],end:[3,27,35,41,42,43],endless:10,enforc:[10,29,32,35],enforceban:10,english:[35,45],enhanc:7,enjoi:41,enlarg:3,enough:35,ensur:[27,29,30,34,41,42],enter:[3,10,15,29,31,35,39,40,41,42,44,46],entir:[30,42,46,47],entitl:48,entri:[3,4,29,30,35],env:35,environ:[16,35,36,44],eof:42,equal:42,equival:[6,21,31],equivil:[],eras:[15,42],error:[4,21,27,30,35,42,47],escap:42,especi:28,essenti:41,est:35,establish:[37,42,44],etc:[0,2,4,10,17,24,27,30,32,34,35,36,42,45,48],eth0:16,ethic:35,etiquett:4,european:35,evalu:42,even:[0,4,7,15,17,27,30,33,34,35,36,39,42,47],event:[0,4,24,27,32,34,35,46,47],eventu:19,ever:[29,30,35,42,44],everi:[0,3,4,10,15,17,21,23,27,28,29,32,33,35,37,41,42,48],everydai:35,everyon:[39,42],everyth:[3,28,42],everywher:[35,37,42],evnt:[21,42],exact:42,exactli:[15,17,27,28,42],examin:27,exampl:[2,3,4,5,7,15,16,21,27,28,29,30,31,35,39,42,44,45,46,47],exceed:35,except:[4,13,21,27,35,42,44],excess:[4,10,21],exchang:29,exclud:42,exclus:[21,42],execut:[2,3,7,27,28,32,42],exempt:[0,1,2,4,10,17,24,34,36,47,48],exhaust:[42,46],exist:[0,4,15,21,27,32,41,42,46,47,48],exit:[4,6,12,15,21,42],expand:[0,2,4],expans:42,expect:[6,13,35,42],experi:[3,15,28,30],experienc:3,expir:[10,17,18,21,33,35,42,44],explain:[10,42],explan:[10,30,31,42,46],explicit:38,explicitli:[5,42,44],express:42,extend:[24,36,38,42],extens:[3,30,32],extern:[16,29,35],extra:[7,35,38],extract:[30,42],f270:30,face:47,fact:[0,4,46],fail:[14,23,35,42,44],failur:[42,46],fake:42,fals:42,famili:35,familiar:[4,28],fanci:41,fancyp:28,far:15,fast:30,faster:42,fastest:4,fatal:42,fault:27,favor:[5,22],featur:[0,2,4,7,10,17,21,22,29,30,32,35,37,38,40,42,44,47,48],februari:13,feel:[4,5,27,40],few:[24,28,30,31,35,42,47],field:[21,32,35,42,44],fifth:1,fight:10,figur:[3,30],fil:42,file:[1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,36,37,41,43,44,48],file_receiv:42,file_send:42,file_send_pend:42,filearea:42,filedb:[15,42],filemask:6,filenam:[6,10,18,30,35,44],filepath:6,files:15,filesi:[2,6,35],filestat:6,filesystem:[15,42,48],fill:[35,40,44],filt:[27,42],find:[3,6,14,17,20,27,28,29,30,39,40,42,47],fine:[17,21,35,46],finger:[13,30],fingerprint:[29,35,44],finish:[4,15,30,42],finnish:35,firewal:35,first:[0,2,4,5,15,19,21,27,28,30,31,34,35,41,42,44,45,46],five:42,fix:[0,3,4,27,35,42],flag:[2,5,6,10,13,17,22,27,28,30,35,36,43],flagmask:46,flash:43,flat:42,flexibl:[42,44],flood:[0,4,10,13,18,21,34,35,36,42,48],floor:1,flud:42,flush:22,focus:[24,47],folder:7,follow:[3,4,5,10,15,17,21,24,27,30,31,34,35,36,38,40,41,42,43,44,45,46,47],foo:[28,29,42],forbid:3,forc:[3,10,12,15,19,22,28,35,37,42],forcefulli:44,forev:35,forget:42,fork:[31,40],form:[0,4,27,28,42,43],format:[7,21,27,29,30,31,35,41,42,43,46],forward:18,found:[2,4,27,35,42,46],foundat:1,four:[10,28,32,35,37,42,43],fourth:28,fprint:[35,44],fragil:42,franklin:1,free:[1,2,5,27],freebsd:37,freeli:[0,4],freenod:21,french:35,frequent:[4,30],fresh:35,fri:42,friend:[10,48],frim:27,from:[0,1,2,3,4,5,6,7,10,15,16,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,37,39,41,43,44,45,46,47,48],front:[10,28,30,31,42,47],ftp:[5,30],full:[3,4,5,24,30,37,42,44,46,47],fuller:1,fulli:[5,35,42,47],fun:[3,47],func:27,func_nam:27,func_tabl:27,function_to_cal:27,further:[29,42],futur:[3,17,30,41,42],fwd:18,gain:[0,4,41,48],game:[0,2,4,24,47],garbag:27,gatewai:[24,46,47],gave:30,gayteen:0,gcc:3,gener:[0,1,3,4,19,24,28,29,30,38,41,42,44,47],genkei:29,genrsa:35,geo:28,german:35,get:[6,7,10,21,22,23,27,28,31,32,35,39,48],geteggdrop:[2,4,30],getinfo:42,getop:10,gif:15,git:[2,3,30,40],github:[2,4,30],give:[3,4,10,15,21,28,30,34,35,36,39,41,42,48],given:[4,14,15,16,30,42,46],global:[2,12,16,17,21,22,27,28,33,34,46,48],globalflag:42,gmt:[35,42],gnu:[0,1,3,4,11],goe:[3,10,29,33,34,39,42,44],going:[0,4,15,21,28,31,32,42],gone:[17,42],goober:42,good:[0,15,21,24,28,30,35,42,47,48],got:42,gpl:[0,4],grab:42,grain:28,grant:[29,36,44,47],graphic:44,greater:42,gree:28,greet:[0,2,4,10,28,32],greetmsg:28,greetscript:28,grep:29,ground:35,group:[15,16,35,38,42],grown:0,gseen:[6,20],guarante:[17,32],guess:17,gui:46,guid:[2,3,28,30,31],gunzip:30,guppi:42,gzip:[11,42],had:[3,5,10,34,35,42,47],haha:4,halfop:[10,42,48],hand:[28,35,42],handi:30,handl:[28,29,33,35,41,44,46],handshak:42,hang:[6,14],happen:[28,30,33,35,42],hard:[28,35],harder:28,hardwar:[0,4],has:[0,1,2,4,5,10,14,15,17,21,28,30,31,32,33,34,35,36,37,41,42,44,46,47,48],hash:[2,5,19,30],hasn:21,hate:48,have:[0,1,3,4,5,6,9,10,12,15,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,36,37,39,41,42,44,45,46,47,48],haven:30,head:35,header:[2,4,27,28,31,44],heaven:3,held:46,hello:[17,21,29,30,35,36,42],help:[0,3,13,21,27,28,29,30,33,34,35,37,39,42,43,48],helper:3,henc:[7,27,42],here:[2,4,10,13,14,15,17,18,21,23,28,29,30,33,34,35,42,45,46],herself:4,hidden:[15,30,36],hide:[6,37,42],high:45,higher:[17,19,22,23,30,44],highest:42,highli:[3,21,30],highlight:48,him:1,himself:4,hint:28,his:[21,30],histor:42,histori:46,hit:42,hold:[22,42],hole:35,home:[3,15,16,29,30,44],hook:27,hook_5minut:27,hook_backup:27,hook_daili:27,hook_di:27,hook_hourli:27,hook_idl:27,hook_load:27,hook_minut:27,hook_num:27,hook_pre_rehash:27,hook_read_userfil:27,hook_rehash:27,hook_secondli:27,hook_userfil:27,hope:[30,47],hopefulli:[3,42],hors:30,host:[0,2,4,10,16,21,24,28,33,34,35,44,46,48],hostmask:[28,29,33,34,36,41],hostnam:[6,10,14,29,35,37],hosttarget:[24,46],hour:[6,25,27,33,35,42],hourli:[18,27,35],how:[0,3,6,10,13,14,15,18,21,22,24,28,29,30,31,33,34,35,42,44,45,46,47],howev:[4,7,13,21,29,31,32,35,41,42,44,45],htgt:46,html:[4,37],http:[2,4,6,20,25,30,32,38],hub:[4,22,30,34,35,41,44],hubbot:31,hubcap:48,humor:29,hup:42,hurt:5,iconfig:[3,7,30],idea:[28,30,40],ideal:[41,47],ident:[2,6,7,17,21,29,35,37,41,42],identd:[16,30],identifi:[29,35,41,42,48],idl:[10,27,42],idx:27,ignor:[0,4,13,21,22,28,34,35,36,42,46],ill:42,imag:4,immedi:[21,30,32,41,42],imperson:16,implement:[6,7,16,31,32,35,38,40,41,42,47],implementatino:31,impli:[1,27],importantli:28,improv:[0,4],inact:[10,23],inc:1,incess:0,includ:[0,2,3,4,7,17,25,27,29,30,31,33,35,36,37,41,42,44,46,47],incom:[15,35,42],increas:[32,35,41],incred:[30,42],independ:7,indic:[21,27,30,42,46],infeas:[24,47],infin:35,infinit:15,info:[3,4,10,12,17,27,30,35],inform:[0,2,3,4,5,6,10,15,25,27,28,29,30,32,34,35,37,38,42,44],infrastructur:44,ing:[17,24,47],init:[21,35,42],init_serv:21,initi:[27,28,30,37,38,42,44],input:42,insecur:10,insensit:42,insert:[10,43],insid:[28,35],instal:[0,4,5,28,29,31,35],instanc:[10,32],instantli:21,instead:[1,4,5,10,15,16,17,22,24,30,35,41,42,44,45,47,48],instruct:[7,30,41],integ:[10,42],integr:2,intend:[3,33,42],intens:21,intent:[24,47],intention:28,interact:[3,4,6,16,17,35,42,44,47],intercept:42,interchang:[31,37],interest:4,interfac:[2,24,42,47],intern:[21,32,35,42,46],internet:[0,4,42,44],interpret:[3,37,42,43],interv:42,introduc:[4,30,42],invalid:42,invers:43,invit:[0,2,4,10,17,24,34,36,38,47],invite:42,invok:42,involv:29,invt:42,ipaddress:42,iptabl:16,ipv4:[30,35,37],ipv4address:42,ipv6:[2,30,35,36,42],ipv6address:42,irc:[0,4,6,15,16,21,24,28,29,30,32,33,34,35,36,37,38,39,42,43,45,46,48],ircawai:42,ircd:[17,21,42],ircii:[23,42],ircnet:[4,10,17,21],ircop:[10,17],ircu2:17,ircv3:[2,32,36,42,45],isn:[6,15,21,22,25,30,33,42],isol:34,isop:10,isoptest:10,isp:30,isset:32,issu:[4,5,16,24,30,32,35,40,42,44,46,47],issuer:44,issupport:32,istn:10,isupport:32,ital:42,item:42,its:[1,2,4,7,10,15,16,17,19,21,22,24,28,30,32,34,35,36,40,42,45,47],itself:[15,27,28,29,35,42],itsself:[],j9irk4vs28b0obz9easys4w2ystji3u:47,jan:[42,44],janitor:[15,48],januari:[1,8,9,12,18,20,23,25,42],jkp:30,job:44,john:1,join:[2,6,10,12,17,18,24,28,30,31,33,35,36,38,39,42,46,47,48],jpk:35,jul:7,juli:0,jump:[21,34,44],jun:45,june:16,jupe:42,just:[0,3,4,5,6,14,15,17,19,22,27,29,30,32,34,35,39,41,42,45,46,47],karma:40,keep:[2,4,10,15,21,23,30,35,47],kei:[2,3,10,17,24,28,29,35,41,46,47],kept:[33,35],keyout:[29,44],keypair:[29,31],kick:[10,17,21,32,35,42,45,48],kicker:42,kiddi:35,kill:[30,42],killer:5,kilobyt:[15,35],kind:42,know:[17,18,21,24,27,28,32,33,34,35,42,45,47],knowledg:0,known:[21,29,35,41,42],kreativrauschen:[6,20],kvirc:44,lag:[35,39],lame:[10,17,34,35,42],lamer:35,lameshar:34,lamest:[10,30,34,35,43],lamestbot:[3,10,18,21,30,34,35,42,43],lang:45,languag:[28,35,36,45],larg:[2,15,17,21,35],larger:[28,41],last:[0,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,30,33,34,35,37,38,39,42,43,44,45,46,48],lastli:42,laston:42,late:42,later:[1,3,6,9,18,19,25,28,30,35,42,44],latest:[4,5,30],launch:30,layer:[29,31],lazi:17,leaf:[34,35,41,44],learn:[17,29,30,35,36,42],least:[4,17,27,30,33,35],leav:[10,21,30,35,39,42,47],left:[17,42],legal:[2,4],len:21,length:[17,21,27,41,42,44],less:[13,39,42],let:[4,6,10,14,18,27,28,30,34,35,36,42],letter:[4,35,48],level:[11,16,29,32,35,48],libera:[2,4,5,21,27,28,29,30],librari:[28,41,44],libssl:[4,30,31],licens:[0,1,4],lieu:42,life:[18,30],light:47,like:[0,1,4,6,9,10,13,15,17,19,27,28,29,30,35,36,37,39,40,41,42,44,46,47,48],limbo:35,limit:[2,6,10,15,17,21,34,37],lindex:42,line:[2,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,34,35,36,41,42,44,45,46,47],link:[0,2,3,4,5,6,7,15,22,23,27,35,36,38,41,44,45],linux:37,list:[0,4,6,10,14,15,19,21,22,24,25,27,28,29,30,31,32,34,35,36,38,39,44,46,47],listen:[29,30,34,35,37,44],liter:[27,42],littl:[3,5,15,24,30,34,45],llama:34,llamabot:[30,35],load:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,34,35,41,42,47],loadmodul:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,35,41,47],lobster:41,local:[15,28,30,35,39,40,42,44],localfil:6,locat:[2,4,23,28,29,31,35,44],log:[0,2,4,10,19,24,27,30,32,40,41,42,47],logfil:[25,27,30,35,45],logfilenam:35,logflag:35,logic:42,login:[30,35,41,46],logmod:27,logsiz:35,longer:[3,5,15,17,19,27,30,31,42],look:[0,4,5,6,10,20,25,26,28,29,31,32,35,36,41,42,44,47],lookup:[14,35,37,42],lose:10,lost:42,lot:[5,17,28,30,32],low:[21,23],lower:21,lowercas:21,lsa:15,luck:[30,47],lurk:2,mac:37,machin:[3,16,30,35],macro:27,made:[0,1,3,4,5,10,22,40,42,44,47],magic:28,mai:[1,4,5,10,11,15,16,17,23,28,30,34,35,37,38,42,45,46,47],main:[7,28,30,31,32,39],maintain:[2,16,30,32,45,46],mainten:48,major:[27,30,42],make:[0,2,3,4,5,6,7,10,13,15,19,21,22,24,27,28,29,30,31,35,37,38,40,42,44,45,47],makefil:[3,27],making_modulenam:27,man:35,manag:[2,4,6,15,24,31,47],mandatori:42,mani:[4,5,10,14,15,17,21,27,29,30,31,34,35,42],manipul:[2,35],manpag:35,manual:[4,29,34,35,37,42,44,46],mar:37,march:[33,43,48],mark:[15,36,42,48],mask:[15,21,28,35,46],masquerad:35,master:[15,29,30,33,34,35,42,43,48],match:[1,2,10,15,17,27,28,33,35,41,44,46],math:42,matter:[1,14,28,29],max:[15,17,18,21,23,35],maxdepth:[],maxim:35,maximum:[10,14,15,17,18,21,23,35,41,42,44],maxsend:14,mayb:[28,35],mco:[35,42],mcobx:30,md5:[6,9],mean:[15,17,21,28,29,32,33,34,35,36,37,41,42,44,46],meaning:[24,42,47],meaningless:48,measur:21,mechan:29,meet:44,mem:42,member:[10,27,32],memberlist:42,memori:[27,42],mention:27,meridian:35,messag:[4,10,21,27,28,30,32,35,36,38,39,41,43,45,46],method:[4,6,9,16,17,19,24,28,29,30,31,41,45,47],midnight:35,might:[4,17,23,27,35,42,44],migrat:5,militari:35,milk:48,min:35,miniatur:39,minimum:[0,10,42,46],minor:[27,42],minu:10,minut:[4,10,17,23,27,29,30,33,35],mirc:[21,42],misc:[35,42],miscellan:2,misnom:42,miss:[4,30,32,42],mix:[10,17],mkcoblx:35,mkdir:6,mnnrrpp:42,mnot:22,mnt:30,moc:42,mod:[3,6,7,20,24,27,35,42,46],mode:[4,5,10,13,17,21,24,27,29,32,33,35,36,38,47],mode_proc:42,mode_proc_fix:42,modechang:42,moder:[24,29,46,47],modern:[16,41],modes_per_line_max:17,modif:[5,30,42],modifi:[2,6,14,17,28,32,35,42],modul:[0,2,4,30,32,34,36,41,47],modular:2,module_clos:[],module_depend:27,module_entri:27,module_expmem:[],module_find:27,module_load:27,module_nam:27,module_regist:27,module_renam:27,module_report:[],module_start:[],module_t:[],module_undepend:27,module_unload:27,modulenam:[7,27],moment:[17,30,31],monitor:[33,36,38],month:[35,42],moo:42,more:[3,4,5,6,13,15,17,20,27,28,29,30,31,34,35,36,38,40,41,42,44],moreov:35,most:[0,2,4,5,16,17,21,27,28,29,30,31,35,36,39,42,46,47],mostli:[24,42,47],motd:[35,43],mount:23,move:[3,4,15,21,30,42,47],mpj:42,mrlame:[30,35],mrslame:[30,35],msg:[4,6,17,20,21,29,30,35,36,39,41,46],msgid:46,msgm:[21,42],much:[2,3,24,27,30,39,42],multi:30,multipl:[0,2,4,16,28,30,34,35,36,42,46],must:[1,2,3,4,10,14,16,17,21,23,27,29,30,31,32,34,35,41,42,44,46],mydir:15,myownevent123:42,myproc:42,mytag:42,myvar:45,myword:17,name:[3,4,6,8,15,21,27,28,29,30,31,32,35,46],nano:30,nat:[16,35,37],natur:46,nearli:7,necessari:[10,31],necessarili:42,need:[0,3,4,10,14,16,17,21,27,28,29,30,31,32,34,35,37,41,42,44,46,47,48],needal:42,needop:42,neg:[14,35,42],negcach:14,negoti:[42,44],net:[1,3,17,21,24,30,32,38],netbsd:37,nethack:48,netsplit:[16,17,35,36,42],network:[0,2,4,17,21,35,42,43],never:[4,5,10,35,42],new_module_nam:27,newer:[5,30],newhandl:42,newidx:42,newnick:42,newus:[30,35],next:[5,10,15,21,27,28,30,31,35,42],nfree:27,nice:27,nicebot:30,nick:[10,17,21,25,28,29,30,35,48],nicknam:[6,21,28,29,30,32,35,43,45,46,48],nickserv:[2,44],nist256p:29,nkch:42,nmalloc:27,no_irc:[6,21],nobodi:[15,28],node:[29,44],nodesynch:10,noemail:4,non:[3,10,14,16,17,21,27,29,33,34,42,44,47],none:[8,9,10,12,14,18,19,20,21,23,26,42],noout:29,noqueu:42,nor:16,normal:[0,4,6,13,14,15,16,21,27,28,31,35,42,44,45,46,47],notabl:47,notat:35,notc:42,notcproc:42,note:[2,3,6,7,9,10,14,17,19,21,22,27,29,30,32,34,35,41,44,46,47],notebox:42,notefil:[18,42],notepad:30,noth:[27,35,42,47],notic:[2,13,15,28,34,35,42,47],notif:42,notifi:[18,21,30,35,36,38,42],nots:1,nov:34,novemb:[22,38],novic:[0,4],now:[3,5,15,16,17,28,29,30,31,34,35,37,41,42,46,48],ntik:42,number:[2,10,15,17,18,19,21,23,24,27,30,31,34,35,41,42,44,46,47,48],numer:[29,31,42],nxdomain:14,oauth:47,obtain:[2,31,44],obvious:[33,42],occur:[17,28,42],occurr:27,octal:35,octob:[10,19,21,35],off:[10,16,17,21,30,34,35,39,42],offer:[30,31,32,46,47],offici:[2,4],offlin:42,offset:35,often:[4,6,14,29,35,46],oident:16,oidentd:16,okai:35,old:[6,19,21,30],old_module_nam:27,older:[4,37,42],oldest:[2,42],oldhandl:42,omin:28,omit:[42,44],onc:[4,10,15,17,19,21,28,29,30,40,42],one:[4,10,15,16,17,21,27,28,29,30,31,33,34,35,36,39,40,41,42,44,45],ones:[14,22,34,37,42],onjoin:18,onli:[3,4,5,6,7,10,15,16,17,18,20,21,22,25,26,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],onlin:[6,15,18,29,32],opchar:17,open:[16,29,35,39,40,42,44],openbsd:37,openssl:[2,3,4,19,29,30,31,35,44],oper:[13,21,28,35,37,42,43],opped:[10,42,48],opping:[0,4],oppos:42,ops:[10,32,42,48],optim:[6,21],optino:38,option:[1,3,4,7,10,15,16,19,21,29,30,35,44,47],order:[4,14,28,32,35,41,42,44,46],ordinari:[42,44],org:[2,4,5,6,25,28,30,31,34,35,42],origin:[1,21,30,40,42],oss:16,other:[0,1,4,6,9,10,14,15,16,17,18,19,21,22,27,28,29,30,31,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48],otherdir:3,otherwis:[3,4,12,15,28,32,33,34,35,37,41,42,44,46],our:[30,34,42],ousterhout:1,out:[0,3,4,23,25,28,29,30,34,35,39,41,42,44],outform:29,outgo:[35,42,45],output:[2,3,27,29,31,41,43,45,46],outsid:[19,31,35],over:[15,21,24,27,28,30,35,37,42,44,45,47],overal:32,overhead:7,overrid:[22,37,44],overridden:17,overwrit:[16,30,42],overwritten:[5,35,42],own:[1,7,15,16,21,22,28,29,30,31,38,42,44,45,47],owner:[4,10,30,35,39,42,48],p_tcl_hash_list:27,packag:[1,3,4,30,31],pad:42,page:[30,40],pai:[5,32,42],pain:[23,30],pair:[29,31,32,42,44,46],paragraph:3,paramet:42,paranoid:[22,35],pars:42,part:[0,4,21,24,28,35,36,42,44,45,47],parti:[2,5,12,30,34,35,36,42,44,48],particular:[5,29,35],partproc:42,partylin:[2,4,6,12,30,31,32,34,35,37,41,42,44,45,46,47,48],pass:[28,29,30,32,37,39,41,46],passiv:34,passthru:35,password:[5,6,9,17,19,21,22,29,30,34,35,36,39,41,44,47],past:[1,4,27,35],patch:[2,37,42],path:[2,3,15,16,30,31,42,44],pathnam:42,patient:15,pbk:41,pbkdf2:[2,5,6,41],peer:[21,35,44],pem:[29,35],penalti:21,pend:[6,10],peopl:[4,10,15,16,17,18,21,22,28,30,35,36,39,42,43,48],per:[17,42,46],percent:43,perfect:32,perform:[0,3,4,5,10,30,42,48],perhap:30,period:[6,14,30,42],perm:35,perman:[10,33,35,42],permiss:[4,35,41],permit:42,perorm:2,persist:30,person:[4,28,30,35,42],phew:30,phrase:42,physic:34,pick:42,pictur:5,pid:[30,35,42],pidfil:35,piec:[3,28],ping:13,pipe:34,pl1:42,place:[1,3,5,7,10,15,17,28,30,33,35,42,44,47],plain:[29,35,44],plaintext:[29,42,44],plan:[4,28,42],platform:[0,4,24,42,47],pleas:[4,5,6,7,9,10,16,19,21,31,35,38,42],plu:[10,21,35,42,44],pmsg:28,point:[3,6,21,26,30,34,35,42],pointer:[1,3,4,36,43],popul:46,popular:[0,4,5,30,35],port:[1,5,14,16,21,22,29,30,31,34,35,37,44],portabl:42,portion:[3,7,10,42],portrang:35,posit:[27,35],posix:42,possibl:[3,10,13,15,21,29,31,35,37,38,39,42,44,46],potenti:[5,16,28,42,46],pour:40,power:[4,36],practic:[41,42],pre:[42,44],preced:[30,42,44],prefer:[35,37,44],prefix:[5,17,21,28,31,35,39,44,46,47],preinit:42,prematur:30,prepar:34,prepend:35,prerehash:42,prerequisit:2,prerestart:42,prerout:16,present:[2,6,28,29,32,37,42,46,47],preserv:30,pretend:47,pretendnet:31,pretti:[0,39],preval:29,prevent:[0,4,10,17,18,24,30,34,37,42,47],previou:[1,3,4,5,19,30,42,47],previous:[5,30,42],primari:[21,35],prime256v1:29,prime:35,printf:27,prior:[3,29,30,32,41,44],prioriti:42,privat:[18,22,28,29,30,31,35,39,42,44],privatekei:[29,31,35,44],privileg:[0,4,16,48],privmsg:[10,28,29,42],probabl:[4,21,29,30,31,42],problem:[30,35,37],proc:[21,27,28,46],proce:42,procedur:[2,22,32,46,48],process:[0,3,4,5,11,15,16,23,29,30,34,41,42,44],procnam:[28,42,46],produc:[35,42],program:[0,2,4,16,29,30],progress:15,prohibit:35,project:[2,40,47],prompt:[3,4,32],promptli:30,proper:[3,37,42],properli:[5,30,31,34,35],protect:[0,2,3,4,10,19,21,29,30,33,35,41,42,44,48],protectfriend:10,protecthalfop:10,protectop:10,protocol:[31,35,38,42,44],prove:30,provid:[0,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,27,29,30,35,37,38,40,42,44,46,47],pseudo:42,pub:[4,5,21,29,32,42],pubkei:29,publicli:25,publish:35,pubm:[21,42],pull:[4,40,41],punish:[10,42,48],purpos:[0,1,6,25,26,34,35,42],push:[40,42],put:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,35,42,44],putlog:[21,27,28],putquick:21,putserv:[10,28,29],putti:29,pwd:[6,30],quakenet:[4,21],qualifi:35,quann:[6,20],queri:[14,16,32,37],question:[4,29],queu:[15,21,42],queue:[21,27],quick:[2,27,30,35],quicker:30,quickli:[2,35],quiet:[21,35,48],quit:[4,6,21,30,35,42],quot:[42,46],quota:35,raid:[24,47],rais:[10,21],ram:35,rand_max:42,random:[10,21,34,42],rang:[30,35],rate:21,rather:[5,42,44],raw:[32,35,44],rawt:42,rcvd:42,reach:[17,21,35],react:[28,32],read:[0,2,3,4,6,7,16,27,28,29,30,31,35,42,43,47],readabl:42,readm:[2,3],readonli:27,real:[21,27,42],realli:[28,30,35,45],realnam:[21,42],reason:[4,27,29,30,34,35],reboot:[16,29],receiv:[14,15,21,23,29,34,42,46],recent:[4,30,42,44],recev:[],recipi:42,recogn:[17,21,29,48],recom:[],recommend:[4,5,10,23,27,30,41,42,45,46],recompil:[17,30],reconnect:[22,42],record:[2,22,27,32,36,48],redirect:16,reduc:[27,46],refer:[27,28,31,35,42],refin:28,reflect:[5,42],refresh:[42,46],regardless:42,regist:[2,10,29],regular:[10,42,44],regularli:36,rehash:[7,27,28,35],reiniti:42,reject:[21,34,35],rejn:42,rejoin:[30,42],rel:[14,27,30,42],relai:[0,4,34,35],relat:[1,6,10,28,37,42],releas:[0,1,30,41,42],relev:[4,27,30],reli:42,reliabl:[32,42,46],relink:34,relinquish:42,rem_builtin:27,rem_tcl_command:27,rem_tcl_int:27,rem_tcl_str:27,remain:[10,33,42],remaind:[15,46],rememb:[10,28,29,30],remind:35,remot:[15,34,35,42,43],remotebotnam:42,remov:[5,10,15,19,27,29,30,33,36,37,41,45,46,47],renam:[2,15,27,30,35,42],render:[5,24,47],repeat:[4,32,42],replac:[10,21,27,29,35,42,43,47],repli:[6,13,14,16,17,32,35,42],replic:[46,47],repo:40,report:[6,15,25,27,30,45],repositori:[4,30],repres:[42,46],req:[29,35,44],request:[0,4,5,7,10,13,15,17,21,30,32,33,35,37,38,40,42,44,45,47],requir:[2,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,35,41,44,46],reread:42,resend:[14,42],reserv:[30,35,39],reset:42,resolut:35,resolv:[6,14,35,42],resourc:27,respect:[14,37,42,43],respond:[10,30,42],respons:[21,32,42],rest:[3,27,34,35,41,42,46],restart:[2,3,4,5,7,28,30,35],restrict:[1,15,16,21,35,42,43,47],result:[21,32,33,35,37,42],resum:42,resync:22,retain:42,retri:23,retriev:[6,18],retrydelai:14,reus:[5,42],reveng:10,revengebot:10,revers:[41,42],revert:42,review:[29,31],revis:[0,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,35,37,38,39,42,43,44,45,46,48],revok:[21,35],rfc1459:[38,42],rfc2812:38,rfc:[17,21,24,42,47],rfc_compliant:42,rich:[0,4,30],right:[6,15,16,26,28,30,42],rijndael:19,risk:[1,21],rizon:21,rmdir:6,rmst:46,robei:[1,3,4,36,43,48],robot:36,roomsstat:24,roomstat:[24,47],root:[15,16],round:[19,41],rout:[16,42],routin:[17,35,42],rsa:35,rule:30,run:[2,3,4,5,7,10,16,21,27,28,29,30,31,32,34,35,41,43,44,46],s_client:44,safe:[19,29,30,31,41,47],sai:[4,10,15,28,31,34,42],said:[28,34,42],sake:47,salt:[28,41],same:[0,3,4,5,7,10,11,16,17,27,28,30,32,34,35,38,41,42,43,44,45,46],sampl:[10,30,47],sane:21,sanitycheck:35,sasl:[2,30,36,38],save:[5,6,10,11,12,22,34,35,36,41],scan:30,scenario:[31,32,34],schat:[35,44],schedul:42,scheme:1,scope:31,screen:[4,40,43],script:[0,2,3,4,7,10,21,29,30,33,36,37,42,45,46,47,48],scripter:34,sdcc:44,sdebug:3,seamless:41,seamlessli:19,search:[27,29,42],sec:35,second:[4,10,13,14,17,21,23,27,28,35,45],secondli:42,secret:10,section:[5,10,17,21,24,28,30,34,35,42,47],secur:[0,2,4,6,9,19,29,30,34,35,36,41,42],see:[0,2,3,4,5,6,10,15,17,21,24,25,27,28,29,30,31,32,34,35,37,39,40,41,42,43,46],seen:[2,6,10,32,35,42],selecet:42,select:[4,30,35,36,40,42],self:[2,21,31,35,44],send:[4,6,11,15,17,18,21,22,23,27,28,30,32,34,37,42,45,46],sender:42,sens:[0,4],sensit:41,sent:[6,15,17,22,25,29,32,35,38,39,42,44,46,48],separ:[3,7,21,30,34,35,36,37,38,42,45,46],septemb:14,seri:[30,42,44],serv:35,server:[2,5,6,7,10,13,14,15,16,17,19,24,25,27,29,30,35,36,37,38,44,45,46,47],serverlist:42,serverop:10,serverror:21,servic:[6,10,16,24,29,32,42,44,47],servivc:42,session:[4,37,38],set:[0,1,2,3,5,6,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,31,32,33,34,36,38,39,41,43,45,46,47,48],setcap:16,setnam:[36,38],setup:[4,6,7,30,35],seven:[10,42],sever:[0,4,13,27,30,31,38,42,45],sexystuff:28,sha1:44,sha1sum:29,sha256:19,shall:35,share:[0,2,4,6,10,11,23,27,35,36,42],sharebot:[34,35,42],sharefail:23,she:42,shell:[0,3,4,16,29,30,35,42],shorter:10,should:[1,3,4,5,10,12,13,14,15,17,19,21,22,24,27,28,29,30,34,35,37,39,41,42,44,46,47],shouldn:16,show:[4,6,10,15,25,28,34,35,42],shown:[15,30,35],shutdown:42,shutdownreason:42,side:[35,42,44,47],sidenot:31,sighup:42,sigil:42,sigkil:42,sign:[21,29,31,35,42,43,44,47],signal:42,signific:[4,6],significantli:[32,46],signoff:42,sigquit:42,sigterm:42,silent:35,simialar:[],similar:[4,10,29,30,35,39,40,42,45],similarli:46,simpl:[4,27,28,29,30,42],simpli:[4,5,29,30,31,38,42,47],simplifi:42,simul:[35,42],simultan:[15,23,42],sinc:[0,3,5,17,30,34,35,36,37,42,44,45],singl:[16,17,29,42,46],sit:[0,4,10,35,41],site:[6,48],situat:[32,34],six:42,size:[15,23,27,35,42],skim:4,skip:[30,42],slash:[30,39],slave:34,slennox:30,slow:[15,30,35],slower:35,small:[3,23,34,45],smaller:3,smile:3,snapshot:[2,30],snowbot:15,snt:29,sock:[27,35],socket:[16,27,31,42,44],softwar:[0,1,2,4],solut:41,some:[0,4,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,30,32,33,34,35,36,37,38,42,44,45,47,48],someircnetwork:35,someon:[4,10,17,28,30,31,42,46],someth:[4,28,30,40,42,47],sometim:[4,21,30],somewher:[3,35],song:42,soon:[10,42],sort:[0,4,33],sound:28,sourc:[1,3,4,5,6,7,27,28,31,35,40,42,44,45],space:[0,23,35,38,42],spawn:0,spec:32,special:[34,42],specif:[6,10,14,16,17,19,21,24,30,34,37,38,42,44,46,47,48],specifi:[10,14,15,16,18,21,22,27,29,30,33,35,36,37,41,42,44,46],spectrum:[24,47],spent:[30,42],split:[10,17,37,39,42,43],splt:42,spoiler:47,spoken:42,spoof:16,spread:35,squar:37,squelch:21,src:[3,7,17,27],ssh:30,ssl:[2,3,4,5,21,29,30,31,36,42],sslcert:[3,31,35,44],sslinc:44,ssllib:44,sslport:44,sslsilent:[3,44],sssss:[],stabil:23,stabl:[2,4,30],stack:[17,37,42],stackabl:[],stage:27,stai:42,stall:42,stand:[0,4,30],standard:[14,16,17,23,27,28,38,42,44,47,48],start:[2,3,4,5,6,9,16,19,21,26,28,29,34,35,38,39,41,42,43,46,47],starttl:44,startup:[2,41,42],stat:6,state:[4,42],statement:42,statist:[6,15,25],statu:[0,2,4,10,24,27,31,35,45,46,47],status:32,statuslog:10,stb:21,stdio:27,stdlib:27,stdout:27,stealth:[30,35],step:[2,3,5,27,30,47],stick:33,sticki:[33,42],still:[1,4,5,10,15,22,30,31,32,35,36,42,47],stone:21,stop:[0,10,15,17,27,42,46],stopnethack:[10,48],storag:[6,12,41],store:[5,6,10,12,15,18,24,25,28,30,32,34,41,42,46,47],str_dir:27,str_protect:27,stream:[24,47],street:1,strftime:35,string:[2,17,27,28,29,35,41,46,47],strong:35,strongli:[2,4,30],stuff:[2,4,27,28,30,35,42],style:[33,42],sub:[15,42],subdirectori:[15,42],subject:44,sublist:42,submit:[2,42],subscrib:[46,47],subsequ:42,substitut:[2,35],succeed:42,success:[27,30,42],successfulli:[4,27,42,46],sudo:[16,30],suffic:28,suffici:31,suffix:[7,35],suggest:[5,27],suit:[16,30],suitabl:46,sum:28,summar:21,sun:35,sundai:42,supplant:42,supplementari:32,suppli:35,support:[0,2,3,4,5,6,8,10,11,14,16,17,18,21,22,23,29,30,31,33,35,36,42,45,47],sure:[4,10,27,28,30,31,34,35,42,47],symbol:[31,42],synchron:44,syntax:[5,29,35,44,48],sys:27,system:[2,3,7,14,15,16,27,29,30,35,36,37,42,43,44],tab:27,tabl:[27,38,42],tag:[15,36,38,46],tail:29,take:[3,4,5,6,15,19,21,25,28,30,35,41,42,44],taken:[27,42],takeov:17,talk:[28,31,32,36,39],talli:27,tar:[4,7,30],tarbal:[0,30],target:46,task:[0,2,4,34],tcl:[0,1,2,3,4,6,10,11,21,27,28,30,33,35,36,37,44,45,47],tcl_cmd:27,tcl_int:27,tcl_string:27,tclsh:4,tcltk:4,tcp:[2,16,37],team:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],technic:47,techniqu:45,tell:[15,28,29,30,31,32,34,35,42,47],telnet:[2,29,30,34,36,37,39,41,42,43,44],temp:42,templat:40,temporari:[10,23,25,33,35],ten:29,term:[2,28,31,42],termin:[4,5,42],test:[28,30,48],text:[4,10,21,27,29,35,43,44,45,46,48],textfil:2,than:[4,10,13,15,17,30,31,35,41,42,44],thank:4,thee:42,thei:[0,3,4,5,7,10,12,13,17,18,21,22,27,28,29,30,31,32,33,34,35,41,42,44,46],them:[0,1,3,4,5,7,10,12,13,14,15,17,18,21,22,23,27,28,29,30,31,34,35,36,37,38,41,42,45,47,48],themselv:[17,30,34,42,45],therebi:[45,47],therefor:[6,17,30,35,42],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47,48],thing:[3,4,6,24,26,27,28,29,34,35,42,47],think:[40,48],third:[28,34],thorough:[27,29,31,47],those:[1,3,7,11,15,21,27,28,29,30,42,45,46,47],though:[15,21,28,30,42,44],thr:35,three:[21,29,32,33,34,35,42],through:[4,10,15,21,24,28,31,36,37,38,39,42,47,48],throughout:27,thse:[],thu:[16,28,32,37,41,42],tidi:27,ties:42,till:[],time:[0,3,4,10,14,15,16,17,19,22,23,28,29,30,31,32,33,34,35,36,38,39,41,43,44,45,47],timeout:[6,14,21,23,35,46],timestamp:[35,42],timezon:35,tip:[2,42],titl:48,tiwtch:6,tls:[42,44],tmi:46,tmp:[23,42],toctre:[],todai:42,togeth:[0,2,4,21,28,34,35,36,38,42],token:47,told:28,ton:24,too:[15,17,21,23,27,35,42],tool:[3,30],top:[3,4,28,40,42],topc:42,topic:47,total:[10,27,36,42],tout:42,toward:28,trace:21,track:[2,3,15,24,27,29,42,47],tradit:[24,37,45,46,47],tradition:16,traffic:[3,35,45],trail:27,transfer:[2,6,7,11,15,22,30,34,35,37,42,44,48],transit:[19,41,42],transmit:21,transpar:35,transport:31,treat:[42,47],tree:[0,4,30],tri:[27,35,42],trick:[28,45],trigger:[10,21,27,28,32,42,46],troubl:[14,35],troubleshoot:[4,30],truncat:46,trust:[4,35,48],ttl:14,turbo:[23,30],turn:[10,16,21,35,42],tutori:[2,31],twcmd:[24,47],twice:42,twitch:[2,6,36],twith:46,two:[4,6,17,22,28,30,32,33,34,35,41,42,44,45],type:[3,4,6,7,10,12,17,21,24,27,28,29,30,31,32,33,34,35,36,37,38,39,44],typic:[15,24,35,36,39,42,47],typo:42,ubuntu:31,ufl:42,ugli:15,uglyman:15,uhost:[28,42],uid:[35,44],umod:21,unabl:[17,30,34,37,42,47],unaccess:36,unavail:[21,35],unban:[10,35,42],unbind:[17,35,45,46],uncertainti:46,uncom:[29,31,35,41],under:[0,4,30,36,42],underli:42,underlin:[42,43],undernet:[4,17,21,42],understand:[35,42],understood:21,unexpect:42,unhid:6,unimport:35,unintend:46,uniqu:[35,42,46],univers:35,unix:[0,3,15,16,30,36],unknown:42,unld:42,unless:[17,21,28,30,33,35,42],unlik:[3,36],unlimit:34,unlink:[23,35],unload:[27,42],unoffici:37,unpack:0,unreach:34,unrealircd:[17,42],unreli:[24,46,47],unrest:0,unset:42,unshar:[6,48],unstick:33,unsticki:33,unstuck:42,unsur:30,untar:5,until:[7,10,15,33,35,42],unzip:[5,30],updat:[4,5,19,27,30,32,35,36,41,42,46],upgrad:[2,41,44],uplink:42,upload:[15,30,36,42,45],upon:[0,4,46,48],upper:14,uptim:[2,6],url:[35,42],usa:1,usabl:[6,15,35],usag:[2,4,6,27,35,42],use:[0,1,3,4,5,6,7,9,10,12,13,14,15,16,17,19,21,22,23,27,28,29,30,31,33,34,35,37,39,41,42,43,44,45,46,47,48],used:[0,2,4,10,11,13,15,19,21,27,28,29,30,31,33,34,35,36,37,39,41,42,43,44,45,46,47,48],useful:[1,4,10,23,30,34,42,44,45],useless:[5,24,47],user:[0,2,3,4,5,6,7,9,10,11,12,13,16,17,18,19,20,21,22,23,24,27,28,30,31,32,33,35,36,37,39,40,41,43,44,45,46,47],userban:10,userexempt:10,userfil:[0,2,4,5,6,9,10,11,19,22,23,27,29,30,34,35,41,42,45],userflag:17,userhost:46,userinfo1:35,userinfo:[13,42],userinvit:10,userlist:[6,17,20,22],usernam:[16,29,30,35,46,47],usernotic:[24,46],userst:[24,47],uses:[3,6,17,21,23,27,28,29,30,31,33,35,41,42,44,47,48],using:[1,3,4,6,7,9,10,15,16,17,19,21,27,28,29,30,33,34,35,37,41,42,44,45,46,47],usrntc:46,usst:46,usual:[4,29,30,31,33,37,40,41,42,44,47],utc:35,util:3,utim:28,vagu:30,vali:42,valiant:[0,4],valid:[3,10,21,27,34,35,36,42,44],valis0:42,valu:[10,13,14,17,21,24,27,28,35,41,43,44,46,47],vari:[42,48],variabl:[2,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,32,35,37,43,46],variable_nam:27,varieti:[0,4],variou:[1,27,30,33,35,42],verbos:42,veri:[4,6,16,20,21,28,35],verif:[21,35,44],verifi:[21,29,35,44],version:[0,1,2,3,4,5,13,17,25,27,28,37,38,43,44,46],vertic:42,vhost4:[30,35,37],vhost6:[30,35,37],vhost:[30,35,37],via:[2,3,4,6,11,16,17,20,22,27,28,29,30,32,33,34,35,36,37,38,39,41,43,44,46,47],video:42,view:[5,7,19,29,30,36,42,46],viewer:46,vim:30,vip:[46,47],virtual:35,visibl:42,visit:[5,47],vista:37,voic:[0,2,4,10,29,42,48],wai:[1,3,4,16,21,24,27,28,29,30,31,32,33,34,35,39,41,42,44,47],wait:[6,14,15,17,21,23,30,32,35,42],walk:31,wall:42,wallop:[35,42],want:[0,3,4,6,10,12,14,15,17,18,21,23,27,28,29,30,34,35,37,42,44,45],war:0,warm:40,warn:[4,16,28,42],warranti:1,washalfop:48,wasn:42,wasop:[10,17,48],wasoptest:10,watch:[39,46],web:[2,6,24,35,46],webpag:2,websit:30,week:42,weekdai:42,welcom:28,well:[1,24,28,29,30,31,32,35,41,42,44,47],were:[1,16,17,30,33,34,35,37,41,42,47],west:35,wget:30,what:[0,1,2,5,6,10,15,17,21,25,28,29,30,35,38,39,41,42],whatev:[1,3,28,35,36,42,43],when:[3,4,6,7,9,10,12,15,16,17,21,22,27,28,29,30,32,33,35,37,39,41,42,44,46,47],whenev:[21,27,32,34,42,44],where:[4,6,10,14,15,18,21,27,28,29,30,31,32,35,36,41,42,44,46],wherea:42,wherev:37,whether:[35,37,42],whew:28,which:[3,5,6,10,12,14,15,16,21,22,27,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],whichev:33,whisper:[24,46],whitespac:42,who:[10,15,17,21,28,30,32,35,39,42,48],whoi:[29,35],whole:27,whose:[33,42],whox:[36,42],why:[28,30,42],wide:[39,44],width:43,wild:42,wildcard:[10,28,29,42,46],window:[2,29,37],wise:[4,35],wish:[3,5,7,16,17,25,27,30,33,34,35,42,46],within:[6,15,27,30,31,33,35,38,42],without:[0,2,4,5,6,9,10,13,19,27,28,29,30,31,34,35,36,38,41,42,44],wizard:31,won:[6,10,22,27,28,30,33,34,35,42,44,46],woobi:[2,3,6,27],word:[15,17,29,30,42,46,47],work:[3,5,6,10,13,15,19,20,22,27,28,29,30,33,34,35,37,38,40,41,42,44,45,46],workaround:[24,32],world:[0,2,4,31,35],worri:24,worth:3,would:[4,5,13,28,29,30,31,32,34,35,42,43,44,46,47],wouldn:35,write:[1,2,6,7,26,30,35,41,42,47],written:[0,27,30,42,47],wrote:28,wspm:46,wspr:46,wth:[],www:[2,4,6,20],x509:[29,35,44],xfer:[23,48],xtra:42,xvf:30,xxd:29,year:[0,4,30,35,42],yes:[28,31,42],yesterdai:35,yet:[4,21,30,35,42],yoru:29,you:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48],you_want_to_export:27,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,39,40,41,42,44,47],yourbot:45,yourbranchnam:40,yourconfig:3,youreggdrop:29,youreggdropconfignameher:29,yourself:[7,29,30,40,41,44],yourusernam:40,yyyymmdd:35,zero:42,zip:30,zomg:[],zxvf:30},titles:["About Eggdrop","Boring legal stuff","Eggdrop, an open source IRC bot","Installing Eggdrop","README","Upgrading Eggdrop","Modules included with Eggdrop","Eggdrop Module Information","Assoc Module","Blowfish Module","Channels Module","Compress Module","Console Module","CTCP Module","DNS Module","Filesys Module","Ident Module","IRC Module","Notes Module","PBKDF2 Module","Seen Module","Server Module","Share Module","Transfer Module","Twitch Module","Uptime Module","Woobie Module","Writing an Eggdrop Module","Writing an Eggdrop Script","Common First Steps","Setting Up Eggdrop","Enabling TLS Security on Eggdrop","Account tracking in Eggdrop","Bans, Invites, and Exempts","Botnet Sharing and Linking","Eggdrop Core Settings","Eggdrop Features","IPv6 support","IRCv3 support","The Party Line","Patching Eggdrop","Encryption/Hashing","Eggdrop Tcl Commands","Textfile Substitutions","TLS support","Advanced Tips","Eggdrop Twitch Tcl Commands","Twitch","Users and Flags"],titleterms:{"default":45,"function":[27,47],"int":42,"new":42,"return":42,"short":30,"static":7,"super":30,Adding:34,DNS:14,TLS:[31,44],The:[30,39],Using:[32,34],about:[0,37,38,44],account2nick:42,account:[32,42],accounttrack:42,add:[29,42],addbot:42,addchanrec:42,addit:[27,31],address:42,addus:42,advanc:[35,45],api:24,arg1:42,arg2:42,arg:[42,46],argn:42,assign:29,assoc:[8,42],authent:[29,44],automat:29,background:41,backup:42,ban:[33,42],banlist:42,banmask:42,base64:42,basic:35,best:32,bind:[42,46],block:42,blowfish:9,boot:42,bore:1,bot:[2,15,34,42],botattr:42,botflag:34,botishalfop:42,botisop:42,botisvoic:42,botlist:42,botnam:42,botnet:[5,31,34,35,44],botnick:42,botonchan:42,botport:42,bottre:34,callev:42,can:[2,7],cancel:15,cap:[38,42],capabl:[32,38],certif:44,chan:[42,46],chanban:42,chandname2nam:42,chanexempt:42,chanflag:42,chang:[5,42],chaninvit:42,chanlist:42,channame2dnam:42,channel:[10,15,29,42,46],chansettyp:42,charact:42,chat4:37,chat6:37,chat:37,chattr:42,check:32,chhandl:42,clear:15,clearqueu:42,cmd:46,command:[4,5,24,42,45,46],comment:42,common:29,commun:31,compil:7,compress:[11,42],compressfil:42,config:[5,15,30,42,45,47],configur:[29,30,31,41],configurearg:42,connect:[31,42],consol:[12,35,42],control:42,core:35,count:42,countus:42,creator:42,crontab:4,ctcp:[13,37],ctime:42,cygwin:3,dcc:[35,42,44],dccbroadcast:42,dccdumpfil:42,dcclist:42,dccputchan:42,dccsend:42,dccsimul:42,dccuse:42,decrypt:42,delchanrec:42,delhost:42,deludef:42,delus:42,desc:[15,42],descript:15,dest:15,destin:42,determin:32,develop:4,die:42,dir:[15,42],directori:[15,35,42],disclaim:47,dname:42,dnslookup:42,docker:4,document:[4,5],download:30,dst:15,dumpfil:42,durat:42,dynam:7,echo:42,edit:[30,47],effort:32,eggdrop:[0,2,3,4,5,6,7,27,28,29,30,31,32,35,36,40,42,46],enabl:[31,32,41,42],encpass:42,encrypt:[41,42],entri:42,erasenot:42,event:42,exampl:34,execut:35,exempt:[33,42],exemptlist:42,exemptmask:42,extend:32,extra:42,featur:36,file:[5,15,30,31,35,42,45,47],filemask:15,filenam:[15,42],filepath:15,fileresend:42,filesend:42,filesi:[15,42],filestat:15,find:2,findus:42,first:29,flag:[15,29,34,42,46,48],flushmod:42,formatstr:42,from:42,ftp:4,gener:31,get:[2,4,15,30,42],getaccount:42,getchan:42,getchanhost:42,getchanidl:42,getchaninfo:42,getchanjoin:42,getchanmod:42,getdccawai:42,getdccidl:42,getdesc:42,getdir:42,getfil:42,getfileq:42,getfilesendtim:42,getflag:42,getlink:42,getown:42,getpwd:42,getudef:42,getus:42,git:4,github:40,global:42,hand2idx:42,hand2nick:42,handl:42,handlen:42,handonchan:42,haschanrec:42,hash:41,help:[2,4],helpfil:42,hide:15,histori:30,host:[29,42],hostmask:42,hostnam:42,how:[2,4,5,7],hybrid:41,ident:16,idx2hand:42,idx:42,ignorelist:42,includ:6,info:42,inform:[7,31],instal:[2,3,7,30,37,44],interfac:41,invit:[33,42],invitelist:42,invitemask:42,ipv6:37,irc:[2,17,31,44,47],ircnick:42,ircv3:38,isawai:42,isban:42,isbansticki:42,isbotnick:42,ischanban:42,ischanexempt:42,ischaninvit:42,ischanjup:42,iscompress:42,isdynam:42,isexempt:42,isexemptsticki:42,ishalfop:42,isidentifi:42,isignor:42,isinvit:42,isinvitesticki:42,isircbot:42,isjup:42,islink:42,ismod:46,isop:42,ispermban:42,ispermexempt:42,isperminvit:42,isset:42,istl:42,isupport:42,isvip:46,isvoic:42,join:[29,32],jump:42,keep:45,kei:[31,42,44],keyword:42,killassoc:42,killban:42,killchanban:42,killchanexempt:42,killchaninvit:42,killdcc:42,killexempt:42,killignor:42,killinvit:42,killtim:42,killutim:42,languag:42,lastbind:42,legal:1,level:42,lifetim:42,limit:[24,42,47],line:[4,39],link:[34,42],list:42,listen:[31,42],listnot:42,loadchannel:42,loadhelp:42,loadmodul:[7,42],localfil:15,locat:30,log:[29,35,45],logfil:42,make:34,manipul:42,mask:42,maskhost:42,masktyp:42,match:42,matchaddr:42,matchattr:42,matchban:42,matchcidr:42,matchexempt:42,matchinvit:42,matchstr:42,md5:42,messag:42,minut:42,miscellan:42,mkdir:[15,42],mode:42,modifi:45,modul:[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,35,42],modular:45,module_clos:27,module_expmem:27,module_report:27,module_start:27,module_t:27,monitor:42,more:2,msg:42,must:5,myip:42,name:42,need:7,newban:42,newchanban:42,newchanexempt:42,newchaninvit:42,newexempt:42,newignor:42,newinvit:42,newnam:42,nick2hand:42,nick:[42,46],nicknam:[15,42],nickserv:29,note:[18,42],notic:4,notifi:32,numberlist:42,numvers:42,obtain:4,old:42,oldnam:42,onchan:42,onchansplit:42,onelin:42,onlin:42,open:2,optim:15,option:42,output:42,own:[],parti:39,partylin:[15,24,29],pass:42,passwdok:42,password:42,patch:40,path:35,pattern:42,pbkdf2:19,pend:15,permiss:29,port:42,pre:[2,4,31],prefix:42,prepar:31,prerequisit:30,proc:42,procedur:42,protect:31,pushmod:42,putallbot:42,putbot:42,putcmdlog:42,putdcc:42,puthelp:42,putkick:42,putlog:42,putloglev:42,putnow:42,putquick:42,putserv:42,putxferlog:42,pwd:15,queue:42,queuesiz:42,quick:[3,4],quit:15,rand:42,raw:42,read:5,readm:4,reason:42,record:[34,42],refreshchan:42,regist:47,rehash:42,reload:42,reloadhelp:42,remov:42,renam:45,renudef:42,req:42,requir:[3,27,32,42],requisit:[2,4,31],resetban:42,resetchan:42,resetchanidl:42,resetchanjoin:42,resetconsol:42,resetexempt:42,resetinvit:42,restart:[29,42],rfcequal:42,rmdir:[15,42],roomstat:46,sasl:29,save:42,savechannel:42,script:[5,28,32,35,44],second:42,secur:[31,44],seen:20,self:45,sendnot:42,server:[21,31,32,42],serveraddress:42,set:[4,29,30,35,37,42,44],setchan:42,setchaninfo:42,setdccawai:42,setdesc:42,setflag:42,setlink:42,setown:42,setpwd:42,setudef:42,setup:15,setus:42,share:[15,22,34],show:30,snapshot:4,socklist:42,solo:41,some:2,sourc:[2,15,30],src:42,ssl:[35,44],stackabl:42,start:30,starttl:42,startup:[3,4],stat:15,statu:[32,42],step:29,stickban:42,stickexempt:42,stickinvit:42,still:7,storenot:42,str:42,strftime:42,string1:42,string2:42,string:[42,45],strip:42,stripcod:42,stuff:1,submit:40,substitut:43,support:[32,37,38,44],system:4,tag:[32,42],tagmsg:42,target:42,tcl:[5,24,32,41,42,46],tcp:42,telnet:35,term:34,text:42,textfil:43,thing:2,time:42,timer:42,timerid:[],timernam:42,tip:45,tlsstatu:42,topic:42,track:32,traffic:42,transfer:23,twcmd:46,twitch:[24,46,47],twitchmod:46,twitchvip:46,type:[42,46],unam:42,unbind:42,uncompressfil:42,unhid:15,unixtim:42,unlink:42,unloadhelp:42,unloadmodul:42,unshar:15,unstickban:42,unstickexempt:42,unstickinvit:42,upgrad:[4,5],uptim:[25,42],usag:[15,37,38,41,44],use:[],user:[15,29,34,42,48],userlist:42,userport:42,userst:46,utim:42,validchan:42,valididx:42,validus:42,valu:42,variabl:[42,45],version:[30,42],via:[40,42],washalfop:42,wasop:42,web:47,what:[4,7,27,34],where:2,whom:42,whox:32,why:[],window:3,without:7,woobi:26,write:[27,28],you:2,your:45}}) \ No newline at end of file +Search.setIndex({docnames:["about/about","about/legal","index","install/install","install/readme","install/upgrading","modules/included","modules/index","modules/mod/assoc","modules/mod/blowfish","modules/mod/channels","modules/mod/compress","modules/mod/console","modules/mod/ctcp","modules/mod/dns","modules/mod/filesys","modules/mod/ident","modules/mod/irc","modules/mod/notes","modules/mod/pbkdf2","modules/mod/seen","modules/mod/server","modules/mod/share","modules/mod/transfer","modules/mod/twitch","modules/mod/uptime","modules/mod/woobie","modules/writing","tutorials/firstscript","tutorials/firststeps","tutorials/setup","tutorials/tlssetup","using/accounts","using/bans","using/botnet","using/core","using/features","using/ipv6","using/ircv3","using/partyline","using/patch","using/pbkdf2info","using/tcl-commands","using/text-sub","using/tls","using/tricks","using/twitch-tcl-commands","using/twitchinfo","using/users"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:55},filenames:["about/about.rst","about/legal.rst","index.rst","install/install.rst","install/readme.rst","install/upgrading.rst","modules/included.rst","modules/index.rst","modules/mod/assoc.rst","modules/mod/blowfish.rst","modules/mod/channels.rst","modules/mod/compress.rst","modules/mod/console.rst","modules/mod/ctcp.rst","modules/mod/dns.rst","modules/mod/filesys.rst","modules/mod/ident.rst","modules/mod/irc.rst","modules/mod/notes.rst","modules/mod/pbkdf2.rst","modules/mod/seen.rst","modules/mod/server.rst","modules/mod/share.rst","modules/mod/transfer.rst","modules/mod/twitch.rst","modules/mod/uptime.rst","modules/mod/woobie.rst","modules/writing.rst","tutorials/firstscript.rst","tutorials/firststeps.rst","tutorials/setup.rst","tutorials/tlssetup.rst","using/accounts.rst","using/bans.rst","using/botnet.rst","using/core.rst","using/features.rst","using/ipv6.rst","using/ircv3.rst","using/partyline.rst","using/patch.rst","using/pbkdf2info.rst","using/tcl-commands.rst","using/text-sub.rst","using/tls.rst","using/tricks.rst","using/twitch-tcl-commands.rst","using/twitchinfo.rst","using/users.rst"],objects:{},objnames:{},objtypes:{},terms:{"04may2000":35,"3rd":5,"5c0":[21,30,35],"break":[15,42],"byte":[17,21,23,27,42],"case":[14,19,21,28,30,32,35,42],"catch":42,"char":[27,35,42],"const":27,"default":[2,3,4,10,11,14,15,17,21,23,29,30,31,32,33,35,41,42,44],"export":45,"final":[0,4,28,29,30,35,41],"function":[0,1,2,4,6,7,19,24,30,34,35,37,41,42,45,46],"import":[27,28,29,30,32,35,39,42],"int":27,"long":[6,10,14,18,21,22,33,35,42,43,46],"new":[4,5,7,19,24,28,29,30,32,35,36,37,38,39,40,41,44,45,47],"null":27,"public":[0,1,4,28,29,31,35,42,44,45,48],"return":[17,27,32,41,46],"short":[2,27,29,37,44],"static":[2,3,10,27,29,42],"super":2,"switch":[5,27,30,32,35,42,44,45],"throw":42,"true":28,"try":[3,4,6,7,20,21,25,27,28,29,30,32,35,46],"var":42,"void":27,"while":[0,4,5,10,16,24,30,32,33,35,39,41,42,47],AND:[19,30,42],ARE:28,Adding:[2,24,47],And:28,CVS:4,DNS:[2,6,42],DOING:28,For:[1,2,3,5,7,15,21,29,30,31,34,35,37,38,39,41,42,44,45,46,47],IPs:[29,31,37],NFS:23,NOT:[5,28,30,32,34,35,42,46],Not:[6,21,29,38],One:[0,4,28,32,42],THE:3,TLS:[2,3,4,5,29,30,35,42],That:[24,28,30,34,42,48],The:[0,1,2,3,4,5,6,10,11,13,14,15,16,19,21,22,23,24,25,27,28,29,31,32,33,34,35,36,38,41,42,44,45,46,47,48],Their:37,Then:[5,29,30,44],There:[1,3,4,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,29,31,32,33,35,37,41,43,44,47,48],These:[5,11,17,27,30,32,33,34,35,37,43,44,46,48],Use:[16,17,19,21,27,30,35,42],Used:42,Useful:42,Using:[2,27,42],WILL:46,With:[0,4,6,15,34,35,41,42,44],YES:7,Yes:[7,29],aaa:[],abcdechannel:42,abil:[2,7,16,31,32,36,42],abl:[3,6,10,15,17,21,30,32,35,39,41,42],abort:[23,30,42,44],about:[2,4,6,24,25,27,28,29,35,42,45,47],abov:[1,4,10,17,19,27,28,29,36,42,43],absolut:[0,31,42,48],abus:[0,2,4],accept:[15,22,24,31,34,35,42,44,47],access:[0,4,16,21,27,28,29,30,36,39,41,42,44,46,47,48],accomplish:3,accord:[1,42,48],accordingli:21,account:[0,2,4,16,18,27,29,30,36,38,40,41,47],accur:[32,42,46],accuraci:32,acknowledg:29,across:[0,4,34,38,40,42,45],act:[16,27,35,36,42,44],action:[28,29,31,35,42],activ:[2,10,16,30,32,33,39,42,44],actual:[0,4,15,27,28,31,35,39,42],acut:[],add:[3,4,5,7,10,16,17,24,27,28,30,31,32,34,35,36,41,47],add_builtin:27,add_hook:27,add_tcl_command:27,add_tcl_int:27,add_tcl_str:27,added:[0,3,4,5,19,22,24,28,30,32,34,35,36,37,38,41,42,44,46],addhost:17,adding:[7,21,27,35,36,38,42],addit:[2,4,5,16,21,30,35,42,44,46],addition:[16,30,32,42],addlang:[35,42],address:[18,22,25,30,34,35,37,44],addus:30,adh:35,adjust:[0,4,17],admin:[35,43],admit:23,advanc:[0,2,4,6,20,28,36],advantag:[5,30,45],advertis:[0,4,42],advis:[3,21,23],affect:[5,10,24,35,36,37,42,47],affet:42,affili:[1,47],after:[3,4,10,16,17,21,27,28,29,32,33,35,42,44,45,47],afterward:[17,35],again:[6,15,25,27,33,34,35,41,42,46],against:[10,15,19,21,28,30,41,42,46],age:42,aggress:34,aka:35,alarm:42,alert:[32,47],algorithm:[19,41],all:[1,5,6,7,10,13,14,15,17,19,21,22,27,28,29,30,31,32,33,34,35,36,37,38,39,41,42,44,45,46,47,48],alloc:[27,42],allow:[0,3,4,5,6,7,10,11,15,16,17,18,19,21,22,23,24,27,28,29,30,32,34,35,36,41,42,44,45,47],alltool:35,almost:[0,4,30,33,48],along:[4,15],alphabet:35,alphanumer:47,alreadi:[10,21,27,28,30,31,32,34,35,41,42,47],also:[0,2,3,4,7,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,29,30,33,34,35,36,39,41,42,43,44,45,46,47,48],alt:[21,35],alter:[15,36,42,47],altern:[2,4,16,21,30,31,34,35,42,44],although:[17,30,35,42],altnick:[21,30],altogeth:19,alwai:[0,3,4,10,30,32,33,35,42],amount:[6,35],anachron:31,ani:[0,1,3,4,5,7,12,15,16,17,18,21,22,24,27,28,29,30,33,35,36,39,41,42,44,46,47,48],annoi:28,announc:32,anonym:35,anoth:[0,10,15,17,18,21,22,27,30,34,35,42,43,46],another:5,ansi:42,answer:[0,7,13,16,21,28],any_other_funct:27,anymor:[6,9,19,35],anyon:[10,33,42],anyth:[0,4,15,28,29,30,34,35,39,42,46],anywai:35,anywher:[39,42],aol:[28,41],aop:10,apart:[27,35],api:6,apostroph:39,appear:[29,30,34,35,42,46],append:[27,42],appli:[30,33,35,41,48],applic:[1,35,42],appreci:31,appropri:[3,5,30,35,38,40,41],april:[24,46],apt:[30,31],arbitrari:42,arbitrarili:46,archiv:4,area:[6,15,35,42,45,48],aren:[30,35,42,45,46],arg:27,argument:[15,17,28,29,37,42,46],around:[0,4,24,31,37,42,47],arriv:42,ascii:42,ask:[4,17,29,30,39,42,44],assign:[34,35,42],assist:[2,30,32,44],assoc:[2,6],associ:[24,32,42,47],assum:[21,28,30,31,32,33,35,42],assumpt:38,assur:46,asynchron:[6,14,42],attach:[32,42,46],attack:[10,19,41],attempt:[4,5,10,16,17,21,24,31,32,33,34,35,42,44,47],attent:[5,21,32,42],attribut:[33,34,42,48],auch:27,aug:42,august:17,auth:[35,44],authent:[2,32,41,42,47],author:[28,31,35,44],auto:[2,3,34,48],autobotchk:[3,4,29],autoconf:3,autoconfigur:3,autodetect:44,autohalfop:10,autom:[0,2,4],automat:[2,3,4,5,12,16,21,30,32,33,34,35,36,37,41,42,44,47,48],autoop:10,autosav:12,autovoic:[10,48],avail:[4,10,15,19,25,27,29,30,31,35,36,37,39,42,47],avoid:[6,14,29],awai:[36,38,42],awar:42,awesom:28,b33f:30,baa:42,back:[21,28,30,35,37,40,41,42,45],background:[2,4,28],backslash:30,backup:[5,27],backward:[5,38],bad:[10,42,48],badg:48,badgui:46,ban:[0,2,4,10,17,24,34,35,36,47,48],bandwidth:[6,11],banner:[35,43],bar:42,barr:35,base64:29,base:[4,30,32,35,41,42],basi:30,basic:[2,4,6,7,20,28,30],bask:40,bbb:[],bcst:42,bear:1,becaus:[0,4,16,21,27,28,35,42,45,46,47],becom:[29,30,35,42],been:[0,1,4,5,15,17,21,27,33,35,36,42,46],beerbot:32,befor:[0,4,10,14,16,17,18,21,22,23,27,29,30,32,34,35,42,47],began:38,begin:[16,28,37,42],behalf:42,behav:42,behavior:[13,17,33,35,37,42],behind:35,being:[0,4,10,15,17,21,31,32,36,37,42,46],beldin:34,bell:42,belong:35,below:[10,15,16,22,24,27,28,30,35,41,42,46],best:[2,3,6,16,30,34,42,46],better:[3,4,6,20,29,30,35],between:[3,6,10,15,18,21,22,31,32,34,35,37,42],beverag:41,big:[5,23,42,45],binari:[3,31],bind:[2,16,17,21,24,27,28,32,35,45,47],birthdai:35,bit:[3,15,24,28,30,31,35,42,44,47],bitch:10,bitchx:42,blank:42,bless:1,blindli:17,bloat:7,block:[23,24,27,30,43,47],blowfish:[1,2,5,6,19,27,35,41,42],bodi:28,bogu:35,bold:[4,42,43,48],boldfac:42,boot:[4,35],bore:[2,4],boston:1,bot:[0,1,3,4,5,6,7,10,12,13,14,16,17,18,19,20,21,22,23,25,27,28,29,30,31,33,35,36,37,38,39,41,43,44,45,46,47,48],bota:34,botaddr:42,botaddress:42,botattr:34,botb:34,botc:34,botchk:[4,29,30],botdir:30,botfl:42,botflag:[2,22],both:[0,4,10,21,23,31,32,34,37,41,42,44],botnam:[29,34],botnet:[0,2,3,4,6,8,10,12,15,21,25,30,36,37,39,41,42,45,48],botnetcentr:43,botnetnick:42,botnetop:10,botnick:[21,28,29,30,35],bottom:28,bottre:2,bounc:17,bound:[16,35,42],boundari:14,box:[30,35],brace:10,bracket:37,branch:[4,40],breach:42,brief:30,broadcast:[24,39,42,46,47],broken:[15,28,35,42],brows:15,brute:19,buf:17,buffer:22,bug:[0,3,4,28,30,40],build:42,built:[2,16,42,45],builtin:[16,42],busi:28,button:[40,47],bypass:42,bywho:42,cach:[14,42],cafil:[35,44],calcul:21,call:[0,3,4,27,28,29,34,35,42,46],callback:32,can:[0,3,4,5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],cancel:[6,42],cannot:[0,27,30,32,41,42,48],cap:[2,27,32,36,47],cap_net_bind_servic:16,capabl:[2,35,36,42,45,47],capac:47,capath:[35,44],capit:[4,48],caption:[],captur:[30,42,45],care:[35,42,47],carefulli:[30,42],carelessli:5,categori:42,caught:42,caus:[16,30,34,42,45],caution:42,cbc:42,ccht:46,center:43,central:[15,35],cerfif:[],cert:[29,35,44],certain:[33,35,36,37,42,43,46,48],certainli:[24,30,47],certif:[2,3,21,29,31,35,42],certifict:44,cet:35,chaddr:[5,34],chain:[35,44],challeng:[28,29],chan:[5,10,17,28,29,30,45],chanc:30,chanfil:[10,30,45],chang:[1,2,6,9,10,15,17,19,21,22,24,28,30,31,34,35,36,38,39,40,44,46,47],chaninfo:[29,34],chanmod:[10,29],channel:[0,2,4,5,6,8,12,17,20,21,22,24,27,28,30,32,33,34,35,36,39,43,45,47,48],channelflag:42,chanrec:[17,42],chanserv:10,chanset:[10,29,34],charact:[2,10,15,21,30,34,35,37,41],chase:[0,4],chat4:2,chat6:2,chat:[0,2,4,6,13,21,29,30,34,35,36,39,42,44,46,47],chatter:35,chattr:[29,48],check:[2,4,5,10,21,27,28,29,31,35,41,42,44,46],checkout:[30,40],chfinger:35,chghost:[36,38],chjn:42,chmod:[3,35],chof:42,choic:[1,21,28],chon:42,choos:[3,7,29,30,35,36,47],chpass:41,chpt:42,chri:1,chunk:21,cidr:[35,42],cipher:[35,42,44],claim:[24,47],clarifi:33,clean:15,clear:[4,6,40,42,44,46,47],clearchat:[24,46],clearmsg:[24,46],cleartext:42,clemson:48,click:[40,47],client:[15,16,21,24,29,30,32,35,38,42,44,47],cloak:29,clone:[2,4,10,30],close:[27,42],cmd:[35,42],cmd_t:27,cmsg:46,code:[1,2,3,4,7,27,28,42],coder:[],col:43,cold:[40,41],colon:[35,37],color:[4,42],column:43,com:[2,4,5,6,20,21,28,29,30,34,35,41,42,44],combin:[36,42],combo:[],come:[4,6,17,21,29,30,40,42],comfort:30,comma:[35,39,42],commadlin:30,command:[2,3,6,10,12,15,16,17,20,21,27,28,29,30,31,32,33,34,35,36,37,39,41,44,47,48],commandlin:30,comment:[15,17,25,28,30,35,41],commerci:30,common:[2,21,30,31,34,35,38,44,48],commonli:[29,31,35,42],commun:[2,27,34,39,40,42],compat:[3,5,38,42,46,47],compil:[0,2,3,4,27,30,31,35,37,42,44],complet:[3,4,10,15,22,30,36,42,44,48],compliant:[17,21,42],compon:42,comprehens:46,compress:[2,6,29],compris:38,concurr:[35,41],conf:[3,7,16,29,30,38,42,44],config:[2,3,4,6,7,10,11,12,13,14,16,17,18,19,21,22,23,24,25,27,28,29,31,32,33,34,35,37,41,43,44],configfil:42,configur:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,35,37,40,42,44],confirm:[40,42],conflict:16,confus:[29,42],connect:[2,4,5,6,14,15,16,21,24,27,29,30,34,35,37,39,44,47,48],connet:[],consequ:46,consid:[4,30,32,33,35,39,42],consider:41,consist:[34,36,39,42],consol:[2,4,6,10,27,36,39],constantli:27,constitut:[10,21,35],consult:[29,37,38,44],contact:[28,35],contain:[1,3,4,5,28,30,32,34,35,37,42,44,46],content:[41,42,46],contest:6,context:27,continu:[30,42],contribut:40,control:[0,2,4,17,21,28,29,34,35,36,44,47,48],conv_form:29,conveni:35,convers:[27,39,44],convert:42,cooldud:30,coordin:35,copi:[1,2,5,7,15,23,27,30,42],copyright:[0,1,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],core:[2,3,6,7,17,18,21,27,28,42,45],correct:[3,31,35,41],correctli:[3,42],correspond:[10,29,33,42],cos:10,could:[1,21,28,34,35,37,40,41,42,44,47],couldn:42,count:21,counterpart:42,coupl:42,cours:[3,28,34,35,42],cover:[32,33,34],cpu:[21,35,42],crappi:42,crash:[3,4,42],creat:[0,3,4,15,16,22,27,28,29,30,33,35,40,41,42,44,45,47],creation:[29,32],credit:[28,42],cron:42,crontab:[3,4,42],cross:30,crotab:[],crt:[29,35,44],crypto:41,cryptograph:[19,41,42],crytopgraphi:41,ctcp:[2,6,10,21,29,30,35,42,44],ctcr:42,ctrl:42,curl:30,current:[2,4,6,7,9,15,17,18,19,24,27,29,30,32,35,36,39,42,43,44,46],custom:[16,21,28,29,32,36,42,44],cut:29,cycl:[10,21,35],cygwin:[2,37],daemon:[16,35],dai:[18,23,35,42,45],daili:[30,42],dalnet:[4,17,21],danc:42,danger:42,danish:35,data:[4,10,22,27,31,41,42],databas:[15,42],date:[1,4,30,32,35,42],db8:[21,30,35],dcc:[0,2,4,6,15,20,21,23,27,29,30,34,36,37,39,41,45],dead:30,deal:[35,42,48],dealloc:27,deauthent:32,debian:[30,31],debug:[3,25,27,28,35,42,44,46],dec:[15,42],decemb:[0,26,36,39],decent:27,decid:[38,41],decis:47,declar:[28,42],decreas:35,defens:28,defin:[4,6,10,11,13,17,21,27,28,30,32,33,34,35,38,42,48],definit:[28,30,31,41],degrad:47,dehalfop:[10,42,48],del_hook:27,delai:[10,15,17,28],delet:[30,42,45],deliber:44,delimit:42,deliv:42,demand:[0,4],demonstr:[6,26,42],denot:[31,42],deop:[10,42,48],depend:[27,32,33,40,42,44,48],deprec:[5,31,42],deprici:21,depth:[35,44],der:29,deriv:41,desc:[6,27],describ:[27,28,30,31,34,35],descript:[6,27,28,29,35,42,46,48],descriptivebranchnam:40,deserv:28,design:[0,2,4,19,38,46],desir:[7,27,29,30,41],despit:31,dest:[3,6,30,31,35,42,44],destin:[16,27],destroi:[0,4],detail:[3,4,6,27,30,32,42,44,46],detect:[7,21,31,37,42,44],determin:[2,3,16,27,29,30,34,37,42,44],dev:[4,30,31],devel:3,develop:[0,1,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,31,33,34,35,36,37,38,39,40,41,42,43,44,45,47,48],devleop:[],dict:[42,46],dictionari:42,did:[1,29,41],didn:[28,30,42],die:[27,29,30],died:21,differ:[1,3,4,5,10,15,21,28,31,32,35,41,42,45,46],differenti:42,diffutil:3,digest:[19,42],digit:[35,44],dinner:41,dir:[6,29],direct:[7,31,34,40,42],directli:[5,6,10,16,22,30,42],directori:[2,3,4,6,7,23,27,29,30,31,36,40,44,45],disabl:[10,17,21,29,35,37,42,44],disc:42,discard:[22,42],disclaim:[2,42],disconnect:[21,22,35,42],discontinu:47,discourag:17,discuss:[4,40],disk:[0,23,30,35,36,42],displai:[12,15,17,21,29,30,35,42,43,46],displaynam:27,dispos:42,dissect:28,distinguish:42,distribut:[0,1,4,30],distro:31,dload:23,dns:[6,14,35,42],doc:[0,3,4,5,6,21,28,31,35,39,42,46,47],document:[2,16,28,30,31,34,37,38,40,44,45],doe:[10,24,28,29,32,33,35,38,39,42,46,47,48],doesn:[12,14,17,30,39,42,45,46],doing:[19,21,28,35,42,43],domain:[1,14,34],don:[4,7,10,14,15,17,21,22,24,27,28,29,30,34,35,39,42,44,45],donat:[24,47],done:[5,22,27,29,30,31,34,40,41,42,47],donkei:30,dontkickop:10,dot:39,doubl:21,doubt:37,down:[0,3,4,15,34,42],downer:24,download:[3,4,5,7,15,23,35,36,42],dozen:28,dp_help:27,dp_log:27,dp_mode:27,dp_server:27,dp_stdout:27,dport:16,dprintf:27,drastic:[27,42],driven:42,dronepup:42,drop:[3,4,35,42],dropp:[],dst:6,due:[17,21,28,35,42,46],dump:[21,35,42],duplic:42,dupwait:35,dure:[3,11,22,27,29,30],dynam:[2,3,10,29,30,33,42],dynamicban:[10,42],dynamicexempt:[10,42],dynamicinvit:[10,42],each:[0,4,6,10,15,18,23,28,29,30,32,34,35,36,39,42,45,46,48],earlier:19,easi:[5,28,30,42,44],easier:[3,19],easiest:42,easili:[0,1,2,4,28,36,42],east:35,ebai:35,ecb:42,ecdsa:29,echo:[36,38,45],ecparam:29,eden:42,edit:[2,3,28,45],editor:[29,30],editplu:30,edu:[42,48],effect:[15,33,35,42],effici:[0,4,30,34,35,36],effort:[0,2,4,42],efnet:[4,17,21],egg_lang:35,eggdrop1:7,eggdrop:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,37,38,41,43,44,45,47,48],eggdroptest:[32,46],egggdrop:2,egghead:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,33,34,35,36,37,38,39,40,41,42,43,44,45,48],egghelp:[4,30],eight:[35,42],either:[3,4,15,16,29,30,31,32,33,34,35,37,42,44,46],element:42,elimin:29,els:[28,39,42],email:[4,29,35,42],embed:42,emerg:38,emot:46,empti:[42,46],enabl:[0,2,4,7,10,12,15,17,21,23,27,28,29,30,34,35,36,37,38,44,45,47],enclos:[10,37,42,46],encod:[42,43],encount:[30,47],encourag:[2,30,41],encpass2:41,encrypt:[2,5,6,9,19,29,31,34,36,44],end:[3,27,29,35,41,42,43],endless:10,enforc:[10,29,32,35],enforceban:10,english:[35,45],enhanc:7,enjoi:41,enlarg:3,enough:35,ensur:[27,29,30,34,41,42],enter:[3,10,15,29,31,35,39,40,41,42,44,46],entir:[30,42,46,47],entitl:48,entri:[3,4,29,30,35],env:35,environ:[16,35,36,44],eof:42,equal:42,equival:[6,21,31],equivil:[],eras:[15,42],error:[4,21,27,30,35,42,47],escap:42,especi:28,essenti:41,est:35,establish:[37,42,44],etc:[0,2,4,10,17,24,27,30,32,34,35,36,42,45,48],eth0:16,ethic:35,etiquett:4,european:35,evalu:42,even:[0,4,7,15,17,27,30,33,34,35,36,39,42,47],event:[0,4,24,27,32,34,35,46,47],eventu:19,ever:[29,30,35,42,44],everi:[0,3,4,10,15,17,21,23,27,28,29,32,33,35,37,41,42,48],everydai:35,everyon:[39,42],everyth:[3,28,42],everywher:[35,37,42],evnt:[21,42],exact:42,exactli:[15,17,27,28,42],examin:27,exampl:[2,3,4,5,7,15,16,21,27,28,29,30,31,35,39,42,44,45,46,47],exceed:35,except:[4,13,21,27,35,42,44],excess:[4,10,21],exchang:29,exclud:42,exclus:[21,42],execut:[2,3,7,27,28,29,32,42],exempt:[0,1,2,4,10,17,24,34,36,47,48],exhaust:[42,46],exist:[0,4,15,21,27,32,41,42,46,47,48],exit:[4,6,12,15,21,42],expand:[0,2,4],expans:42,expect:[6,13,35,42],experi:[3,15,28,30],experienc:3,expir:[10,17,18,21,33,35,42,44],explain:[10,42],explan:[10,30,31,42,46],explicit:38,explicitli:[5,42,44],express:42,extend:[24,36,38,42],extens:[3,30,32],extern:[16,29,35],extra:[7,35,38],extract:[30,42],f270:30,face:47,fact:[0,4,46],fail:[14,23,35,42,44],failur:[42,46],fake:42,fals:42,famili:35,familiar:[4,28],fanci:41,fancyp:28,far:15,fast:30,faster:42,fastest:[],fatal:42,fault:27,favor:[5,22],featur:[0,2,4,7,10,17,21,22,29,30,32,35,37,38,40,42,44,47,48],februari:13,feel:[4,5,27,40],few:[24,28,30,31,35,42,47],field:[21,32,35,42,44],fifth:1,fight:10,figur:[3,30],fil:42,file:[1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,33,34,36,37,41,43,44,48],file_receiv:42,file_send:42,file_send_pend:42,filearea:42,filedb:[15,42],filemask:6,filenam:[6,10,18,30,35,44],filepath:6,files:15,filesi:[2,6,35],filestat:6,filesystem:[15,42,48],fill:[35,40,44],filt:[27,42],find:[3,6,14,17,20,27,28,29,30,39,40,42,47],fine:[17,21,35,46],finger:[13,30],fingerprint:[29,35,44],finish:[4,15,30,42],finnish:35,firewal:35,first:[0,2,4,5,15,19,21,27,28,30,31,34,35,41,42,44,45,46],five:42,fix:[0,3,4,27,35,42],flag:[2,5,6,10,13,17,22,27,28,30,35,36,43],flagmask:46,flash:43,flat:42,flexibl:[42,44],flood:[0,4,10,13,18,21,34,35,36,42,48],floor:1,flud:42,flush:22,focus:[24,47],folder:7,follow:[3,4,5,10,15,17,21,24,27,30,31,34,35,36,38,40,41,42,43,44,45,46,47],foo:[28,29,42],forbid:3,forc:[3,10,12,15,19,22,28,35,37,42],forcefulli:44,forev:35,forget:42,fork:[31,40],form:[0,4,27,28,42,43],format:[7,21,27,29,30,31,35,41,42,43,46],forward:18,found:[2,4,27,35,42,46],foundat:1,four:[10,28,32,35,37,42,43],fourth:28,fprint:[35,44],fragil:42,franklin:1,free:[1,2,5,27],freebsd:37,freeli:[0,4],freenod:21,french:35,frequent:[4,30],fresh:35,fri:42,friend:[10,48],frim:27,from:[0,1,2,3,4,5,6,7,10,15,16,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,37,39,41,43,44,45,46,47,48],front:[10,28,30,31,42,47],ftp:[5,30],full:[3,4,5,24,30,37,42,44,46,47],fuller:1,fulli:[5,35,42,47],fun:[3,47],func:27,func_nam:27,func_tabl:27,function_to_cal:27,further:[29,42],futur:[3,17,29,30,41,42],fwd:18,gain:[0,4,41,48],game:[0,2,4,24,47],garbag:27,gatewai:[24,46,47],gave:30,gayteen:0,gcc:3,geneer:4,gener:[0,1,3,4,19,24,28,29,30,38,41,42,44,47],genkei:29,genrsa:35,geo:28,german:35,get:[6,7,10,21,22,23,27,28,31,32,35,39,48],geteggdrop:[2,4,30],getinfo:42,getop:10,gif:15,git:[2,3,30,40],github:[2,4,30],give:[3,4,10,15,21,28,30,34,35,36,39,41,42,48],given:[4,14,15,16,30,42,46],global:[2,12,16,17,21,22,27,28,33,34,46,48],globalflag:42,gmt:[35,42],gnu:[0,1,3,4,11],goe:[3,10,29,33,34,39,42,44],going:[0,4,15,21,28,31,32,42],gone:[17,42],goober:42,good:[0,15,21,24,28,30,35,42,47,48],got:42,gpl:[0,4],grab:42,grain:28,grant:[29,36,44,47],graphic:44,greater:42,gree:28,greet:[0,2,4,10,28,32],greetmsg:28,greetscript:28,grep:29,ground:35,group:[15,16,35,38,42],grown:0,gseen:[6,20],guarante:[17,32],guess:17,gui:46,guid:[2,3,28,30,31],gunzip:30,guppi:42,gzip:[11,42],had:[3,5,10,34,35,42,47],haha:4,halfop:[10,42,48],hand:[28,35,42],handi:30,handl:[28,29,33,35,41,44,46],handshak:42,hang:[6,14],happen:[28,30,33,35,42],hard:[28,35],harder:28,hardwar:[0,4],has:[0,1,2,4,5,10,14,15,17,21,28,29,30,31,32,33,34,35,36,37,41,42,44,46,47,48],hash:[2,5,19,30],hasn:21,hate:48,have:[0,1,3,4,5,6,9,10,12,15,17,18,19,21,22,24,27,28,29,30,31,32,33,34,35,36,37,39,41,42,44,45,46,47,48],haven:30,head:35,header:[2,4,27,28,31,44],heaven:3,held:46,hello:[17,21,29,30,35,36,42],help:[0,3,13,21,27,28,29,30,33,34,35,37,39,42,43,48],helper:3,henc:[7,27,42],here:[2,4,10,13,14,15,17,18,21,23,28,29,30,33,34,35,42,45,46],herself:4,hidden:[15,30,36],hide:[6,37,42],high:45,higher:[17,19,22,23,30,44],highest:42,highli:[3,21,30],highlight:48,him:1,himself:4,hint:28,his:[21,30],histor:[29,42],histori:46,hit:42,hold:[22,42],hole:35,home:[3,15,16,29,30,44],hook:27,hook_5minut:27,hook_backup:27,hook_daili:27,hook_di:27,hook_hourli:27,hook_idl:27,hook_load:27,hook_minut:27,hook_num:27,hook_pre_rehash:27,hook_read_userfil:27,hook_rehash:27,hook_secondli:27,hook_userfil:27,hope:[30,47],hopefulli:[3,42],hors:30,host:[0,2,4,10,16,21,24,28,33,34,35,44,46,48],hostmask:[28,29,33,34,36,41],hostnam:[6,10,14,29,35,37],hosttarget:[24,46],hour:[6,25,27,33,35,42],hourli:[18,27,35],how:[0,3,6,10,13,14,15,18,21,22,24,28,29,30,31,33,34,35,42,44,45,46,47],howev:[4,7,13,21,29,31,32,35,41,42,44,45],htgt:46,html:[4,37],http:[2,4,6,20,25,30,32,38],hub:[4,22,30,34,35,41,44],hubbot:31,hubcap:48,humor:29,hup:42,hurt:5,iconfig:[3,7,30],idea:[28,30,40],ideal:[41,47],ident:[2,6,7,17,21,29,35,37,41,42],identd:[16,30],identifi:[29,35,41,42,48],idl:[10,27,42],idx:27,ignor:[0,4,13,21,22,28,34,35,36,42,46],ill:42,imag:4,immedi:[21,30,32,41,42],imperson:16,implement:[6,7,16,31,32,35,38,40,41,42,47],implementatino:[],impli:[1,27],importantli:28,improv:[0,4],inact:[10,23],inc:1,incess:0,includ:[0,2,3,4,7,17,25,27,30,31,33,35,36,37,41,42,44,46,47],incom:[15,35,42],increas:[32,35,41],incred:[30,42],independ:7,indic:[21,27,30,42,46],infeas:[24,47],infin:35,infinit:15,info:[3,4,10,12,17,27,30,35],inform:[0,2,3,4,5,6,10,15,25,27,28,29,30,32,34,35,37,38,42,44],infrastructur:44,ing:[17,24,47],init:[21,35,42],init_serv:21,initi:[27,28,30,37,38,42,44],input:42,insecur:10,insensit:42,insert:[10,43],insid:[28,35],instal:[0,4,5,28,29,31,35],instanc:[10,32],instantli:21,instead:[1,4,5,10,15,16,17,22,24,30,35,41,42,44,45,47,48],instruct:[7,30,41],integ:[10,42],integr:2,intend:[3,33,42],intens:21,intent:[24,47],intention:28,interact:[3,4,6,16,17,35,42,44,47],intercept:42,interchang:[31,37],interest:4,interfac:[2,24,42,47],intern:[21,32,35,42,46],internet:[0,4,42,44],interpret:[3,37,42,43],interv:42,introduc:[4,30,42],invalid:42,invers:43,invit:[0,2,4,10,17,24,34,36,38,47],invite:42,invok:42,involv:29,invt:42,ipaddress:42,iptabl:16,ipv4:[30,35,37],ipv4address:42,ipv6:[2,30,35,36,42],ipv6address:42,irc:[0,4,6,15,16,21,24,28,29,30,32,33,34,35,36,37,38,39,42,43,45,46,48],ircawai:42,ircd:[17,21,42],ircii:[23,42],ircnet:[4,10,17,21],ircop:[10,17],ircu2:17,ircv3:[2,32,36,42,45],isn:[6,15,21,22,25,30,33,42],isol:34,isop:10,isoptest:10,isp:30,isset:32,issu:[4,5,16,24,30,32,35,40,42,44,46,47],issuer:44,issupport:32,istn:10,isupport:32,ital:42,item:42,its:[1,2,4,7,10,15,16,17,19,21,22,24,28,29,30,32,34,35,36,40,42,45,47],itself:[15,27,28,29,35,42],itsself:[],j9irk4vs28b0obz9easys4w2ystji3u:47,jan:[42,44],janitor:[15,48],januari:[1,8,9,12,18,20,23,25,42],jkp:30,job:[3,4,29,44],john:1,join:[2,6,10,12,17,18,24,28,30,31,33,35,36,38,39,42,46,47,48],jpk:35,jul:7,juli:0,jump:[21,34,44],jun:45,june:16,jupe:42,just:[0,3,4,5,6,14,15,17,19,22,27,29,30,32,34,35,39,41,42,45,46,47],karma:40,keep:[2,4,10,15,21,23,30,35,47],kei:[2,3,10,17,24,28,29,35,41,46,47],kept:[33,35],keyout:[29,44],keypair:[29,31],kick:[10,17,21,32,35,42,45,48],kicker:42,kiddi:35,kill:[30,42],killer:5,kilobyt:[15,35],kind:42,know:[17,18,21,24,27,28,32,33,34,35,42,45,47],knowledg:0,known:[21,29,35,41,42],kreativrauschen:[6,20],kvirc:44,lag:[35,39],lame:[10,17,34,35,42],lamer:35,lameshar:34,lamest:[10,30,34,35,43],lamestbot:[3,10,18,21,30,34,35,42,43],lang:45,languag:[28,35,36,45],larg:[2,15,17,21,35],larger:[28,41],last:[0,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,30,33,34,35,37,38,39,42,43,44,45,46,48],lastli:42,laston:42,late:42,later:[1,3,6,9,18,19,25,28,30,35,42,44],latest:[4,5,30],launch:30,layer:[29,31],lazi:17,leaf:[34,35,41,44],learn:[17,29,30,35,36,42],least:[4,17,27,30,33,35],leav:[10,21,30,35,39,42,47],left:[17,42],legal:[2,4],len:21,length:[17,21,27,41,42,44],less:[13,39,42],let:[4,6,10,14,18,27,28,30,34,35,36,42],letter:[4,35,48],level:[11,16,29,32,35,48],libera:[2,4,5,21,27,28,29,30],librari:[28,41,44],libssl:[4,30,31],licens:[0,1,4],lieu:42,life:[18,30],light:47,like:[0,1,4,6,9,10,13,15,17,19,27,28,29,30,35,36,37,39,40,41,42,44,46,47,48],limbo:35,limit:[2,6,10,15,17,21,34,37],lindex:42,line:[2,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,34,35,36,41,42,44,45,46,47],link:[0,2,3,4,5,6,7,15,22,23,27,35,36,38,41,44,45],linux:37,list:[0,4,6,10,14,15,19,21,22,24,25,27,28,29,30,31,32,34,35,36,38,39,44,46,47],listen:[29,30,34,35,37,44],liter:[27,42],littl:[3,5,15,24,30,34,45],llama:34,llamabot:[30,35],load:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,32,34,35,41,42,47],loadmodul:[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,35,41,47],lobster:41,local:[15,28,30,35,39,40,42,44],localfil:6,locat:[2,4,23,28,29,31,35,44],log:[0,2,4,10,19,24,27,30,32,40,41,42,47],logfil:[25,27,30,35,45],logfilenam:35,logflag:35,logic:42,login:[30,35,41,46],logmod:27,logsiz:35,longer:[3,5,15,17,19,27,30,31,42],look:[0,4,5,6,10,20,25,26,28,29,31,32,35,36,41,42,44,47],lookup:[14,35,37,42],lose:10,lost:42,lot:[5,17,28,30,32],low:[21,23],lower:21,lowercas:21,lsa:15,luck:[30,47],lurk:2,mac:37,machin:[3,4,16,30,35],macro:27,made:[0,1,3,4,5,10,22,40,42,44,47],magic:28,mai:[1,4,5,10,11,15,16,17,23,28,30,34,35,37,38,42,45,46,47],main:[7,28,30,31,32,39],maintain:[2,16,30,32,45,46],mainten:48,major:[27,30,42],make:[0,2,3,4,5,6,7,10,13,15,19,21,22,24,27,28,29,30,31,35,37,38,40,42,44,45,47],makefil:[3,27],making_modulenam:27,man:35,manag:[2,4,6,15,24,31,47],mandatori:42,mani:[4,5,10,14,15,17,21,27,29,30,31,34,35,42],manipul:[2,35],manpag:35,manual:[4,29,34,35,37,42,44,46],mar:37,march:[33,43,48],mark:[15,36,42,48],mask:[15,21,28,35,46],masquerad:35,master:[15,29,30,33,34,35,42,43,48],match:[1,2,10,15,17,27,28,33,35,41,44,46],math:42,matter:[1,14,28,29],max:[15,17,18,21,23,35],maxdepth:[],maxim:35,maximum:[10,14,15,17,18,21,23,35,41,42,44],maxsend:14,mayb:[28,35],mco:[35,42],mcobx:30,md5:[6,9],mean:[15,17,21,28,29,32,33,34,35,36,37,41,42,44,46],meaning:[24,42,47],meaningless:48,measur:21,mechan:29,meet:44,mem:42,member:[10,27,32],memberlist:42,memori:[27,42],mention:27,meridian:35,messag:[4,10,21,27,28,30,32,35,36,38,39,41,43,45,46],method:[4,6,9,16,17,19,24,28,30,31,41,45,47],midnight:35,might:[4,17,23,27,35,42,44],migrat:5,militari:35,milk:48,min:35,miniatur:39,minimum:[0,10,42,46],minor:[27,42],minu:10,minut:[4,10,17,23,27,29,30,33,35],mirc:[21,42],misc:[35,42],miscellan:2,misnom:42,miss:[4,30,32,42],mix:[10,17],mkcoblx:35,mkdir:6,mnnrrpp:42,mnot:22,mnt:30,moc:42,mod:[3,6,7,20,24,27,35,42,46],mode:[4,5,10,13,17,21,24,27,29,32,33,35,36,38,47],mode_proc:42,mode_proc_fix:42,modechang:42,moder:[24,29,46,47],modern:[16,41],modes_per_line_max:17,modif:[5,30,42],modifi:[2,6,14,17,28,32,35,42],modul:[0,2,4,30,32,34,36,41,47],modular:2,module_clos:[],module_depend:27,module_entri:27,module_expmem:[],module_find:27,module_load:27,module_nam:27,module_regist:27,module_renam:27,module_report:[],module_start:[],module_t:[],module_undepend:27,module_unload:27,modulenam:[7,27],moment:[17,30,31],monitor:[4,29,33,36,38],month:[35,42],moo:42,more:[3,4,5,6,13,15,17,20,27,28,29,30,31,34,35,36,38,40,41,42,44],moreov:35,most:[0,2,4,5,16,17,21,27,28,29,30,31,35,36,39,42,46,47],mostli:[24,42,47],motd:[35,43],mount:23,move:[3,4,15,21,30,42,47],mpj:42,mrlame:[30,35],mrslame:[30,35],msg:[4,6,17,20,21,29,30,35,36,39,41,46],msgid:46,msgm:[21,42],much:[2,3,24,27,30,39,42],multi:30,multipl:[0,2,4,16,28,30,34,35,36,42,46],must:[1,2,3,4,10,14,16,17,21,23,27,29,30,31,32,34,35,41,42,44,46],mydir:15,myownevent123:42,myproc:42,mytag:42,myvar:45,myword:17,name:[3,4,6,8,15,21,27,28,29,30,31,32,35,46],nano:30,nat:[16,35,37],natur:46,nearli:7,necessari:[10,31],necessarili:42,need:[0,3,4,10,14,16,17,21,27,28,29,30,31,32,34,35,37,41,42,44,46,47,48],needal:42,needop:42,neg:[14,35,42],negcach:14,negoti:[42,44],net:[1,3,17,21,24,30,32,38],netbsd:37,nethack:48,netsplit:[16,17,35,36,42],network:[0,2,4,17,21,35,42,43],never:[4,5,10,35,42],new_module_nam:27,newer:[5,30],newhandl:42,newidx:42,newnick:42,newus:[30,35],next:[5,10,15,21,27,28,30,31,35,42],nfree:27,nice:27,nicebot:30,nick:[10,17,21,25,28,29,30,35,48],nicknam:[6,21,28,29,30,32,35,43,45,46,48],nickserv:[2,44],nist256p:29,nkch:42,nmalloc:27,no_irc:[6,21],nobodi:[15,28],node:[29,44],nodesynch:10,noemail:4,non:[3,10,14,16,17,21,27,29,33,34,42,44,47],none:[8,9,10,12,14,18,19,20,21,23,26,42],noout:29,noqueu:42,nor:16,normal:[0,4,6,13,14,15,16,21,27,28,31,35,42,44,45,46,47],notabl:47,notat:35,notc:42,notcproc:42,note:[2,3,6,7,9,10,14,17,19,21,22,27,29,30,32,34,35,41,44,46,47],notebox:42,notefil:[18,42],notepad:30,noth:[27,35,42,47],notic:[2,13,15,28,34,35,42,47],notif:42,notifi:[18,21,30,35,36,38,42],nots:1,nov:34,novemb:[22,38],novic:[0,4],now:[3,5,15,16,17,28,29,30,31,34,35,37,41,42,46,48],ntik:42,number:[2,10,15,17,18,19,21,23,24,27,30,31,34,35,41,42,44,46,47,48],numer:[29,31,42],nxdomain:14,oauth:47,obtain:[2,31,44],obvious:[33,42],occur:[17,28,42],occurr:27,octal:35,octob:[10,19,21,35],off:[10,16,17,21,30,34,35,39,42],offer:[30,31,32,46,47],offici:[2,4],offlin:42,offset:35,often:[4,6,14,29,35,46],oident:16,oidentd:16,okai:35,old:[6,19,21,30],old_module_nam:27,older:[4,37,42],oldest:[2,42],oldhandl:42,omin:28,omit:[42,44],onc:[4,10,15,17,19,21,28,29,30,40,42],one:[4,10,15,16,17,21,27,28,29,30,31,33,34,35,36,39,40,41,42,44,45],ones:[14,22,34,37,42],onjoin:18,onli:[3,4,5,6,7,10,15,16,17,18,20,21,22,25,26,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],onlin:[6,15,18,29,32],opchar:17,open:[16,29,35,39,40,42,44],openbsd:37,openssl:[2,3,4,19,29,30,31,35,44],oper:[4,13,21,28,35,37,42,43],opped:[10,42,48],opping:[0,4],oppos:42,ops:[10,32,42,48],optim:[6,21],optino:38,option:[1,3,4,7,10,15,16,19,21,29,30,35,44,47],order:[4,14,28,32,35,41,42,44,46],ordinari:[42,44],org:[2,4,5,6,25,28,30,31,34,35,42],origin:[1,21,30,40,42],oss:16,other:[0,1,4,6,9,10,14,15,16,17,18,19,21,22,27,28,29,30,31,33,34,35,36,37,38,39,41,42,43,44,45,46,47,48],otherdir:3,otherwis:[3,4,12,15,28,32,33,34,35,37,41,42,44,46],our:[30,34,42],ousterhout:1,out:[0,3,4,23,25,28,29,30,34,35,39,41,42,44],outform:29,outgo:[35,42,45],output:[2,3,27,29,31,41,43,45,46],outsid:[19,31,35],over:[15,21,24,27,28,30,35,37,42,44,45,47],overal:32,overhead:7,overrid:[22,37,44],overridden:17,overwrit:[16,30,42],overwritten:[5,35,42],own:[1,7,15,16,21,22,28,29,30,31,38,42,44,45,47],owner:[4,10,30,35,39,42,48],p_tcl_hash_list:27,packag:[1,3,4,30,31],pad:42,page:[30,40],pai:[5,32,42],pain:[23,30],pair:[29,31,32,42,44,46],paragraph:3,paramet:42,paranoid:[22,35],pars:42,part:[0,4,21,24,28,35,36,42,44,45,47],parti:[2,5,12,30,34,35,36,42,44,48],particular:[5,29,35],partproc:42,partylin:[2,4,6,12,30,31,32,34,35,37,41,42,44,45,46,47,48],pass:[28,29,30,32,37,39,41,46],passiv:34,passthru:35,password:[5,6,9,17,19,21,22,29,30,34,35,36,39,41,44,47],past:[1,4,27,35],patch:[2,37,42],path:[2,3,15,16,30,31,42,44],pathnam:42,patient:15,pbk:41,pbkdf2:[2,5,6,41],peer:[21,35,44],pem:[29,35],penalti:21,pend:[6,10],peopl:[4,10,15,16,17,18,21,22,28,30,35,36,39,42,43,48],per:[17,42,46],percent:43,perfect:32,perform:[0,3,4,5,10,30,42,48],perhap:30,period:[6,14,30,42],perm:35,perman:[10,33,35,42],permiss:[4,35,41],permit:42,perorm:2,persist:30,person:[4,28,30,35,42],phew:30,phrase:42,physic:34,pick:42,pictur:5,pid:[30,35,42],pidfil:35,piec:[3,28],ping:13,pipe:34,pl1:42,place:[1,3,5,7,10,15,17,28,30,33,35,42,44,47],plain:[29,35,44],plaintext:[29,42,44],plan:[4,28,42],platform:[0,4,24,42,47],pleas:[4,5,6,7,9,10,16,19,21,31,35,38,42],plu:[10,21,35,42,44],pmsg:28,point:[3,6,21,26,30,34,35,42],pointer:[1,3,4,36,43],popul:46,popular:[0,4,5,30,35],port:[1,5,14,16,21,22,29,30,31,34,35,37,44],portabl:42,portion:[3,7,10,42],portrang:35,posit:[27,35],posix:42,possibl:[3,10,13,15,21,29,31,35,37,38,39,42,44,46],potenti:[5,16,28,42,46],pour:40,power:[4,36],practic:[41,42],pre:[42,44],preced:[30,42,44],prefer:[35,37,44],prefix:[5,17,21,28,31,35,39,44,46,47],preinit:42,prematur:30,prepar:34,prepend:35,prerehash:42,prerequisit:2,prerestart:42,prerout:16,present:[2,6,28,29,32,37,42,46,47],preserv:30,pretend:47,pretendnet:31,pretti:[0,39],preval:29,prevent:[0,4,10,17,18,24,29,30,34,37,42,47],previou:[1,3,4,5,19,30,42,47],previous:[5,30,42],primari:[21,35],prime256v1:29,prime:35,printf:27,prior:[3,29,30,32,41,44],prioriti:42,privat:[18,22,28,29,30,31,35,39,42,44],privatekei:[29,31,35,44],privileg:[0,4,16,48],privmsg:[10,28,29,42],probabl:[21,29,30,31,42],problem:[30,35,37],proc:[21,27,28,46],proce:42,procedur:[2,22,32,46,48],process:[0,3,4,5,11,15,16,23,29,30,34,41,42,44],procnam:[28,42,46],produc:[35,42],program:[0,2,4,16,29,30],progress:15,prohibit:35,project:[2,40,47],prompt:[3,4,32],promptli:30,proper:[37,42],properli:[5,30,31,34,35],protect:[0,2,3,4,10,19,21,29,30,33,35,41,42,44,48],protectfriend:10,protecthalfop:10,protectop:10,protocol:[31,35,38,42,44],prove:30,provid:[0,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,27,29,30,35,37,38,40,42,44,46,47],pseudo:42,pub:[4,5,21,29,32,42],pubkei:29,publicli:25,publish:35,pubm:[21,42],pull:[4,40,41],punish:[10,42,48],purpos:[0,1,6,25,26,34,35,42],push:[40,42],put:[1,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,30,35,42,44],putlog:[21,27,28],putquick:21,putserv:[10,28,29],putti:29,pwd:[6,30],quakenet:[4,21],qualifi:35,quann:[6,20],queri:[14,16,32,37],question:[4,29],queu:[15,21,42],queue:[21,27],quick:[2,27,30,35],quicker:30,quickli:[2,35],quiet:[21,35,48],quit:[4,6,21,30,35,42],quot:[42,46],quota:35,raid:[24,47],rais:[10,21],ram:35,rand_max:42,random:[10,21,34,42],rang:[30,35],rate:21,rather:[5,42,44],raw:[32,35,44],rawt:42,rcvd:42,reach:[17,21,35],react:[28,32],read:[0,2,3,4,6,7,16,27,28,29,30,31,35,42,43,47],readabl:42,readm:[2,3],readonli:27,real:[21,27,29,42],realli:[28,30,35,45],realnam:[21,42],reason:[4,27,29,30,34,35],reboot:[16,29],receiv:[14,15,21,23,29,34,42,46],recent:[4,30,42,44],recev:[],recipi:42,recogn:[17,21,29,48],recom:[],recommend:[4,5,10,23,27,30,41,42,45,46],recompil:[17,30],reconnect:[22,42],record:[2,22,27,32,36,48],redirect:16,reduc:[27,46],refer:[27,28,31,35,42],refin:28,reflect:[5,42],refresh:[42,46],regardless:42,regist:[2,10,29],regular:[10,42,44],regularli:36,rehash:[7,27,28,29,35],reiniti:42,reject:[21,34,35],rejn:42,rejoin:[30,42],rel:[14,27,30,42],relai:[0,4,34,35],relat:[1,6,10,28,37,42],releas:[0,1,30,41,42],relev:[4,27,30],reli:[29,42],reliabl:[32,42,46],relink:34,relinquish:42,reload:29,rem_builtin:27,rem_tcl_command:27,rem_tcl_int:27,rem_tcl_str:27,remain:[10,33,42],remaind:[15,46],rememb:[10,28,29,30],remind:35,remot:[15,34,35,42,43],remotebotnam:42,remov:[5,10,15,19,27,29,30,33,36,37,41,45,46,47],renam:[2,15,27,30,35,42],render:[5,24,47],repeat:[4,32,42],replac:[10,21,27,29,35,42,43,47],repli:[6,13,14,16,17,32,35,42],replic:[46,47],repo:40,report:[6,15,25,27,30,45],repositori:[4,30],repres:[42,46],req:[29,35,44],request:[0,4,5,7,10,13,15,17,21,30,32,33,35,37,38,40,42,44,45,47],requir:[2,4,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,35,41,44,46],reread:42,resend:[14,42],reserv:[30,35,39],reset:42,resolut:35,resolv:[6,14,35,42],resourc:27,respect:[14,37,42,43],respond:[10,30,42],respons:[21,32,42],rest:[3,27,34,35,41,42,46],restart:[2,3,4,5,7,28,30,35],restrict:[1,15,16,21,35,42,43,47],result:[21,32,33,35,37,42],resum:42,resync:22,retain:42,retri:23,retriev:[6,18],retrydelai:14,reus:[5,42],reveng:10,revengebot:10,revers:[41,42],revert:42,review:[29,31],revis:[0,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,33,34,35,37,38,39,42,43,44,45,46,48],revok:[21,35],rfc1459:[38,42],rfc2812:38,rfc:[17,21,24,42,47],rfc_compliant:42,rich:[0,4,30],right:[6,15,16,26,28,30,42],rijndael:19,risk:[1,21],rizon:21,rmdir:6,rmst:46,robei:[1,3,4,36,43,48],robot:36,roomsstat:24,roomstat:[24,47],root:[15,16],round:[19,41],rout:[16,42],routin:[17,35,42],rsa:35,rule:30,run:[2,3,4,5,7,10,16,21,27,28,29,30,31,32,34,35,41,43,44,46],s_client:44,safe:[19,29,30,31,41,47],sai:[4,10,15,28,31,34,42],said:[28,34,42],sake:47,salt:[28,41],same:[0,3,4,5,7,10,11,16,17,27,28,30,32,34,35,38,41,42,43,44,45,46],sampl:[10,30,47],sane:21,sanitycheck:35,sasl:[2,30,36,38],save:[5,6,10,11,12,22,34,35,36,41],scan:30,scenario:[31,32,34],schat:[35,44],schedul:42,scheme:1,scope:31,screen:[4,40,43],script:[0,2,3,4,7,10,21,29,30,33,36,37,42,45,46,47,48],scripter:34,sdcc:44,sdebug:3,seamless:41,seamlessli:19,search:[27,29,42],sec:35,second:[4,10,13,14,17,21,23,27,28,35,45],secondli:42,secret:10,section:[5,10,17,21,24,28,30,34,35,42,47],secur:[0,2,4,6,9,19,29,30,34,35,36,41,42],see:[0,2,3,4,5,6,10,15,17,21,24,25,27,28,29,30,31,32,34,35,37,39,40,41,42,43,46],seen:[2,6,10,32,35,42],selecet:42,select:[4,30,35,36,40,42],self:[2,21,31,35,44],send:[4,6,11,15,17,18,21,22,23,27,28,30,32,34,37,42,45,46],sender:42,sens:[0,4],sensit:41,sent:[6,15,17,22,25,29,32,35,38,39,42,44,46,48],separ:[3,7,21,30,34,35,36,37,38,42,45,46],septemb:14,seri:[30,42,44],serv:35,server:[2,5,6,7,10,13,14,15,16,17,19,24,25,27,29,30,35,36,37,38,44,45,46,47],serverlist:42,serverop:10,serverror:21,servic:[6,10,16,24,29,32,42,44,47],servivc:42,session:[4,37,38],set:[0,1,2,3,4,5,6,10,11,12,13,14,15,16,17,18,19,21,22,23,24,27,28,31,32,33,34,36,38,39,41,43,45,46,47,48],setcap:16,setnam:[36,38],setup:[4,6,7,30,35],seven:[10,42],sever:[0,4,13,27,30,31,38,42,45],sexystuff:28,sha1:44,sha1sum:29,sha256:19,shall:35,share:[0,2,4,6,10,11,23,27,35,36,42],sharebot:[34,35,42],sharefail:23,she:42,shell:[0,3,4,16,29,30,35,42],shorter:10,should:[1,3,4,5,10,12,13,14,15,17,19,21,22,24,27,28,29,30,34,35,37,39,41,42,44,46,47],shouldn:16,show:[4,6,10,15,25,28,34,35,42],shown:[15,30,35],shutdown:42,shutdownreason:42,side:[35,42,44,47],sidenot:31,sighup:42,sigil:42,sigkil:42,sign:[21,29,31,35,42,43,44,47],signal:42,signific:[4,6],significantli:[32,46],signoff:42,sigquit:42,sigterm:42,silent:35,simialar:[],similar:[4,10,29,30,35,39,40,42,45],similarli:46,simpl:[4,27,28,29,30,42],simpli:[4,5,29,30,31,38,42,47],simplifi:42,simul:[35,42],simultan:[15,23,42],sinc:[0,3,5,17,30,34,35,36,37,42,44,45],singl:[16,17,29,42,46],sit:[0,4,10,35,41],site:[6,48],situat:[32,34],six:42,size:[15,23,27,35,42],skim:4,skip:[30,42],slash:[30,39],slave:34,slennox:30,slow:[15,30,35],slower:35,small:[3,23,34,45],smaller:3,smile:3,snapshot:[2,30],snowbot:15,snt:29,sock:[27,35],socket:[16,27,31,42,44],softwar:[0,1,2,4],solut:41,some:[0,4,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,30,32,33,34,35,36,37,38,42,44,45,47,48],someircnetwork:35,someon:[4,10,17,28,30,31,42,46],someth:[4,28,30,40,42,47],sometim:[4,21,30],somewher:[3,35],song:42,soon:[10,42],sort:[0,4,33],sound:28,sourc:[1,3,4,5,6,7,27,28,31,35,40,42,44,45],space:[0,23,35,38,42],spawn:0,spec:32,special:[34,42],specif:[6,10,14,16,17,19,21,24,30,34,37,38,42,44,46,47,48],specifi:[10,14,15,16,18,21,22,27,29,30,33,35,36,37,41,42,44,46],spectrum:[24,47],spent:[30,42],split:[10,17,37,39,42,43],splt:42,spoiler:47,spoken:42,spoof:16,spread:35,squar:37,squelch:21,src:[3,7,17,27],ssh:30,ssl:[2,3,4,5,21,29,30,31,36,42],sslcert:[3,31,35,44],sslinc:44,ssllib:44,sslport:44,sslsilent:[3,44],sssss:[],stabil:23,stabl:[2,4,30],stack:[17,37,42],stackabl:[],stage:27,stai:42,stall:42,stand:[0,4,30],standard:[14,16,17,23,27,28,38,42,44,47,48],start:[2,3,5,6,9,16,19,21,26,28,29,34,35,38,39,41,42,43,46,47],starttl:44,startup:[2,41,42],stat:6,state:[4,42],statement:42,statist:[6,15,25],statu:[0,2,4,10,24,27,31,35,45,46,47],status:32,statuslog:10,stb:21,stdio:27,stdlib:27,stdout:27,stealth:[30,35],step:[2,3,5,27,30,47],stick:33,sticki:[33,42],still:[1,4,5,10,15,22,30,31,32,35,36,42,47],stone:21,stop:[0,10,15,17,27,29,42,46],stopnethack:[10,48],storag:[6,12,41],store:[5,6,10,12,15,18,24,25,28,30,32,34,41,42,46,47],str_dir:27,str_protect:27,stream:[24,47],street:1,strftime:35,string:[2,17,27,28,29,35,41,46,47],strong:35,strongli:[2,4,30],stuff:[2,4,27,28,30,35,42],style:[33,42],sub:[15,42],subdirectori:[15,42],subject:44,sublist:42,submit:[2,42],subscrib:[46,47],subsequ:42,substitut:[2,35],succeed:42,success:[27,30,42],successfulli:[4,27,42,46],sudo:[16,30],suffic:28,suffici:31,suffix:[7,35],suggest:[5,27],suit:[16,30],suitabl:46,sum:28,summar:21,sun:35,sundai:42,supplant:42,supplementari:32,suppli:35,support:[0,2,3,4,5,6,8,10,11,14,16,17,18,21,22,23,29,30,31,33,35,36,42,45,47],sure:[4,10,27,28,30,31,34,35,42,47],symbol:[31,42],synchron:44,syntax:[5,29,35,44,48],sys:27,system:[2,3,7,14,15,16,27,30,35,36,37,42,43,44],systemctl:29,systemd:[3,4],tab:27,tabl:[27,38,42],tag:[15,36,38,46],tail:29,take:[3,4,5,6,15,19,21,25,28,30,35,41,42,44],taken:[27,42],takeov:17,talk:[28,31,32,36,39],talli:27,tar:[4,7,30],tarbal:[0,30],target:46,task:[0,2,4,34],tcl:[0,1,2,3,4,6,10,11,21,27,28,30,33,35,36,37,44,45,47],tcl_cmd:27,tcl_int:27,tcl_string:27,tclsh:4,tcltk:4,tcp:[2,16,37],team:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,33,34,35,36,37,38,39,40,41,42,43,44,45,48],technic:47,techniqu:45,tell:[15,28,29,30,31,32,34,35,42,47],telnet:[2,29,30,34,36,37,39,41,42,43,44],temp:42,templat:40,temporari:[10,23,25,33,35],ten:29,term:[2,28,31,42],termin:[4,5,42],test:[28,30,48],text:[4,10,21,27,29,35,43,44,45,46,48],textfil:2,than:[4,10,13,15,17,30,31,35,41,42,44],thank:4,thee:[29,42],thei:[0,3,4,5,7,10,12,13,17,18,21,22,27,28,29,30,31,32,33,34,35,41,42,44,46],them:[0,1,3,4,5,7,10,12,13,14,15,17,18,21,22,23,27,28,29,30,31,34,35,36,37,38,41,42,45,47,48],themselv:[17,30,34,42,45],therebi:[45,47],therefor:[6,17,30,35,42],thi:[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47,48],thing:[3,4,6,24,26,27,28,29,34,35,42,47],think:[40,48],third:[28,34],thorough:[27,29,31,47],those:[1,3,7,11,15,21,27,28,29,30,42,45,46,47],though:[15,21,28,30,42,44],thr:35,three:[21,29,32,33,34,35,42],through:[4,10,15,21,24,28,31,36,37,38,39,42,47,48],throughout:27,thse:[],thu:[16,28,32,37,41,42],tidi:27,ties:42,till:[],time:[0,3,4,10,14,15,16,17,19,22,23,28,29,30,31,32,33,34,35,36,38,39,41,43,44,45,47],timeout:[6,14,21,23,35,46],timestamp:[35,42],timezon:35,tip:[2,42],titl:48,tiwtch:6,tls:[42,44],tmi:46,tmp:[23,42],toctre:[],todai:42,togeth:[0,2,4,21,28,34,35,36,38,42],token:47,told:28,ton:24,too:[15,17,21,23,27,35,42],tool:[3,30],top:[3,4,28,40,42],topc:42,topic:47,total:[10,27,36,42],tout:42,toward:28,trace:21,track:[2,3,15,24,27,29,42,47],tradit:[24,37,45,46,47],tradition:16,traffic:[3,35,45],trail:27,transfer:[2,6,7,11,15,22,30,34,35,37,42,44,48],transit:[19,41,42],transmit:21,transpar:35,transport:31,treat:[42,47],tree:[0,4,30],tri:[27,35,42],trick:[28,45],trigger:[10,21,27,28,32,42,46],troubl:[14,35],troubleshoot:[4,30],truncat:46,trust:[4,35,48],ttl:14,turbo:[23,30],turn:[10,16,21,35,42],tutori:[2,31],twcmd:[24,47],twice:42,twitch:[2,6,36],twith:46,two:[4,6,17,22,28,30,32,33,34,35,41,42,44,45],type:[3,4,6,7,10,12,17,21,24,27,28,29,30,31,32,33,34,35,36,37,38,39,44],typic:[15,24,35,36,39,42,47],typo:42,ubuntu:31,ufl:42,ugli:15,uglyman:15,uhost:[28,42],uid:[35,44],umod:21,unabl:[17,30,34,37,42,47],unaccess:36,unavail:[21,35],unban:[10,35,42],unbind:[17,35,45,46],uncertainti:46,uncom:[29,31,35,41],under:[0,4,30,36,42],underli:42,underlin:[42,43],undernet:[4,17,21,42],understand:[35,42],understood:21,unexpect:42,unfortun:29,unhid:6,unimport:35,unintend:46,uniqu:[35,42,46],univers:35,unix:[0,3,15,16,30,36],unknown:42,unld:42,unless:[17,21,28,30,33,35,42],unlik:[3,36],unlimit:34,unlink:[23,35],unload:[27,42],unoffici:37,unpack:0,unreach:34,unrealircd:[17,42],unreli:[24,46,47],unrest:0,unset:42,unshar:[6,48],unstick:33,unsticki:33,unstuck:42,unsur:30,untar:5,until:[7,10,15,33,35,42],unzip:[5,30],updat:[4,5,19,27,30,32,35,36,41,42,46],upgrad:[2,41,44],uplink:42,upload:[15,30,36,42,45],upon:[0,4,46,48],upper:14,uptim:[2,6],url:[35,42],usa:1,usabl:[6,15,35],usag:[2,4,6,27,35,42],use:[0,1,3,4,5,6,7,9,10,12,13,14,15,16,17,19,21,22,23,27,28,29,30,31,33,34,35,37,39,41,42,43,44,45,46,47,48],used:[0,2,4,10,11,13,15,19,21,27,28,29,30,31,33,34,35,36,37,39,41,42,43,44,45,46,47,48],useful:[1,4,10,23,30,34,42,44,45],useless:[5,24,47],user:[0,2,3,4,5,6,7,9,10,11,12,13,16,17,18,19,20,21,22,23,24,27,28,30,31,32,33,35,36,37,39,40,41,43,44,45,46,47],userban:10,userexempt:10,userfil:[0,2,4,5,6,9,10,11,19,22,23,27,29,30,34,35,41,42,45],userflag:17,userhost:46,userinfo1:35,userinfo:[13,42],userinvit:10,userlist:[6,17,20,22],usernam:[16,29,30,35,46,47],usernotic:[24,46],userst:[24,47],uses:[3,6,17,21,23,27,28,29,30,31,33,35,41,42,44,47,48],using:[1,3,4,6,7,9,10,15,16,17,19,21,27,28,29,30,33,34,35,37,41,42,44,45,46,47],usrntc:46,usst:46,usual:[4,29,30,31,33,37,40,41,42,44,47],utc:35,util:3,utim:28,vagu:30,vali:42,valiant:[0,4],valid:[3,10,21,27,34,35,36,42,44],valis0:42,valu:[10,13,14,17,21,24,27,28,35,41,43,44,46,47],vari:[42,48],variabl:[2,5,10,11,12,13,14,15,16,17,18,19,21,22,23,27,28,32,35,37,43,46],variable_nam:27,varieti:[0,4],variou:[1,27,30,33,35,42],verbos:42,veri:[4,6,16,20,21,28,35],verif:[21,35,44],verifi:[21,29,35,44],version:[0,1,2,3,4,5,13,17,25,27,28,37,38,43,44,46],vertic:42,vhost4:[30,35,37],vhost6:[30,35,37],vhost:[30,35,37],via:[2,3,4,6,11,16,17,20,22,27,28,29,30,32,33,34,35,36,37,38,39,41,43,44,46,47],video:42,view:[5,7,19,29,30,36,42,46],viewer:46,vim:30,vip:[46,47],virtual:35,visibl:42,visit:[5,47],vista:37,voic:[0,2,4,10,29,42,48],wai:[1,3,16,21,24,27,28,29,30,31,32,33,34,35,39,41,42,44,47],wait:[6,14,15,17,21,23,30,32,35,42],walk:31,wall:42,wallop:[35,42],want:[0,3,4,6,10,12,14,15,17,18,21,23,27,28,29,30,34,35,37,42,44,45],war:0,warm:40,warn:[4,16,28,42],warranti:1,washalfop:48,wasn:42,wasop:[10,17,48],wasoptest:10,watch:[39,46],web:[2,6,24,35,46],webpag:2,websit:30,week:42,weekdai:42,welcom:28,well:[1,24,28,29,30,31,32,35,41,42,44,47],were:[1,16,17,30,33,34,35,37,41,42,47],west:35,wget:30,what:[0,1,2,5,6,10,15,17,21,25,28,29,30,35,38,39,41,42],whatev:[1,3,28,35,36,42,43],when:[3,4,6,7,9,10,12,15,16,17,21,22,27,28,29,30,32,33,35,37,39,41,42,44,46,47],whenev:[21,27,32,34,42,44],where:[4,6,10,14,15,18,21,27,28,29,30,31,32,35,36,41,42,44,46],wherea:42,wherev:37,whether:[35,37,42],whew:28,which:[3,5,6,10,12,14,15,16,21,22,27,28,29,30,32,33,34,35,37,39,41,42,43,44,45,46,48],whichev:33,whisper:[24,46],whitespac:42,who:[10,15,17,21,28,30,32,35,39,42,48],whoi:[29,35],whole:27,whose:[33,42],whox:[36,42],why:[28,30,42],wide:[39,44],width:43,wild:42,wildcard:[10,28,29,42,46],window:[2,29,37],wise:[4,35],wish:[3,5,7,16,17,25,27,30,33,34,35,42,46],within:[6,15,27,30,31,33,35,38,42],without:[0,2,4,5,6,9,10,13,19,27,28,29,30,31,34,35,36,38,41,42,44],wizard:31,won:[6,10,22,27,28,30,33,34,35,42,44,46],woobi:[2,3,6,27],word:[15,17,29,30,42,46,47],work:[3,5,6,10,13,15,19,20,22,27,28,29,30,33,34,35,37,38,40,41,42,44,45,46],workaround:[24,32],world:[0,2,4,31,35],worri:24,worth:3,would:[4,5,13,28,29,30,31,32,34,35,42,43,44,46,47],wouldn:35,write:[1,2,6,7,26,30,35,41,42,47],written:[0,27,30,42,47],wrote:28,wspm:46,wspr:46,wth:[],www:[2,4,6,20],x509:[29,35,44],xfer:[23,48],xtra:42,xvf:30,xxd:29,year:[0,4,30,35,42],yes:[28,31,42],yesterdai:35,yet:[4,21,30,35,42],yoru:29,you:[0,1,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47,48],you_want_to_export:27,your:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,34,35,36,37,39,40,41,42,44,47],yourbot:45,yourbranchnam:40,yourconfig:3,youreggdrop:29,youreggdropconfignameher:29,yourself:[7,29,30,40,41,44],yourusernam:40,yyyymmdd:35,zero:42,zip:30,zomg:[],zxvf:30},titles:["About Eggdrop","Boring legal stuff","Eggdrop, an open source IRC bot","Installing Eggdrop","README","Upgrading Eggdrop","Modules included with Eggdrop","Eggdrop Module Information","Assoc Module","Blowfish Module","Channels Module","Compress Module","Console Module","CTCP Module","DNS Module","Filesys Module","Ident Module","IRC Module","Notes Module","PBKDF2 Module","Seen Module","Server Module","Share Module","Transfer Module","Twitch Module","Uptime Module","Woobie Module","Writing an Eggdrop Module","Writing an Eggdrop Script","Common First Steps","Setting Up Eggdrop","Enabling TLS Security on Eggdrop","Account tracking in Eggdrop","Bans, Invites, and Exempts","Botnet Sharing and Linking","Eggdrop Core Settings","Eggdrop Features","IPv6 support","IRCv3 support","The Party Line","Patching Eggdrop","Encryption/Hashing","Eggdrop Tcl Commands","Textfile Substitutions","TLS support","Advanced Tips","Eggdrop Twitch Tcl Commands","Twitch","Users and Flags"],titleterms:{"default":45,"function":[27,47],"int":42,"new":42,"return":42,"short":30,"static":7,"super":30,Adding:34,DNS:14,TLS:[31,44],The:[30,39],Using:[32,34],about:[0,37,38,44],account2nick:42,account:[32,42],accounttrack:42,add:[29,42],addbot:42,addchanrec:42,addit:[27,31],address:42,addus:42,advanc:[35,45],api:24,arg1:42,arg2:42,arg:[42,46],argn:42,assign:29,assoc:[8,42],authent:[29,44],auto:4,automat:29,background:41,backup:42,ban:[33,42],banlist:42,banmask:42,base64:42,basic:35,best:32,bind:[42,46],block:42,blowfish:9,boot:42,bore:1,bot:[2,15,34,42],botattr:42,botflag:34,botishalfop:42,botisop:42,botisvoic:42,botlist:42,botnam:42,botnet:[5,31,34,35,44],botnick:42,botonchan:42,botport:42,bottre:34,callev:42,can:[2,7],cancel:15,cap:[38,42],capabl:[32,38],certif:44,chan:[42,46],chanban:42,chandname2nam:42,chanexempt:42,chanflag:42,chang:[5,42],chaninvit:42,chanlist:42,channame2dnam:42,channel:[10,15,29,42,46],chansettyp:42,charact:42,chat4:37,chat6:37,chat:37,chattr:42,check:32,chhandl:42,clear:15,clearqueu:42,cmd:46,command:[4,5,24,42,45,46],comment:42,common:29,commun:31,compil:7,compress:[11,42],compressfil:42,config:[5,15,30,42,45,47],configur:[29,30,31,41],configurearg:42,connect:[31,42],consol:[12,35,42],control:42,core:35,count:42,countus:42,creator:42,crontab:29,ctcp:[13,37],ctime:42,cygwin:3,dcc:[35,42,44],dccbroadcast:42,dccdumpfil:42,dcclist:42,dccputchan:42,dccsend:42,dccsimul:42,dccuse:42,decrypt:42,delchanrec:42,delhost:42,deludef:42,delus:42,desc:[15,42],descript:15,dest:15,destin:42,determin:32,develop:4,die:42,dir:[15,42],directori:[15,35,42],disclaim:47,dname:42,dnslookup:42,docker:4,document:[4,5],download:30,dst:15,dumpfil:42,durat:42,dynam:7,echo:42,edit:[30,47],effort:32,eggdrop:[0,2,3,4,5,6,7,27,28,29,30,31,32,35,36,40,42,46],enabl:[31,32,41,42],encpass:42,encrypt:[41,42],entri:42,erasenot:42,event:42,exampl:34,execut:35,exempt:[33,42],exemptlist:42,exemptmask:42,extend:32,extra:42,featur:36,file:[5,15,30,31,35,42,45,47],filemask:15,filenam:[15,42],filepath:15,fileresend:42,filesend:42,filesi:[15,42],filestat:15,find:2,findus:42,first:29,flag:[15,29,34,42,46,48],flushmod:42,formatstr:42,from:42,ftp:4,gener:31,get:[2,4,15,30,42],getaccount:42,getchan:42,getchanhost:42,getchanidl:42,getchaninfo:42,getchanjoin:42,getchanmod:42,getdccawai:42,getdccidl:42,getdesc:42,getdir:42,getfil:42,getfileq:42,getfilesendtim:42,getflag:42,getlink:42,getown:42,getpwd:42,getudef:42,getus:42,git:4,github:40,global:42,hand2idx:42,hand2nick:42,handl:42,handlen:42,handonchan:42,haschanrec:42,hash:41,help:[2,4],helpfil:42,hide:15,histori:30,host:[29,42],hostmask:42,hostnam:42,how:[2,4,5,7],hybrid:41,ident:16,idx2hand:42,idx:42,ignorelist:42,includ:6,info:42,inform:[7,31],instal:[2,3,7,30,37,44],interfac:41,invit:[33,42],invitelist:42,invitemask:42,ipv6:37,irc:[2,17,31,44,47],ircnick:42,ircv3:38,isawai:42,isban:42,isbansticki:42,isbotnick:42,ischanban:42,ischanexempt:42,ischaninvit:42,ischanjup:42,iscompress:42,isdynam:42,isexempt:42,isexemptsticki:42,ishalfop:42,isidentifi:42,isignor:42,isinvit:42,isinvitesticki:42,isircbot:42,isjup:42,islink:42,ismod:46,isop:42,ispermban:42,ispermexempt:42,isperminvit:42,isset:42,istl:42,isupport:42,isvip:46,isvoic:42,join:[29,32],jump:42,keep:45,kei:[31,42,44],keyword:42,killassoc:42,killban:42,killchanban:42,killchanexempt:42,killchaninvit:42,killdcc:42,killexempt:42,killignor:42,killinvit:42,killtim:42,killutim:42,languag:42,lastbind:42,legal:1,level:42,lifetim:42,limit:[24,42,47],line:[4,39],link:[34,42],list:42,listen:[31,42],listnot:42,loadchannel:42,loadhelp:42,loadmodul:[7,42],localfil:15,locat:30,log:[29,35,45],logfil:42,make:34,manipul:42,mask:42,maskhost:42,masktyp:42,match:42,matchaddr:42,matchattr:42,matchban:42,matchcidr:42,matchexempt:42,matchinvit:42,matchstr:42,md5:42,messag:42,method:29,minut:42,miscellan:42,mkdir:[15,42],mode:42,modifi:45,modul:[3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,35,42],modular:45,module_clos:27,module_expmem:27,module_report:27,module_start:27,module_t:27,monitor:42,more:2,msg:42,must:5,myip:42,name:42,need:7,newban:42,newchanban:42,newchanexempt:42,newchaninvit:42,newer:29,newexempt:42,newignor:42,newinvit:42,newnam:42,nick2hand:42,nick:[42,46],nicknam:[15,42],nickserv:29,note:[18,42],notic:4,notifi:32,numberlist:42,numvers:42,obtain:4,old:[29,42],oldnam:42,onchan:42,onchansplit:42,onelin:42,onlin:42,open:2,optim:15,option:42,output:42,own:[],parti:39,partylin:[15,24,29],pass:42,passwdok:42,password:42,patch:40,path:35,pattern:42,pbkdf2:19,pend:15,permiss:29,port:42,pre:[2,4,31],prefix:42,prepar:31,prerequisit:30,proc:42,procedur:42,protect:31,pushmod:42,putallbot:42,putbot:42,putcmdlog:42,putdcc:42,puthelp:42,putkick:42,putlog:42,putloglev:42,putnow:42,putquick:42,putserv:42,putxferlog:42,pwd:15,queue:42,queuesiz:42,quick:[3,4],quit:15,rand:42,raw:42,read:5,readm:4,reason:42,record:[34,42],refreshchan:42,regist:47,rehash:42,reload:42,reloadhelp:42,remov:42,renam:45,renudef:42,req:42,requir:[3,27,32,42],requisit:[2,4,31],resetban:42,resetchan:42,resetchanidl:42,resetchanjoin:42,resetconsol:42,resetexempt:42,resetinvit:42,restart:[29,42],rfcequal:42,rmdir:[15,42],roomstat:46,sasl:29,save:42,savechannel:42,script:[5,28,32,35,44],second:42,secur:[31,44],seen:20,self:45,sendnot:42,server:[21,31,32,42],serveraddress:42,set:[29,30,35,37,42,44],setchan:42,setchaninfo:42,setdccawai:42,setdesc:42,setflag:42,setlink:42,setown:42,setpwd:42,setudef:42,setup:15,setus:42,share:[15,22,34],show:30,snapshot:4,socklist:42,solo:41,some:2,sourc:[2,15,30],src:42,ssl:[35,44],stackabl:42,start:[4,30],starttl:42,startup:[3,4],stat:15,statu:[32,42],step:29,stickban:42,stickexempt:42,stickinvit:42,still:7,storenot:42,str:42,strftime:42,string1:42,string2:42,string:[42,45],strip:42,stripcod:42,stuff:1,submit:40,substitut:43,support:[32,37,38,44],system:[4,29],systemd:29,tag:[32,42],tagmsg:42,target:42,tcl:[5,24,32,41,42,46],tcp:42,telnet:35,term:34,text:42,textfil:43,thing:2,time:42,timer:42,timerid:[],timernam:42,tip:45,tlsstatu:42,topic:42,track:32,traffic:42,transfer:23,twcmd:46,twitch:[24,46,47],twitchmod:46,twitchvip:46,type:[42,46],unam:42,unbind:42,uncompressfil:42,unhid:15,unixtim:42,unlink:42,unloadhelp:42,unloadmodul:42,unshar:15,unstickban:42,unstickexempt:42,unstickinvit:42,upgrad:[4,5],uptim:[25,42],usag:[15,37,38,41,44],use:[],user:[15,29,34,42,48],userlist:42,userport:42,userst:46,utim:42,validchan:42,valididx:42,validus:42,valu:42,variabl:[42,45],version:[30,42],via:[40,42],washalfop:42,wasop:42,web:47,what:[4,7,27,34],where:2,whom:42,whox:32,why:[],window:3,without:7,woobi:26,write:[27,28],you:2,your:45}}) \ No newline at end of file diff --git a/doc/html/tutorials/firstscript.html b/doc/html/tutorials/firstscript.html index 7ddc58f93..fb00cb559 100644 --- a/doc/html/tutorials/firstscript.html +++ b/doc/html/tutorials/firstscript.html @@ -261,7 +261,7 @@

        Writing an Eggdrop Script © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index 4a8c80084..902477ae6 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -215,9 +215,29 @@

        Systemd Method (Newer Systems)Note the output at the end of the script informing you of the command you can use to start/stop the Eggdrop in thee future

        +
      22. Note the output at the end of the script informing you of the command you can use to start/stop the Eggdrop in thee future. For example, to manually start the Eggdrop, use:

        +
        systemctl --user start <botname>.service
        +
        +
      +

      To stop Eggdrop, use:

      +
      systemctl --user stop <botname>.service
      +
      +
      +

      To rehash (not reload) Eggdrop, use:

      +
      systemctl --user reload <botname>.service
      +
      +
      +

      (Yes, we acknowledge the confusion that the systemd reload command will execute the Eggdrop ‘.rehash’ command, not the ‘.reload’ command. Unfortunately, systemd did not consult us when choosing its commands!)

      +

      To prevent Eggdrop from automatically running after a system start, use:

      +
      systemctl --user disable <botname>.service
      +
      +
      +

      To re-enable Eggdrop automatically starting after a system start, use:

      +
      systemctl --user enable <botname>.service
      +
      +
      diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index d9c1bd41d..43e995a17 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -289,7 +289,7 @@

      No show? © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index 13f99eab0..fe5a6bd35 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -142,7 +142,7 @@

      Protecting Botnet Communications

      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 implementatino 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:

      +

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

      Additional Information © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/accounts.html b/doc/html/using/accounts.html index 635bbd06d..d69a1a67d 100644 --- a/doc/html/using/accounts.html +++ b/doc/html/using/accounts.html @@ -207,7 +207,7 @@

      Using Accounts with Tcl Scripts © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/bans.html b/doc/html/using/bans.html index bccb67da2..a6ee03996 100644 --- a/doc/html/using/bans.html +++ b/doc/html/using/bans.html @@ -202,7 +202,7 @@

      Bans, Invites, and Exempts © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/botnet.html b/doc/html/using/botnet.html index 9d6abcc86..c7c43f83b 100644 --- a/doc/html/using/botnet.html +++ b/doc/html/using/botnet.html @@ -429,7 +429,7 @@

      Making bots share user records © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/core.html b/doc/html/using/core.html index 9e00c138e..1a4e7cd63 100644 --- a/doc/html/using/core.html +++ b/doc/html/using/core.html @@ -788,7 +788,7 @@

      Scripts © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/features.html b/doc/html/using/features.html index bd4ac4294..6c55f0f14 100644 --- a/doc/html/using/features.html +++ b/doc/html/using/features.html @@ -171,7 +171,7 @@

      Eggdrop Features © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/ipv6.html b/doc/html/using/ipv6.html index 2722906a9..ab3185ee5 100644 --- a/doc/html/using/ipv6.html +++ b/doc/html/using/ipv6.html @@ -201,7 +201,7 @@

      Settings © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/ircv3.html b/doc/html/using/ircv3.html index aaf08ba28..b4e56185d 100644 --- a/doc/html/using/ircv3.html +++ b/doc/html/using/ircv3.html @@ -170,7 +170,7 @@

      Supported CAP capabilities © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/partyline.html b/doc/html/using/partyline.html index 93dc1ec45..86da6a12d 100644 --- a/doc/html/using/partyline.html +++ b/doc/html/using/partyline.html @@ -158,7 +158,7 @@

      The Party Line © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/patch.html b/doc/html/using/patch.html index 063847d69..29159db2a 100644 --- a/doc/html/using/patch.html +++ b/doc/html/using/patch.html @@ -168,7 +168,7 @@

      Submitting a patch via GitHub © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/pbkdf2info.html b/doc/html/using/pbkdf2info.html index af1b55ee0..0fccdb074 100644 --- a/doc/html/using/pbkdf2info.html +++ b/doc/html/using/pbkdf2info.html @@ -219,7 +219,7 @@

      Tcl Interface © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/tcl-commands.html b/doc/html/using/tcl-commands.html index fdb2ea9c2..e91d30b1e 100644 --- a/doc/html/using/tcl-commands.html +++ b/doc/html/using/tcl-commands.html @@ -461,7 +461,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>]]
      @@ -2866,7 +2866,7 @@ 

      Removing a bind

      Flag Masks

      -

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

      +

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

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

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

      Some additional examples:

      @@ -2929,7 +2929,7 @@

      Flag Masks|o). It is unknown where and why this practice started, but as a style tip, Eggdrop developers recommend using a ‘*’ to skip processing, so as not to confuse a single “-” meaning “skip processing” with a preceding “-ov” which means “not these flags”.

      +

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

      diff --git a/doc/html/using/text-sub.html b/doc/html/using/text-sub.html index 2eb4ed8f4..a572b3cf6 100644 --- a/doc/html/using/text-sub.html +++ b/doc/html/using/text-sub.html @@ -234,7 +234,7 @@

      Textfile Substitutions © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5.

      diff --git a/doc/html/using/tls.html b/doc/html/using/tls.html index 09531799b..5d11e118d 100644 --- a/doc/html/using/tls.html +++ b/doc/html/using/tls.html @@ -326,7 +326,7 @@

      SSL/TLS Settings © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/tricks.html b/doc/html/using/tricks.html index a63929472..4d86301e0 100644 --- a/doc/html/using/tricks.html +++ b/doc/html/using/tricks.html @@ -175,7 +175,7 @@

      Variables in Your Config © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/twitch-tcl-commands.html b/doc/html/using/twitch-tcl-commands.html index c973faeb1..dde8df8f8 100644 --- a/doc/html/using/twitch-tcl-commands.html +++ b/doc/html/using/twitch-tcl-commands.html @@ -310,7 +310,7 @@

      Bind Types © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/twitchinfo.html b/doc/html/using/twitchinfo.html index 76ba167ed..1c3a2cca1 100644 --- a/doc/html/using/twitchinfo.html +++ b/doc/html/using/twitchinfo.html @@ -190,7 +190,7 @@

      Twitch IRC limitations © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/html/using/users.html b/doc/html/using/users.html index 174947f73..32c1fecc1 100644 --- a/doc/html/using/users.html +++ b/doc/html/using/users.html @@ -263,7 +263,7 @@

      Users and Flags © Copyright 2022, Eggheads. - Last updated on Nov 10, 2022. + Last updated on Dec 12, 2022. Created using Sphinx 1.8.5. diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst index 2f9132808..904867221 100644 --- a/doc/sphinx_source/using/tcl-commands.rst +++ b/doc/sphinx_source/using/tcl-commands.rst @@ -367,6 +367,8 @@ botattr [changes [channel]] Module: core +.. _matchattr: + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ matchattr [channel] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -2890,7 +2892,7 @@ 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. +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". @@ -2932,7 +2934,7 @@ Some additional examples: | ||+b | Checks if the user has the bot flag b | +------------+-----------------------------------------------------------------+ -As a side note, Tcl scripts historically have used a '-' to skip processing of a flag type (Example: -|o). It is unknown where and why this practice started, but as a style tip, Eggdrop developers recommend using a '*' to skip processing, so as not to confuse a single "-" meaning "skip processing" with a preceding "-ov" which means "not these flags". +As a side note, Tcl scripts historically have used a '-' to skip processing of a flag type (Example: -\|o). It is unknown where and why this practice started, but as a style tip, Eggdrop developers recommend using a '\*' to skip processing, so as not to confuse a single "-" meaning "skip processing" with a preceding "-ov" which means "not these flags". ^^^^^^^^^^ Bind Types diff --git a/doc/tcl-commands.doc b/doc/tcl-commands.doc index 8b73f3b70..3436a91ba 100644 --- a/doc/tcl-commands.doc +++ b/doc/tcl-commands.doc @@ -2994,12 +2994,13 @@ 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 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. +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". From 90e8347314ef116f325020797be38cbf288551d0 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 12 Dec 2022 17:46:05 -0500 Subject: [PATCH 138/320] dont forget this little guy --- doc/ACCOUNTS | 157 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 doc/ACCOUNTS diff --git a/doc/ACCOUNTS b/doc/ACCOUNTS new file mode 100644 index 000000000..aecd84ad5 --- /dev/null +++ b/doc/ACCOUNTS @@ -0,0 +1,157 @@ +Account tracking in Eggdrop + +In Eggdrop 1.9.3, Eggdrop added the ability to associate nicknames with +the service accounts they are logged into. It is IMPORTANT to note that +Eggdrop's ability to do this is dependent on an IRC server's +implementation of three features- the IRCv3 extended-join capability, +the IRCv3 account-notify capability, and WHOX support. All three of +these features must be supported by the server and, in the case of +extended-join and account-notify, requested by Eggdrop in order for +Eggdrop to maintain "perfect" association between nicknames and account +statuses. + +REQUIRED SERVER CAPABILITIES + +You're going to see this repeated a lot- the IRC server must support +three features in order for Eggdrop to accurately associate accounts +with nicknames. These three features allow Eggdrop to always know the +current association between an account and a nickname by getting account +statuses of users already on a channel when it joins, new users joining +a channel, and users who authenticate while on a channel. + +extended-join + +extended-join is an IRCv3-defined capability that adds the account name +of a user to the JOIN message sent by the IRC server, alerting clients +that a new member has joined a channel. Enabling this capability allows +Eggdrop to immediately determine the account name associated with a user +joining a channel + +account-notify + +account-notify is an IRCv3-defined capability that sends a message to a +channel when a member of the channel either authenticates or +deauthenticates from their account. Enabling this capability allows +Eggdrop to immediately associate an account to a channel member when +they authenticate or deauthenticate. + +WHOX + +'WHOX `_ is a server feature +that allows a client to request custom fields to be returned in a WHO +response. If a server supports this capability, Eggdrop sends a WHOX +query to the server when it joins a channel, allowing it to immediately +determine accounts associated with channel members when Eggdrop joins a +channel. + +ENABLING EGGDROP ACCOUNT TRACKING + +By default, the Eggdrop config file will attempt to enable all the +capabilities required for account tracking. There are two settings to +pay attention to : + + # To request the account-notify feature via CAP, set this to 1 + set account-notify 1 + + # To request the extended-join feature via CAP, set this to 1 + set extended-join 1 + +The ability of a server to support WHOX queries is determined via a +server's ISUPPORT (005) reply. If a server supports WHOX queries, +Eggdrop will automatically enable this feature. + +CHECKING ACCOUNT-TRACKING STATUS + +While Eggdrop is running, join the partyline and type .status. If +account-tracking is enabled (both the server supports and Eggdrop has +requested), you'll see this line : + + Loaded module information: + #eggdroptest : (not on channel) + Channels: #eggdroptest (trying) + Account tracking: Enabled <--- This line + Online as: BeerBot (BeerBot) + +Otherwise, the prompt will tell you which required capability is +missing/not enabled : + + Loaded module information: + #eggdroptest : 2 members, enforcing "+tn" (greet) + Channels: #eggdroptest (need ops) + Account tracking: Best-effort (Missing capabilities: extended-join, see .status all for details) <---- This line + Online as: Eggdrop (Eggdrop) + +DETERMINING IF A SERVER SUPPORTS ACCOUNT CAPABILITIES + +A server announces the capabilities it supports via a CAP request. If +you have Tcl enabled on the partyline (or via a raw message from a +client), you can send .tcl cap ls and see if the extended-join and +account-notify capabilities are supported by the server. If they are not +listed, the server does not support it. + +A server announces if it supports WHOX via its ISUPPORT (005) +announcement. If you have Tcl enabled on the partyline, you can send +.tcl issupport isset WHOX and if it returns '1', WHOX is supported by +the server. + +BEST-EFFORT ACCOUNT TRACKING + +If a server only supports some, but not all, of the required +capabilities, Eggdrop will switch to 'best effort' account tracking. +This means Eggdrop will update account statuses whenever it sees account +information, but in this mode Eggdrop cannot guarantee that all account +associations are up to date. + +If a server does not support extended-join, Eggdrop will not be able to +determine the account associated with a user when they join. Eggdrop can +update this information by sending a WHOX to the server. + +If a server does not support account-notify, Eggdrop will not be able to +determine the account associated with a user if they +authenticate/deauthenticate from their account after joining a channel. +Eggdrop can update this information by sending a WHOX to the server. + +If a server does not support WHOX, Eggdrop will not be able to determine +the accounts associated with users already on a channel before Eggdrop +joined. There is no reliable way to update this information. + +One workaround to significantly increase the accuracy of account +tracking for scripts in a 'best effort' scenario would be to issue a +WHOX query (assuming the server supports it), wait for the reply from +the server, and then query for the account information. + +account-tag + +One supplementary capability that can assist a best-effort account +tracking scenario is the IRCv3-defined account-tag capability. The +account-tag capability attaches a tag with the account name associated +with the user sending a command. Enabling this capability allows Eggdrop +to update its account tracking every time a user talks in channel, sets +a mode, sends a kick, etc. While still not able to offer the same level +of accuracy as enabling the "main three" account tracking features, it +can increase the overall accuracy of the account list. Additionally, +binds that react to user activity (pub, kick, mode, etc) containing +account-tag will update the internal account list prior to executing the +associated callback, so looking up the account name in the callback can +be considered accurate. + +USING ACCOUNTS WITH TCL SCRIPTS + +The Eggdrop Tcl ACCOUNT bind is triggered whenever an existing account +record stored by Eggdrop is modified, such as a user de/authenticating +to their account while in a channel, or information such as an +account-tag being seen that updates an existing user. However, the +ACCOUNT bind will NOT be triggered for the creation of a new user +record, such as a user joining a channel. The bind is triggered for +every channel the user is seen on- this means if a user is present with +Eggdrop on four channels, the bind will be executed four times, each +time with a different channel variable being passed to the associated +Tcl procedure. Additionally, in a best-effort account tracking +situation, Eggdrop will update the account associated with a user on all +channels, not just the channel the event is seen on (and thus resulting +in a bind trigger for each channel the user is on). + +In order to trigger Tcl script events to cover all instances where a +user logs in, you need to pair an ACCOUNT bind with a JOIN bind. This +will allow you to execute account-based events when a user joins as well +as if they authenticate after joining. From 6f4309cdfb82cf0763c27d30a3db75dc96e4a8ab Mon Sep 17 00:00:00 2001 From: Geo Date: Wed, 14 Dec 2022 21:10:46 -0500 Subject: [PATCH 139/320] Roll patchlevel --- NEWS | 2 +- src/version.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 6dfe4de3d..6af6b7bac 100644 --- a/NEWS +++ b/NEWS @@ -35,7 +35,7 @@ Eggdrop v1.9.4: - None Tcl API changes: - - Moved the 'gotmsg' function back as a raw bind. It was inadvertantly + - Moved the 'gotmsg' function back as a raw bind. It was inadvertently moved to a rawt bind in 1.9.3, causing issuse with scripts attempting to unbind this internal reference Module changes: diff --git a/src/version.h b/src/version.h index 202b920d1..8d09a999b 100644 --- a/src/version.h +++ b/src/version.h @@ -27,5 +27,5 @@ */ #define EGG_STRINGVER "1.9.4" -#define EGG_NUMVER 1090400 -#define EGG_PATCH "alpha" +#define EGG_NUMVER 1090403 +#define EGG_PATCH "base" From a10f405bf7870dd15fbb859089d2d8f10a35ceb2 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 17 Dec 2022 16:51:12 +0000 Subject: [PATCH 140/320] Use IRC_CHANGINGSERV Found by: primalz Patch by: michaelortmann Fixes: #1327 --- src/mod/irc.mod/msgcmds.c | 2 +- src/mod/server.mod/cmdsserv.c | 2 +- src/mod/server.mod/tclserv.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/irc.mod/msgcmds.c b/src/mod/irc.mod/msgcmds.c index 4fa40e8a1..6f4e345f8 100644 --- a/src/mod/irc.mod/msgcmds.c +++ b/src/mod/irc.mod/msgcmds.c @@ -1101,7 +1101,7 @@ static int msg_jump(char *nick, char *host, struct userrec *u, char *par) putlog(LOG_CMDS, "*", "(%s!%s) !%s! JUMP", nick, host, u->handle); dprintf(-serv, "NOTICE %s :%s\n", nick, IRC_JUMP); cycle_time = 0; - nuke_server("changing servers"); + nuke_server(IRC_CHANGINGSERV); } else putlog(LOG_CMDS, "*", "(%s!%s) !%s! failed JUMP", nick, host, u->handle); return 1; diff --git a/src/mod/server.mod/cmdsserv.c b/src/mod/server.mod/cmdsserv.c index ae66204f7..1e5cbbaac 100644 --- a/src/mod/server.mod/cmdsserv.c +++ b/src/mod/server.mod/cmdsserv.c @@ -137,7 +137,7 @@ server, but Eggdrop was not compiled with SSL libraries. Skipping..."); putlog(LOG_CMDS, "*", "#%s# jump", dcc[idx].nick); dprintf(idx, "%s...\n", IRC_JUMP); cycle_time = 0; - nuke_server("changing servers"); + nuke_server(IRC_CHANGINGSERV); } static void cmd_clearqueue(struct userrec *u, int idx, char *par) diff --git a/src/mod/server.mod/tclserv.c b/src/mod/server.mod/tclserv.c index 30a6f96a0..5efbb056d 100644 --- a/src/mod/server.mod/tclserv.c +++ b/src/mod/server.mod/tclserv.c @@ -379,7 +379,7 @@ static int tcl_jump STDVAR } cycle_time = 0; - nuke_server("changing servers\n"); + nuke_server(IRC_CHANGINGSERV); return TCL_OK; } From 0e9c57ed6cb2d8f4a03b0c50377f60fef6600466 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 17 Dec 2022 16:52:28 +0000 Subject: [PATCH 141/320] Increase nouserfile output Found by: michaelortmann Patch by: michaelortmann --- src/chanprog.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chanprog.c b/src/chanprog.c index 1256e9593..f5c5f6644 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -484,9 +484,9 @@ void chanprog() if (!readuserfile(userfile, &userlist)) { if (!make_userfile) { - char tmp[178]; + char tmp[256]; - egg_snprintf(tmp, sizeof tmp, MISC_NOUSERFILE, configfile); + snprintf(tmp, sizeof tmp, MISC_NOUSERFILE, configfile); fatal(tmp, 0); } printf("\n\n%s\n", MISC_NOUSERFILE2); From d2ac352f7d436315fb3aa4a5b14622ef2fc1d9ab Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 17 Dec 2022 16:56:11 +0000 Subject: [PATCH 142/320] Fix sasl logging Found by: michaelortmann Patch by: michaelortmann --- src/mod/server.mod/servmsg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index 9b029f22b..e1f4a84c1 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -1520,7 +1520,7 @@ static int tryauthenticate(char *from, char *msg) ret = ECDSA_sign(0, dst, olen, sig, &siglen, eckey); EC_KEY_free(eckey); if (!ret) { - printf("SASL: AUTHENTICATE: ECDSA_sign() SSL error = %s\n", + putlog(LOG_SERV, "*", "SASL: AUTHENTICATE: ECDSA_sign() SSL error = %s\n", ERR_error_string(ERR_get_error(), 0)); nfree(sig); return 1; @@ -1536,8 +1536,8 @@ static int tryauthenticate(char *from, char *msg) dprintf(DP_MODE, "AUTHENTICATE %s\n", dst); #endif /* HAVE_EVP_PKEY_GET1_EC_KEY */ #else /* TLS */ - dprintf(LOG_DEBUG, "*", "SASL: Received EC message, but no TLS EC libs " - "present. Try PLAIN method"); + putlog(LOG_SERV, "*", "SASL: Received EC message, but no TLS EC libs " + "present. Try PLAIN method"); return 1; #endif /* TLS */ } From aa214164bc14e1f9adc10734176235f2682b949e Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 17 Dec 2022 14:10:44 -0500 Subject: [PATCH 143/320] Update patchlevel 'logupdates' --- src/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/version.h b/src/version.h index 8d09a999b..5111478ae 100644 --- a/src/version.h +++ b/src/version.h @@ -27,5 +27,5 @@ */ #define EGG_STRINGVER "1.9.4" -#define EGG_NUMVER 1090403 -#define EGG_PATCH "base" +#define EGG_NUMVER 1090404 +#define EGG_PATCH "logupdates" From 6bec2d698c3c615dc5a1fca43a97affadc651cca Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 17 Dec 2022 19:11:33 +0000 Subject: [PATCH 144/320] increase logfile length --- src/tclmisc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tclmisc.c b/src/tclmisc.c index 801ee4bce..f39e13322 100644 --- a/src/tclmisc.c +++ b/src/tclmisc.c @@ -73,7 +73,7 @@ int expmem_tclmisc() static int tcl_logfile STDVAR { int i; - char s[151]; + char s[256]; BADARGS(1, 4, " ?logModes channel logFile?"); @@ -81,7 +81,7 @@ static int tcl_logfile STDVAR /* They just want a list of the logfiles and modes */ for (i = 0; i < max_logs; i++) if (logs[i].filename != NULL) { - egg_snprintf(s, sizeof s, "%s %s %s", masktype(logs[i].mask), + snprintf(s, sizeof s, "%s %s %s", masktype(logs[i].mask), logs[i].chname, logs[i].filename); Tcl_AppendElement(interp, s); } From e3983abc36160237ba469478d52d567deb12147b Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Mon, 19 Dec 2022 15:41:20 +0000 Subject: [PATCH 145/320] Fix some year 2038 problems Found by: michaelortmann Patch by: michaelortmann and thommey Fix time_t handling (buffer size, type and format specifier) POSIX requires time_t to be an integer type, but does not mandate that it be signed or unsigned. time_t to string conversion used buffersize 11, 10 chars + NULL-terminator, would overflow with unixtime >9999999999 (year 2286) --- src/botcmd.c | 4 ++-- src/dns.c | 2 +- src/main.c | 5 +++-- src/mod/blowfish.mod/blowfish.c | 2 +- src/mod/channels.mod/tclchan.c | 14 +++----------- src/mod/irc.mod/cmdsirc.c | 18 +++++++++--------- src/mod/irc.mod/tclirc.c | 4 ++-- src/mod/share.mod/share.c | 7 ++++--- src/tcldcc.c | 18 ++++++------------ src/tclmisc.c | 4 ++-- src/tcluser.c | 12 +++--------- src/userrec.c | 6 +++--- 12 files changed, 39 insertions(+), 57 deletions(-) diff --git a/src/botcmd.c b/src/botcmd.c index 2757026a1..60871b197 100644 --- a/src/botcmd.c +++ b/src/botcmd.c @@ -837,8 +837,8 @@ static void bot_traced(int idx, char *par) if (*c == ':') j++; } - dprintf(i, "%s -> %s (%lu secs, %d hop%s)\n", BOT_TRACERESULT, p, - now - t, j, (j != 1) ? "s" : ""); + dprintf(i, "%s -> %s (%" PRId64 " secs, %d hop%s)\n", BOT_TRACERESULT, + p, (int64_t) (now - t), j, (j != 1) ? "s" : ""); } else dprintf(i, "%s -> %s\n", BOT_TRACERESULT, p); } diff --git a/src/dns.c b/src/dns.c index 6d5c67f79..48454742b 100644 --- a/src/dns.c +++ b/src/dns.c @@ -86,7 +86,7 @@ static void eof_dcc_dnswait(int idx) static void display_dcc_dnswait(int idx, char *buf) { - sprintf(buf, "dns waited %lis", (long) (now - dcc[idx].timeval)); + sprintf(buf, "dns waited %" PRId64 "s", (int64_t) (now - dcc[idx].timeval)); } static int expmem_dcc_dnswait(void *x) diff --git a/src/main.c b/src/main.c index d4bee020c..7fff6c6fe 100644 --- a/src/main.c +++ b/src/main.c @@ -651,13 +651,14 @@ static void core_secondly() /* In case for some reason more than 1 min has passed: */ while (nowmins != lastmin) { /* Timer drift, dammit */ - debug1("timer: drift (%f seconds)", difftime(nowmins, lastmin)); + debug1("timer: drift (%" PRId64 " seconds)", (int64_t) (nowmins - lastmin)); i++; ++lastmin; call_hook(HOOK_MINUTELY); } if (i > 1) - putlog(LOG_MISC, "*", "(!) timer drift -- spun %f minutes", difftime(nowmins, lastmin)/60); + putlog(LOG_MISC, "*", "(!) timer drift -- spun %" PRId64 " minutes", + ((int64_t) (nowmins - lastmin)) / 60); miltime = (nowtm.tm_hour * 100) + (nowtm.tm_min); if (((int) (nowtm.tm_min / 5) * 5) == (nowtm.tm_min)) { /* 5 min */ call_hook(HOOK_5MINUTELY); diff --git a/src/mod/blowfish.mod/blowfish.c b/src/mod/blowfish.mod/blowfish.c index af03c8f1a..867efc30d 100644 --- a/src/mod/blowfish.mod/blowfish.c +++ b/src/mod/blowfish.mod/blowfish.c @@ -153,7 +153,7 @@ static void blowfish_report(int idx, int details) dprintf(idx, " %d of %d boxes in use:", tot, BOXES); for (i = 0; i < BOXES; i++) if (box[i].P != NULL) { - dprintf(idx, " (age: %f)", difftime(now, box[i].lastuse)); + dprintf(idx, " (age: %" PRId64 ")", (int64_t) (now - box[i].lastuse)); } dprintf(idx, "\n"); } diff --git a/src/mod/channels.mod/tclchan.c b/src/mod/channels.mod/tclchan.c index 06b33b8d3..7f13f6197 100644 --- a/src/mod/channels.mod/tclchan.c +++ b/src/mod/channels.mod/tclchan.c @@ -1720,25 +1720,17 @@ static int tcl_channel_modify(Tcl_Interp *irp, struct chanset_t *chan, static int tcl_do_masklist(maskrec *m, Tcl_Interp *irp) { char ts[21], ts1[21], ts2[21], *p; - long tv; EGG_CONST char *list[6]; for (; m; m = m->next) { list[0] = m->mask; list[1] = m->desc; - - tv = m->expire; - sprintf(ts, "%lu", tv); + snprintf(ts, sizeof ts, "%" PRId64, (int64_t) m->expire); list[2] = ts; - - tv = m->added; - sprintf(ts1, "%lu", tv); + snprintf(ts1, sizeof ts1, "%" PRId64, (int64_t) m->added); list[3] = ts1; - - tv = m->lastactive; - sprintf(ts2, "%lu", tv); + snprintf(ts2, sizeof ts2, "%" PRId64, (int64_t) m->lastactive); list[4] = ts2; - list[5] = m->user; p = Tcl_Merge(6, list); Tcl_AppendElement(irp, p); diff --git a/src/mod/irc.mod/cmdsirc.c b/src/mod/irc.mod/cmdsirc.c index 66179ba6d..ccbb75657 100644 --- a/src/mod/irc.mod/cmdsirc.c +++ b/src/mod/irc.mod/cmdsirc.c @@ -853,21 +853,21 @@ static void cmd_channel(struct userrec *u, int idx, char *par) else chanflag = ' '; if (chan_issplit(m)) { - dprintf(idx, "%c%-*s %-*s %-*s %-6s %c <- netsplit, %fs\n", - chanflag, maxnicklen, m->nick, maxhandlen, handle, maxnicklen, - m->account, s, atrflag, difftime(now, m->split)); + dprintf(idx, "%c%-*s %-*s %-*s %-6s %c <- netsplit, %" PRId64 "s\n", + chanflag, maxnicklen, m->nick, maxhandlen, handle, maxnicklen, + m->account, s, atrflag, (int64_t) (now - m->split)); } else if (!rfc_casecmp(m->nick, botname)) { - dprintf(idx, "%c%-*s %-*s %-*s %-6s %c <- it's me!\n", chanflag, - maxnicklen, m->nick, maxhandlen, handle, maxnicklen, m->account, - s, atrflag); + dprintf(idx, "%c%-*s %-*s %-*s %-6s %c <- it's me!\n", + chanflag, maxnicklen, m->nick, maxhandlen, handle, maxnicklen, + m->account, s, atrflag); } else { /* Determine idle time */ if (now - (m->last) > 86400) - egg_snprintf(s1, sizeof s1, "%2lud", ((now - (m->last)) / 86400)); + snprintf(s1, sizeof s1, "%2" PRId64 "d", ((int64_t) (now - m->last)) / 86400); else if (now - (m->last) > 3600) - egg_snprintf(s1, sizeof s1, "%2luh", ((now - (m->last)) / 3600)); + snprintf(s1, sizeof s1, "%2" PRId64 "h", ((int64_t) (now - m->last)) / 3600); else if (now - (m->last) > 180) - egg_snprintf(s1, sizeof s1, "%2lum", ((now - (m->last)) / 60)); + snprintf(s1, sizeof s1, "%2" PRId64 "m", ((int64_t) (now - m->last)) / 60); else strlcpy(s1, " ", sizeof s1); if (chan_ircaway(m)) { diff --git a/src/mod/irc.mod/tclirc.c b/src/mod/irc.mod/tclirc.c index ea5bef5fe..0b6abd416 100644 --- a/src/mod/irc.mod/tclirc.c +++ b/src/mod/irc.mod/tclirc.c @@ -690,13 +690,13 @@ static int tcl_getchanidle STDVAR static int tcl_chanmasks(masklist *m, Tcl_Interp *irp) { - char work[20], *p; + char work[21], *p; EGG_CONST char *list[3]; for (; m && m->mask && m->mask[0]; m = m->next) { list[0] = m->mask; list[1] = m->who; - simple_sprintf(work, "%d", now - m->timer); + snprintf(work, sizeof work, "%" PRId64, (int64_t) (now - m->timer)); list[2] = work; p = Tcl_Merge(3, list); Tcl_AppendElement(irp, p); diff --git a/src/mod/share.mod/share.c b/src/mod/share.mod/share.c index 57d4c3292..dc8a1f1c7 100644 --- a/src/mod/share.mod/share.c +++ b/src/mod/share.mod/share.c @@ -1232,7 +1232,8 @@ static void share_ufsend(int idx, char *par) int i, sock; FILE *f; - egg_snprintf(s, sizeof s, ".share.%s.%li.users", botnetnick, now); + snprintf(s, sizeof s, ".share.%s.%" PRId64 ".users", botnetnick, + (int64_t) now); if (!(b_status(idx) & STAT_SHARE)) { dprintf(idx, "s e You didn't ask; you just started sending.\n"); dprintf(idx, "s e Ask before sending the userfile.\n"); @@ -2038,8 +2039,8 @@ static void start_sending_users(int idx) struct chanset_t *cst; char s[EGG_INET_ADDRSTRLEN]; - egg_snprintf(share_file, sizeof share_file, ".share.%s.%lu", dcc[idx].nick, - now); + snprintf(share_file, sizeof share_file, ".share.%s.%" PRId64, dcc[idx].nick, + (int64_t) now); if (dcc[idx].u.bot->uff_flags & UFF_OVERRIDE) { debug1("NOTE: Sharing aggressively with %s, overriding its local bots.", dcc[idx].nick); diff --git a/src/tcldcc.c b/src/tcldcc.c index 6a7702b29..3fd96e0f0 100644 --- a/src/tcldcc.c +++ b/src/tcldcc.c @@ -702,9 +702,8 @@ static void build_sock_list(Tcl_Interp *irp, Tcl_Obj *masterlist, char *idxstr, /* Gather information for dcclist or socklist */ static void dccsocklist(Tcl_Interp *irp, int argc, char *type, int src) { int i; - char idxstr[10], timestamp[11], other[160]; + char idxstr[10], timestamp[21], other[160]; char portstring[7]; /* ssl + portmax + NULL */ - long tv; char s[EGG_INET_ADDRSTRLEN]; socklen_t namelen; struct sockaddr_storage ss; @@ -718,8 +717,7 @@ static void dccsocklist(Tcl_Interp *irp, int argc, char *type, int src) { if (argc == 1 || ((argc == 2) && (dcc[i].type && !strcasecmp(dcc[i].type->name, type)))) { egg_snprintf(idxstr, sizeof idxstr, "%ld", dcc[i].sock); - tv = dcc[i].timeval; - egg_snprintf(timestamp, sizeof timestamp, "%ld", tv); + snprintf(timestamp, sizeof timestamp, "%" PRId64, (int64_t) dcc[i].timeval); if (dcc[i].type && dcc[i].type->display) dcc[i].type->display(i, other); else { @@ -785,8 +783,7 @@ static int tcl_dcclist STDVAR static int tcl_whom STDVAR { int chan, i; - char c[2], idle[32], work[20], *p; - long tv = 0; + char c[2], idle[21], work[20], *p; EGG_CONST char *list[7]; BADARGS(2, 2, " chan"); @@ -815,8 +812,7 @@ static int tcl_whom STDVAR if (dcc[i].u.chat->channel == chan || chan == -1) { c[0] = geticon(i); c[1] = 0; - tv = (now - dcc[i].timeval) / 60; - egg_snprintf(idle, sizeof idle, "%li", tv); + snprintf(idle, sizeof idle, "%" PRId64, (int64_t) ((now - dcc[i].timeval) / 60)); list[0] = dcc[i].nick; list[1] = botnetnick; list[2] = dcc[i].host; @@ -838,10 +834,8 @@ static int tcl_whom STDVAR c[1] = 0; if (party[i].timer == 0L) strcpy(idle, "0"); - else { - tv = (now - party[i].timer) / 60; - egg_snprintf(idle, sizeof idle, "%li", tv); - } + else + snprintf(idle, sizeof idle, "%" PRId64, (int64_t) ((now - party[i].timer) / 60)); list[0] = party[i].nick; list[1] = party[i].bot; list[2] = party[i].from ? party[i].from : ""; diff --git a/src/tclmisc.c b/src/tclmisc.c index f39e13322..f1270bc8d 100644 --- a/src/tclmisc.c +++ b/src/tclmisc.c @@ -404,12 +404,12 @@ static int tcl_duration STDVAR static int tcl_unixtime STDVAR { - char s[11]; + char s[21]; time_t now2 = time(NULL); BADARGS(1, 1, ""); - egg_snprintf(s, sizeof s, "%li", (long) now2); + snprintf(s, sizeof s, "%" PRId64, (int64_t) now2); Tcl_AppendResult(irp, s, NULL); return TCL_OK; } diff --git a/src/tcluser.c b/src/tcluser.c index 987a0e6dc..e94334ded 100644 --- a/src/tcluser.c +++ b/src/tcluser.c @@ -611,8 +611,7 @@ static int tcl_killignore STDVAR static int tcl_ignorelist STDVAR { - char expire[11], added[11], *p; - long tv; + char expire[21], added[21], *p; EGG_CONST char *list[5]; struct igrec *i; @@ -621,15 +620,10 @@ static int tcl_ignorelist STDVAR for (i = global_ign; i; i = i->next) { list[0] = i->igmask; list[1] = i->msg; - - tv = i->expire; - egg_snprintf(expire, sizeof expire, "%lu", tv); + snprintf(expire, sizeof expire, "%" PRId64, (int64_t) i->expire); list[2] = expire; - - tv = i->added; - egg_snprintf(added, sizeof added, "%lu", tv); + snprintf(added, sizeof added, "%" PRId64, (int64_t) i->added); list[3] = added; - list[4] = i->user; p = Tcl_Merge(5, list); Tcl_AppendElement(irp, p); diff --git a/src/userrec.c b/src/userrec.c index 9a8f19f49..fce760230 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -656,7 +656,7 @@ struct userrec *adduser(struct userrec *bu, char *handle, char *host, struct userrec *u, *x; struct xtra_key *xk; int oldshare = noshare; - long tv; + time_t tv; noshare = 1; u = nmalloc(sizeof *u); @@ -680,9 +680,9 @@ struct userrec *adduser(struct userrec *bu, char *handle, char *host, xk->key = nmalloc(8); strcpy(xk->key, "created"); tv = now; - l = snprintf(NULL, 0, "%li", tv); + l = snprintf(NULL, 0, "%" PRId64, (int64_t) tv); xk->data = nmalloc(l + 1); - sprintf(xk->data, "%li", tv); + sprintf(xk->data, "%" PRId64, (int64_t) tv); set_user(&USERENTRY_XTRA, u, xk); } /* Strip out commas -- they're illegal */ From 5cec6dbed0d6c68ac157e1da78d76d9d2cf28941 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Mon, 19 Dec 2022 15:43:19 +0000 Subject: [PATCH 146/320] Update BUG-REEPORT --- doc/BUG-REPORT | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/BUG-REPORT b/doc/BUG-REPORT index f1ceda1e8..3c279c599 100644 --- a/doc/BUG-REPORT +++ b/doc/BUG-REPORT @@ -26,7 +26,7 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 1) INFORMATION ABOUT YOUR EGGDROP 1.1) Eggdrop version: - 1.8.__ + 1.9._ 1.2) Make type: ( ) dynamic @@ -42,17 +42,13 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 2) INFORMATION ABOUT TCL 2.1) Tcl library version: - ( ) 8.3 - ( ) 8.4 - ( ) 8.5 - ( ) 8.6 + ( ) 8.3._ + ( ) 8.4._ + ( ) 8.5._ + ( ) 8.6._ ( ) Other - Which? ____ -2.2) Tcl library patchlevel: ___ - eg; p1, p2, etc for Tcl versions up to 8.0p2 - or the 3rd part of the version number for 8.0.3 and newer - -2.3) Tcl scripts used: +2.2) Tcl scripts used: [ ] alltools [ ] sentinel [ ] getops @@ -81,6 +77,7 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. ( ) SINIX ( ) Solaris/SunOS/OpenIndiana ( ) Ultrix + ( ) Windows Subsystem for Linux (WSL) ( ) Other - Which? _____________ 3.2) OS Version/Release: _____________ @@ -110,8 +107,10 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. useful if you could paste gdb's output during the following steps: First call gdb $ gdb eggdrop -c core + (systemd users could try coredumpctl) and then enter 'bt' on gdb's command line: (gdb) bt + (even more information could be obtained with 'bt full') Keep your core file for at least one week, so that the dev team can ask for further information if needed. However, don't send us the core file unless we ask for it. From 6eee0f54a7d53304321c42c506a6f58b7e69e376 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 19 Dec 2022 15:39:27 -0500 Subject: [PATCH 147/320] Only update bothost on own chghost Found by: Geo Patch by: Geo Eggdrop incorrectly updated its own internally-tracked hostname with any host in a CHGHOST, whether it was intended for Eggdrop or not. --- src/mod/server.mod/servmsg.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index e1f4a84c1..5bb4f31d2 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -1320,7 +1320,9 @@ static int got396orchghost(char *nick, char *user, char *uhost) m = ismember(chan, nick); if (m) { snprintf(m->userhost, sizeof m->userhost, "%s@%s", user, uhost); - strcpy(botuserhost, m->userhost); + if (!rfc_casecmp(m->nick, botname)) { + strcpy(botuserhost, m->userhost); + } } } return 0; From 22586b4dc9fd9fde5b5d0c97ec7d435a200937ae Mon Sep 17 00:00:00 2001 From: Simon Lyngshede Date: Fri, 30 Dec 2022 20:03:45 +0100 Subject: [PATCH 148/320] Fix doc links to binds Patch by: @slyngshede --- doc/html/tutorials/firstscript.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/html/tutorials/firstscript.html b/doc/html/tutorials/firstscript.html index fb00cb559..7097af445 100644 --- a/doc/html/tutorials/firstscript.html +++ b/doc/html/tutorials/firstscript.html @@ -113,7 +113,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 @@ -176,7 +176,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.

      @@ -270,4 +270,4 @@

      Writing an Eggdrop Script Date: Sun, 12 Feb 2023 14:11:49 -0500 Subject: [PATCH 151/320] Update Tcl repo Found by: @robert-scheck Fixes: #1379 Confirmed with Tcl devs that they no longer maintain the FTP; updating suggested download repo in configure. --- configure | 4 ++-- configure.ac | 2 +- src/mod/compress.mod/configure | 2 +- src/mod/dns.mod/configure | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/configure b/configure index b7e1fb352..7372012d6 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 13ab0170. +# From configure.ac 533f882a. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop 1.9.4. # @@ -7985,7 +7985,7 @@ rm -f conftest.mmap conftest.txt # Tcl version to recommend if no Tcl is found, and the site where it can be # found for download. tclrecommendver="8.6.X" -tclrecommendsite="ftp://ftp.tcl.tk/pub/tcl/tcl8_6/" +tclrecommendsite="https://sourceforge.net/projects/tcl/files/Tcl/" # Tcl header filenames. tclheadernames="tcl.h" diff --git a/configure.ac b/configure.ac index f6c66bbae..c101fedf0 100644 --- a/configure.ac +++ b/configure.ac @@ -122,7 +122,7 @@ AC_FUNC_MMAP # Tcl version to recommend if no Tcl is found, and the site where it can be # found for download. tclrecommendver="8.6.X" -tclrecommendsite="ftp://ftp.tcl.tk/pub/tcl/tcl8_6/" +tclrecommendsite="https://sourceforge.net/projects/tcl/files/Tcl/" # Tcl header filenames. tclheadernames="tcl.h" diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 29f9f2adc..3ea939674 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 13ab0170. +# From configure.ac 533f882a. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop Compress Module 1.9.4. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 00072f073..84e203692 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 13ab0170. +# From configure.ac 533f882a. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop DNS Module 1.9.4. # From 0406c4b5ba42ac0a7e2a891b7267c845f1775fea Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 12 Feb 2023 14:12:47 -0500 Subject: [PATCH 152/320] Add TLS doc link to botnet doc Found by: @ZarTek-Creole Fixes: #1396 --- doc/sphinx_source/using/botnet.rst | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/doc/sphinx_source/using/botnet.rst b/doc/sphinx_source/using/botnet.rst index 7dea0d324..6757598b5 100644 --- a/doc/sphinx_source/using/botnet.rst +++ b/doc/sphinx_source/using/botnet.rst @@ -1,5 +1,4 @@ Botnet Sharing and Linking -Last revised: Nov 09, 2017 ========================== Botnet Sharing and Linking @@ -150,6 +149,10 @@ Here is an example scenario: 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. +Secure (TLS) Links +^^^^^^^^^^^^^^^^^^ +Since Eggdrop 1.8.0, the ability to encrypt bot links using TLS is possible. On the hub bot you would prefix the port given in the `listen` command with a +, and when you add the hub bot to the leaf, you would prefix the port used in the `.+bot` command with a +. In other words, you would set `listen +5555` in the hub config and use `.+bot hubbot 1.2.3.4 +5555` on the leaf bot. These settings are explained more thoroughly in the `TLS botnet documentation. `_ + Using botflags -------------- @@ -315,4 +318,8 @@ Making bots share user records |-+beldin `-+Lameshare +Using certificates to authenticate Eggdrops +------------------------------------------- +Eggdrops can use certificates to authenticate when linking to each other instead of a password. First, you must ensure you have set the appropriate certificates in the `ssl-privatekey` and `ssl-certificate` settings in the config file, and then enable the `ssl-cert-auth` setting. Next, add the certificate on the partyline by using `.fprint +` to add the fingerprint for the certificate currently in use, or `.fprint ` to manually add a fingerprint. Once the config file settings are set 0and fingerprints are added on the partyline, Eggdrops will attempt to use their certificates intead of passwords for authentication. + Copyright (C) 1999 - 2022 Eggheads Development Team From 7c6905000b8e0d8cdb65a4951efaae1977d684e5 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 12 Feb 2023 19:15:00 +0000 Subject: [PATCH 153/320] Fix Twitch mod crash Found by: Lord255 Patch by: michaelortmann Fixes: #1380 --- src/mod/twitch.mod/twitch.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/twitch.mod/twitch.c b/src/mod/twitch.mod/twitch.c index 7efc8cc71..542d5c3a9 100644 --- a/src/mod/twitch.mod/twitch.c +++ b/src/mod/twitch.mod/twitch.c @@ -843,6 +843,7 @@ static char *twitch_close() del_bind_table(H_rmst); del_bind_table(H_usst); del_bind_table(H_usrntc); + Tcl_UntraceVar(interp, "keep-nick", TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, traced_keepnick, NULL); module_undepend(MODULE_NAME); return NULL; } From 156c99d3bf7af1bec3291f12d1a6b20a23dad946 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 12 Feb 2023 19:18:39 +0000 Subject: [PATCH 154/320] Make init_threaddata() return void Patch by: michaelortmann --- src/main.c | 2 +- src/proto.h | 2 +- src/tcl.c | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 7fff6c6fe..9ab60c6de 100644 --- a/src/main.c +++ b/src/main.c @@ -778,7 +778,7 @@ void check_static(char *, char *(*)()); #include "mod/static.h" #endif -int init_threaddata(int); +void init_threaddata(int); int init_mem(); int init_userent(); int init_misc(); diff --git a/src/proto.h b/src/proto.h index 054fe204d..f1940773b 100644 --- a/src/proto.h +++ b/src/proto.h @@ -302,7 +302,7 @@ void safe_write(int, const void *, size_t); /* tcl.c */ struct threaddata *threaddata(void); -int init_threaddata(int); +void init_threaddata(int); void protect_tcl(void); void unprotect_tcl(void); void do_tcl(char *, char *); diff --git a/src/tcl.c b/src/tcl.c index 770dbacbb..3e6265ae2 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -620,7 +620,7 @@ struct threaddata *threaddata() #endif /* REPLACE_NOTIFIER */ -int init_threaddata(int mainthread) +void init_threaddata(int mainthread) { struct threaddata *td = threaddata(); /* Nested evaluation (vwait/update) of the event loop only @@ -636,7 +636,6 @@ int init_threaddata(int mainthread) td->blocktime.tv_usec = 0; td->MAXSOCKS = 0; increase_socks_max(); - return 0; } /* Not going through Tcl's crazy main() system (what on earth was he From b06f20a951cbc1bd9d01bd737a85cac5314e4ba0 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 12 Feb 2023 19:19:07 +0000 Subject: [PATCH 155/320] Cleanup: unused but set variable Patch by: michaelortmann --- src/mod/channels.mod/tclchan.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mod/channels.mod/tclchan.c b/src/mod/channels.mod/tclchan.c index 7f13f6197..8f6b1c926 100644 --- a/src/mod/channels.mod/tclchan.c +++ b/src/mod/channels.mod/tclchan.c @@ -2282,7 +2282,7 @@ static int tcl_deludef STDVAR static int tcl_getudefs STDVAR { struct udef_struct *ul; - int type = 0, count = 0; + int type = 0; BADARGS(1, 2, " ?type?"); @@ -2302,7 +2302,6 @@ static int tcl_getudefs STDVAR for (ul = udef; ul; ul = ul->next) if (!type || (ul->type == type)) { Tcl_AppendElement(irp, ul->name); - count++; } return TCL_OK; From 45192be32c964c8aa5561014060e6ed1e40487f7 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sun, 12 Feb 2023 20:21:20 +0100 Subject: [PATCH 156/320] Workaround for TCL_UTF_MAX==3 Found by: Empus Patch by: thommey Fixes: #1163 Ugly workaround that does not break current usage of emoji in the Tcl API. Our usage of the Tcl API is not correct because Eggdrop is encoding agnostic, and processes byte arrays only. Those however get passed to Tcl as strings, when they are not. The real solution is fairly complex (decode all bytes into strings with the proper encoding guess from/to the Tcl API). If users are unable to recompile Tcl with increased TCL_UTF_MAX and are stuck with 8.6 stable (8.7 is not released as stable at the time of this PR), this should be a suitable, albeit ugly and complex, workaround that keeps emoji support alive. We do not wish to break the currently working emoji usage however, which mostly works in the current state, except for a crash if passed to [string tolower/toupper/totitle], other problematic call sites aren't known. So we overwrite Tcl's string tolower/toupper/totitle with our own version that: detects utf-8 sequences that are 4 bytes converts them into utf-8 encoded surrogate pairs before Tcl's string functions are called those remain untouched by case changes in Tcl convert the surrogate pairs back in the result to the original utf-8 4-byte code sequences Side effect is that we also convert surrogate pairs if they were sent as such, which should not have a negative impact on existing scripts. Single-byte encodings being valid 4-byte emoji sequences or 6-byte surrogate pairs is hopefully highly unlikely. --- src/tcl.c | 275 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 275 insertions(+) diff --git a/src/tcl.c b/src/tcl.c index 3e6265ae2..6e02af9e2 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -96,6 +96,17 @@ int handlen = HANDLEN; extern Tcl_VarTraceProc traced_myiphostname, traced_natip, traced_remove_pass; +/* Unicode workaround for Tcl versions that only support BMP characters (3 byte utf-8) */ +#if TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5 && TCL_MINOR_VERSION <= 6 && TCL_UTF_MAX < 4 +# define TCL_WORKAROUND_UNICODESUP 1 +struct tcl_unicodesup_info { + const char *subcmd; + Tcl_Obj *cmd; +}; +#endif + + + int expmem_tcl() { return strtot; @@ -638,6 +649,267 @@ void init_threaddata(int mainthread) increase_socks_max(); } +/* workaround for Tcl that does not support unicode outside BMP (3 byte utf-8 characters) */ +#ifdef TCL_WORKAROUND_UNICODESUP + +/* Based on https://github.com/skeeto/branchless-utf8 which is released into the public domain */ +/* 0 means not utf-8, so the length is still 1 but we can distinguish that case, + * that's why len = len + !len is used, to convert 0 to 1 and leave the rest as-is + */ +static const char utf8lengths[] = { + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 3, 3, 4, 0 +}; + +/* quick check if tricks are needed, only if 4-byte utf-8 characters are used */ +int needs_unicodesup(const char *str) +{ + while (*str) { + int len = utf8lengths[((unsigned char)str[0]) >> 3] + !utf8lengths[((unsigned char)str[0]) >> 3]; + + if (len == 4) { + return 1; + } + while (len--) { + if (*str++ == '\0') { + break; + } + } + } + return 0; +} + +/* return a new Tcl_StringObj with 4-byte utf-8 characters replaced by surrogate pairs + * - decode 4-byte utf-8 into unicode codepoint c + * - calculate high and low surrogate unicode codepoints high/low + * - encode high/low as 3-byte utf-8 strings + * the length of the result could be len/4*6 bytes long, so + * to avoid frequent reallocation/string appending, a temporary buffer is used + * for long strings (>512 characters, which does not apply to IRC lines) and assembled to a Tcl_DString + * for short strings the 512 character buffer is enough + */ +Tcl_Obj *egg_string_unicodesup_surrogate(const char *oldstr, int len) +{ + int stridx = 0, bufidx = 0; + char buf[512]; + Tcl_DString ds; + Tcl_Obj *result; + + /* chunked */ + if (len > sizeof buf) { + Tcl_DStringInit(&ds); + } + + while (stridx < len) { + int charlen = utf8lengths[((unsigned char)oldstr[stridx]) >> 3] + !utf8lengths[((unsigned char)oldstr[stridx])>> 3]; + + if (charlen == 4 && stridx + 4 <= len) { + uint32_t c; + uint16_t high, low; + + /* decode 4-byte utf-8 into unicode codepoint */ + c = (uint32_t)(oldstr[stridx++] & 0x07) << 18; + c |= (uint32_t)(oldstr[stridx++] & 0x3f) << 12; + c |= (uint32_t)(oldstr[stridx++] & 0x3f) << 6; + c |= (uint32_t)(oldstr[stridx++] & 0x3f) << 0; + + /* calculate high and low surrogate unicode codepoints */ + c -= 0x10000; + high = 0xD800 + ((c & 0xffc00) >> 10); + low = 0xDC00 + (c & 0x3ff); + + /* encode high surrogate as utf-8 */ + buf[bufidx++] = 0xe0 | ((high >> 12) & 0xf); + buf[bufidx++] = 0x80 | ((high >> 6) & 0x3f); + buf[bufidx++] = 0x80 | ((high >> 0) & 0x3f); + + /* encode low surrogate as utf-8 */ + buf[bufidx++] = 0xe0 | ((low >> 12) & 0xf); + buf[bufidx++] = 0x80 | ((low >> 6) & 0x3f); + buf[bufidx++] = 0x80 | ((low >> 0) & 0x3f); + } else { + /* copy everything else verbatim */ + while (charlen-- && stridx < len) { + buf[bufidx++] = oldstr[stridx++]; + } + } + if (len > sizeof buf && bufidx > sizeof buf - 6) { + Tcl_DStringAppend(&ds, buf, bufidx); + bufidx = 0; + } + } + if (len > sizeof buf && bufidx) { + Tcl_DStringAppend(&ds, buf, bufidx); + result = Tcl_NewStringObj(Tcl_DStringValue(&ds), Tcl_DStringLength(&ds)); + Tcl_DStringFree(&ds); + } else { + result = Tcl_NewStringObj(buf, bufidx); + } + return result; +} + +/* decode 2 utf-8 sequences that are 3 bytes long and check if they are surrogate pairs */ +int decode_surrogates(const char *str, uint32_t *high, uint32_t *low) +{ + *high = (*str++ & 0xf) << 12; + *high |= (*str++ & 0x3f) << 6; + *high |= (*str++ & 0x3f) << 0; + if (*high < 0xD800 || *high > 0xDBFF) { + return 0; + } + *low = (*str++ & 0xf) << 12; + *low |= (*str++ & 0x3f) << 6; + *low |= (*str++ & 0x3f) << 0; + if (*low < 0xDC00 || *low > 0xDFFF) { + return 0; + } + return 1; +} + +/* returns a new Tcl_StringObj by replacing surrogate pairs back into 4-byte utf-8 sequences + * - for every 3-byte utf-8 sequence, check if it's a surrogate pair + * - decode into high/low codepoints + * - calculate original codepoint and write back a 4-byte utf-8 sequence instead of 3-byte surrogate pairs + * the length of the result is guaranteed to be equal or shorter than the original, so malloc(len) is sufficient space + */ +Tcl_Obj *egg_string_unicodesup_desurrogate(const char *oldstr, int len) +{ + int stridx = 0, bufidx = 0; + char *buf = nmalloc(len); + + while (stridx < len) { + uint32_t low, high; + int charlen = utf8lengths[((unsigned char)oldstr[stridx]) >> 3] + !utf8lengths[((unsigned char)oldstr[stridx]) >> 3]; + + if (charlen == 3 && stridx + 6 <= len && utf8lengths[((unsigned char)oldstr[stridx + 3]) >> 3] == 3 && decode_surrogates(oldstr + stridx, &high, &low)) { + uint32_t c = 0x10000 + (high - 0xD800) * 0x400 + (low - 0xDC00); + + buf[bufidx++] = 0xF0 | ((c >> 18) & 0x07); + buf[bufidx++] = 0x80 | ((c >> 12) & 0x3f); + buf[bufidx++] = 0x80 | ((c >> 6) & 0x3f); + buf[bufidx++] = 0x80 | ((c >> 0) & 0x3f); + + stridx += 6; + } else { + while (charlen-- && stridx < len) { + buf[bufidx++] = oldstr[stridx++]; + } + } + } + return Tcl_NewStringObj(buf, bufidx); +} + +/* C function called for ::egg_tcl_tolower/toupper/totitle + * context (original Tcl function and which conversion to do) is in cd + */ +int egg_string_unicodesup(void *cd, Tcl_Interp *interp, int objc, Tcl_Obj *const orig_objv[]) +{ + struct tcl_unicodesup_info *info = cd; + Tcl_Obj **new_objv; + int i; + int ret; + + /* impossible? */ + if (objc == 0) { + return Tcl_EvalObjv(interp, objc, orig_objv, 0); + } + /* new arguments to original Tcl string tolower/toupper/totitle */ + new_objv = nmalloc(objc * sizeof *new_objv); + + for (i = 0; i < objc; i++) { + if (i == 0) { + /* overwrite command objv[0] with original Tcl command instead of this function */ + new_objv[i] = info->cmd; + } else if (i == 1 && needs_unicodesup(Tcl_GetString(orig_objv[1]))) { + int len; + const char *oldstr = Tcl_GetStringFromObj(orig_objv[1], &len); + + /* overwrite string argument by replacing 4-byet utf-8 sequences with surrogate pairs */ + new_objv[1] = egg_string_unicodesup_surrogate(oldstr, len); + } else { + /* copy other arguments, e.g. string tolower test 1 2 */ + new_objv[i] = orig_objv[i]; + } + /* ref count of new objects must be increased before eval and decreased after, orig_objv is read-only */ + Tcl_IncrRefCount(new_objv[i]); + } + + /* call original Tcl function */ + ret = Tcl_EvalObjv(interp, objc, new_objv, 0); + + /* decrease ref count of new arguments */ + for (i = 0; i < objc; i++) { + Tcl_DecrRefCount(new_objv[i]); + } + nfree(new_objv); + /* overwrite Tcl's result by replacing surrogates back to 4-byte utf-8 sequences*/ + if (ret == TCL_OK) { + int len; + Tcl_Obj *resultobj = Tcl_GetObjResult(interp); + const char *str = Tcl_GetStringFromObj(resultobj, &len); + + Tcl_SetObjResult(interp, egg_string_unicodesup_desurrogate(str, len)); + } + return ret; +} + +/* register a single workaround command, making the namespace ensemble string call ::egg_string_ instead + * original command names are ::tcl::string:: + */ +void init_unicodesup_cmd(Tcl_Obj *ensdict, const char *subcmd, int index) +{ + Tcl_Obj *orig_cmd; + static struct tcl_unicodesup_info info[3]; + char buf[64]; + + if (Tcl_DictObjGet(interp, ensdict, Tcl_NewStringObj(subcmd, -1), &orig_cmd) != TCL_OK || !orig_cmd) { + putlog(LOG_MISC, "*", "ERROR: Tcl non-BMP unicodesup could not find string %s subcommand", subcmd); + return; + } + + info[index].subcmd = subcmd; + info[index].cmd = orig_cmd; + Tcl_IncrRefCount(orig_cmd); + + snprintf(buf, sizeof buf, "::egg_string_%s", subcmd); + Tcl_CreateObjCommand(interp, buf, egg_string_unicodesup, &info[index], NULL); + + if (Tcl_DictObjPut(interp, ensdict, Tcl_NewStringObj(subcmd, -1), Tcl_NewStringObj(buf, -1)) != TCL_OK) { + putlog(LOG_MISC, "*", "ERROR: Tcl non-BMP unicodesup could not set dictionary redirect"); + return; + } +} + +/* register all workaround functions */ +void init_unicodesup(void) +{ + Tcl_Obj *ensdict; + Tcl_Command enscmd = Tcl_FindEnsemble(interp, Tcl_NewStringObj("string", -1), 0); + + if (!enscmd) { + putlog(LOG_MISC, "*", "ERROR: Tcl non-BMP unicodesup could not find string command"); + return; + } + if (!Tcl_IsEnsemble(enscmd)) { + putlog(LOG_MISC, "*", "ERROR: Tcl non-BMP unicodesup is not a namespace ensemble"); + return; + } + if (Tcl_GetEnsembleMappingDict(interp, enscmd, &ensdict) != TCL_OK || !ensdict) { + putlog(LOG_MISC, "*", "ERROR: Tcl non-BMP unicodesup could not get namespace ensemble dictionary"); + return; + } + + init_unicodesup_cmd(ensdict, "tolower", 0); + init_unicodesup_cmd(ensdict, "toupper", 1); + init_unicodesup_cmd(ensdict, "totitle", 2); + + if (Tcl_SetEnsembleMappingDict(interp, enscmd, ensdict) != TCL_OK) { + putlog(LOG_MISC, "*", "ERROR: Tcl non-BMP unicodesup could not set namespace ensemble dictionary"); + return; + } +} +#endif /* TCL_WORKAROUND_UNICODESUP */ + /* Not going through Tcl's crazy main() system (what on earth was he * smoking?!) so we gotta initialize the Tcl interpreter */ @@ -768,6 +1040,9 @@ void init_tcl(int argc, char **argv) } Tcl_PkgProvide(interp, "eggdrop", pver); +#ifdef TCL_WORKAROUND_UNICODESUP + init_unicodesup(); +#endif /* Initialize binds and traces */ init_bind(); init_traces(); From aefed9945d8cb4d3fbad3884ee9807fec00bd4b1 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 12 Feb 2023 21:26:51 +0000 Subject: [PATCH 157/320] Add ssl header version to .status Found by: wheel Patch by: michaelortmann Fixes: #1322 --- src/chanprog.c | 12 ++++++------ src/lang.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/chanprog.c b/src/chanprog.c index f5c5f6644..f20b6981e 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -336,22 +336,22 @@ void tell_verbose_status(int idx) dprintf(idx, "%s %s (%s %s)\n", MISC_TCLVERSION, ((interp) && (Tcl_Eval(interp, "info patchlevel") == TCL_OK)) ? tcl_resultstring() : (Tcl_Eval(interp, "info tclversion") == TCL_OK) ? - tcl_resultstring() : "*unknown*", MISC_TCLHVERSION, TCL_PATCH_LEVEL); + tcl_resultstring() : "*unknown*", MISC_HEADERVERSION, TCL_PATCH_LEVEL); if (tcl_threaded()) dprintf(idx, "Tcl is threaded.\n"); #ifdef TLS dprintf(idx, "TLS support is enabled.\n" #if defined HAVE_EVP_PKEY_GET1_EC_KEY && defined HAVE_OPENSSL_MD5 - "TLS library: %s\n", + "TLS library: %s (%s " OPENSSL_VERSION_TEXT ")\n", #elif !defined HAVE_EVP_PKEY_GET1_EC_KEY && defined HAVE_OPENSSL_MD5 - "TLS library: %s\n (no elliptic curve support)\n", + "TLS library: %s (%s " OPENSSL_VERSION_TEXT ")\n (no elliptic curve support)\n", #elif defined HAVE_EVP_PKEY_GET1_EC_KEY && !defined HAVE_OPENSSL_MD5 - "TLS library: %s\n (no MD5 support)\n", + "TLS library: %s (%s " OPENSSL_VERSION_TEXT ")\n (no MD5 support)\n", #elif !defined HAVE_EVP_PKEY_GET1_EC_KEY && !defined HAVE_OPENSSL_MD5 - "TLS library: %s\n (no elliptic curve or MD5 support)\n", + "TLS library: %s (%s " OPENSSL_VERSION_TEXT ")\n (no elliptic curve or MD5 support)\n", #endif - SSLeay_version(SSLEAY_VERSION)); + SSLeay_version(SSLEAY_VERSION), MISC_HEADERVERSION); #else dprintf(idx, "TLS support is not available.\n"); #endif diff --git a/src/lang.h b/src/lang.h index 8ce117c6f..8f9e391ca 100644 --- a/src/lang.h +++ b/src/lang.h @@ -122,7 +122,7 @@ #define MISC_JUPED get_language(0x542) #define MISC_NOFREESOCK get_language(0x543) #define MISC_TCLVERSION get_language(0x544) -#define MISC_TCLHVERSION get_language(0x545) +#define MISC_HEADERVERSION get_language(0x545) /* IRC */ #define IRC_BANNED get_language(0x600) From 7e8080e752b9d9c4a945aa1e758a5ac42fefd86c Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 12 Feb 2023 21:30:55 +0000 Subject: [PATCH 158/320] strftime doc update Patch by: michaelortmann --- doc/sphinx_source/install/install.rst | 2 +- doc/sphinx_source/modules/mod/server.rst | 4 ++-- doc/sphinx_source/using/core.rst | 5 ++--- doc/sphinx_source/using/tcl-commands.rst | 4 ++-- eggdrop.conf | 8 +++----- help/set/cmds1.help | 5 ++--- scripts/help/msg/userinfo.help | 16 ++++++++-------- src/mod/seen.mod/seen.c | 4 ++-- 8 files changed, 22 insertions(+), 26 deletions(-) diff --git a/doc/sphinx_source/install/install.rst b/doc/sphinx_source/install/install.rst index 2a1679844..c1af33284 100644 --- a/doc/sphinx_source/install/install.rst +++ b/doc/sphinx_source/install/install.rst @@ -37,7 +37,7 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier. and will enlarge the binary a bit, but it's worth it if you want to support Eggdrop development. -4. Eggdrop must be installed in a directory somewhere. This is +4. Eggdrop must be installed in a directory somewhere. This is accomplished by entering the UNIX command:: make install diff --git a/doc/sphinx_source/modules/mod/server.rst b/doc/sphinx_source/modules/mod/server.rst index 6cdd4a968..bb7f55c60 100644 --- a/doc/sphinx_source/modules/mod/server.rst +++ b/doc/sphinx_source/modules/mod/server.rst @@ -103,8 +103,8 @@ There are also some variables you can set in your config file: set msg-rate 2 Number of seconds to wait between transmitting queued lines to the - server. Lower this value at your own risk. ircd is known to start - flood control at 512 bytes/2 seconds. + server. Lower this value at your own risk. ircd is known to start flood + control at 512 bytes/2 seconds. set ssl-verify-servers 0 Control certificate verification for servers. You can set this by adding diff --git a/doc/sphinx_source/using/core.rst b/doc/sphinx_source/using/core.rst index 8da7b993d..802b0c696 100644 --- a/doc/sphinx_source/using/core.rst +++ b/doc/sphinx_source/using/core.rst @@ -193,7 +193,7 @@ logfile "logs/logfile" set timestamp-format "[%H:%M:%S]" Set the following to the timestamp for the logfile entries. Popular times might be "[%H:%M]" (hour, min), or "[%H:%M:%S]" (hour, min, sec). - Read 'man strftime' for more formatting options. Keep it below 32 chars. + Read 'man strftime' for more formatting options. Keep it below 32 chars. set keep-all-logs 0 If you want to keep your logfiles forever, turn this setting on. All @@ -218,8 +218,7 @@ logfile "logs/logfile" If keep-all-logs is 1, this setting will define the suffix of the logfiles. The default will result in a suffix like "04May2000". "%Y%m%d" will produce the often used yyyymmdd format. Read the strftime manpages - for more options. NOTE: On systems which don't support strftime, the - default format will always be used. + for more options. Console Settings ---------------- diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst index 904867221..888683d68 100644 --- a/doc/sphinx_source/using/tcl-commands.rst +++ b/doc/sphinx_source/using/tcl-commands.rst @@ -1079,7 +1079,7 @@ isidentified [channel] isaway [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 w`` on a channel the user is on, which will refresh the current away status stored by Eggdrop for all users on the channel. + Description: determine if a user is marked as 'away' on a server. IMPORTANT: this command is only "mostly" reliable on its own when the IRCv3 away-notify capability is available and negotiated with the IRC server (if you didn't add this to your config file, it likely isn't enabled- you can confirm using the ``cap`` Tcl command). Additionally, there is no way for Eggdrop (or any client) to capture a user's away status when the user first joins a channel (they are assumed present by Eggdrop on join). To use this command without the away-notify capability negotiated, or to get a user's away status on join (via a JOIN bind), use ``refreshchan 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. @@ -2688,7 +2688,7 @@ matchcidr
      matchstr ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - 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. + 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. diff --git a/eggdrop.conf b/eggdrop.conf index 81e35bfe9..ac0b8c297 100755 --- a/eggdrop.conf +++ b/eggdrop.conf @@ -188,7 +188,7 @@ set log-time 1 # Set the following to the timestamp for the logfile entries. Popular times # might be "[%H:%M]" (hour, min), or "[%H:%M:%S]" (hour, min, sec). -# Read `man strftime' for more formatting options. Keep it below 32 chars. +# Read `man strftime' for more formatting options. Keep it below 32 chars. set timestamp-format {[%H:%M:%S]} # If you want to keep your logfiles forever, turn this setting on. All @@ -200,8 +200,6 @@ set keep-all-logs 0 # If keep-all-logs is 1, this setting will define the suffix of the logfiles. # The default will result in a suffix like "04May2000". "%Y%m%d" will produce # the often used yyyymmdd format. Read the strftime manpages for more options. -# NOTE: On systems which don't support strftime, the default format will -# be used _always_. set logfile-suffix ".%d%b%Y" # You can specify when Eggdrop should switch logfiles and start fresh. You @@ -1184,8 +1182,8 @@ set extended-join 1 #### End of CAP features #### # Number of seconds to wait between transmitting queued lines to the server. -# Lower this value at your own risk. ircd is known to start flood control -# at 512 bytes/2 seconds. +# Lower this value at your own risk. ircd is known to start flood control at +# 512 bytes/2 seconds. set msg-rate 2 # This setting makes the bot try to get his original nickname back if its diff --git a/help/set/cmds1.help b/help/set/cmds1.help index 6f3a9addc..f6fead459 100644 --- a/help/set/cmds1.help +++ b/help/set/cmds1.help @@ -191,7 +191,7 @@ ### %bset timestamp-format%b Set the following to the timestamp for the logfile entries. Popular times might be "[%H:%M]" (hour,min), or "[%H:%M:%S]" (hour, min, sec). - Read `man strftime' for more formatting options. Keep it below 32 + Read `man strftime' for more formatting options. Keep it below 32 chars. %{help=set max-logsize}%{+n} ### %bset max-logsize%b @@ -211,8 +211,7 @@ If keep-all-logs is 1, this setting will define the suffix of the logfiles. The default will result in a suffix like "04May2000". "%Y%m%d" will produce the often used yyyymmdd format. Read the - strftime manpages for more options. NOTE: On systems which don't - support strftime, the default format will be used _always_. + strftime manpages for more options. %{help=set quiet-save}%{+n} ### %bset quiet-save%b <0/1/2/3> "Writing user file..." and "Writing channel file..." messages won't diff --git a/scripts/help/msg/userinfo.help b/scripts/help/msg/userinfo.help index ef1544314..51a0c4615 100644 --- a/scripts/help/msg/userinfo.help +++ b/scripts/help/msg/userinfo.help @@ -1,9 +1,9 @@ %{help=email} %b/MSG%b %B %bEMAIL%b - This will set your email address. It's shown when - someone does a WHOIS on you (see HELP WHOIS). If - you don't specify a email address, the bot will show - you the email address it currently has set for you (if any). + This will set your email address. It's shown when someone + does a WHOIS on you (see HELP WHOIS). If you don't specify a + email address, the bot will show you the email address it + currently has set for you (if any). %b/MSG%b %B %bEMAIL%b none This clears your email address. %{help=url} @@ -15,7 +15,7 @@ This clears your url address. %{help=bf} %b/MSG%b %B %bBF%b - This will set your boyfriend. some scripts (such as seen) + This will set your boyfriend. Some scripts (such as seen) use this information. If you don't specify a boyfriend, the bot will show you the boyfriend it currently has set for you (if any). @@ -23,7 +23,7 @@ This clears your boyfriend. %{help=gf} %b/MSG%b %B %bGF%b - This will set your girlfriend. some scripts (such as seen) + This will set your girlfriend. Some scripts (such as seen) use this information. If you don't specify a girlfriend, the bot will show you the girlfriend it currently has set for you (if any). @@ -31,14 +31,14 @@ This clears your girlfriend. %{help=irl} %b/MSG%b %B %bIRL%b - This will set your real name. just for the information + This will set your real name. Just for the information of others :). If you don't specify a real name, the bot will show you the real name it currently has set for you (if any). %b/MSG%b %B %bIRL%b none This clears your real name. %{help=dob} %b/MSG%b %B %bDOB%b - This will set your date of birth. now now, be honest :) + This will set your date of birth. Now, be honest :) If you don't specify a date of birth, the bot will show you the date of birth it currently has set for you (if any). %b/MSG%b %B %bDOB%b none diff --git a/src/mod/seen.mod/seen.c b/src/mod/seen.mod/seen.c index 66c834f8a..4e2182152 100644 --- a/src/mod/seen.mod/seen.c +++ b/src/mod/seen.mod/seen.c @@ -395,7 +395,7 @@ static void do_seen(int idx, char *prefix, char *nick, char *hand, prefix, whoredirect, whotarget); return; } - /* Target not on this channel. Check other channels */ + /* Target not on this channel. Check other channels */ chan = chanset; while (chan) { m = ismember(chan, whotarget); @@ -442,7 +442,7 @@ static void do_seen(int idx, char *prefix, char *nick, char *hand, } } } - /* Target known, but nowhere to be seen. Give last IRC and botnet time */ + /* Target known, but nowhere to be seen. Give last IRC and botnet time */ wordshift(word1, text); if (!strcasecmp(word1, "anywhere")) cr = NULL; From ac2c81a0222edb11c529b2165bbf1068a28e4bfc Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 12 Feb 2023 16:58:45 -0500 Subject: [PATCH 159/320] Revert bind char change ... but keep DCC output of * --- src/flags.c | 2 +- src/tclhash.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/flags.c b/src/flags.c index 26285fdbd..ce60b2e3d 100644 --- a/src/flags.c +++ b/src/flags.c @@ -1133,7 +1133,7 @@ static int flag2str(char *string, int bot, int udef) x++; } if (string == old) - *string++ = '*'; + *string++ = '-'; return string - old; } diff --git a/src/tclhash.c b/src/tclhash.c index 71d35f6c2..cb54cecdc 100644 --- a/src/tclhash.c +++ b/src/tclhash.c @@ -1316,6 +1316,10 @@ void tell_binds(int idx, char *par) continue; proc = tc->func_name; build_flags(flg, &(tc->flags), NULL); + if (!strcmp(flg, "-|-")) { + flg[0] = '*'; + flg[1] = '\0'; + } if (showall || proc[0] != '*') { int ok = 0; From a602590e54a30dca0982c43411d1abefeb606a4b Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 12 Feb 2023 19:47:13 -0500 Subject: [PATCH 160/320] Update woobie mod docs --- doc/html/index.html | 24 +- doc/html/modules/internals.html | 396 ++++++++++++++++++++++++ doc/html/tutorials/module.html | 373 ++++++++++++++++++++++ doc/sphinx_source/index.rst | 2 + doc/sphinx_source/modules/internals.rst | 264 ++++++++++++++++ doc/sphinx_source/modules/writing.rst | 6 +- doc/sphinx_source/tutorials/module.rst | 235 ++++++++++++++ 7 files changed, 1297 insertions(+), 3 deletions(-) create mode 100644 doc/html/modules/internals.html create mode 100644 doc/html/tutorials/module.html create mode 100644 doc/sphinx_source/modules/internals.rst create mode 100644 doc/sphinx_source/tutorials/module.rst diff --git a/doc/html/index.html b/doc/html/index.html index 412af9939..31d1e7456 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -68,12 +68,14 @@

      Table of Contents

    3. Common First Steps
    4. Enabling TLS Security on Eggdrop
    5. Writing an Eggdrop Script
    6. +
    7. Writing an Eggdrop Module
    8. Eggdrop Modules

      About Eggdrop

      diff --git a/doc/html/modules/internals.html b/doc/html/modules/internals.html new file mode 100644 index 000000000..9faf08e66 --- /dev/null +++ b/doc/html/modules/internals.html @@ -0,0 +1,396 @@ + + + + + + + + Eggdrop Bind Internals — Eggdrop 1.9.4 documentation + + + + + + + + + + + + + +
      +
      + +
      + +
      +
      +
      + +
      +

      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

      +

      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;
      + */
      +p_tcl_bind_list H_dcc;
      +
      +/* Creating the bind table:
      + * @param[in] const char *name Limited in length, see tclhash.h
      + * @param[in] int flags        HT_STACKABLE or 0
      + * @param[in] IntFunc          Function pointer to C handler
      + * @return    p_tcl_bind_list  aka (tcl_bind_list_t *)
      + */
      +H_dcc = add_bind_table("dcc", 0, builtin_dcc);
      +
      +
      +

      What the C handler does is explained later, because a lot happens before it is actually called. IntFunc is a generic function pointer that returns an int with arbitrary arguments.

      +

      H_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

      +

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

      It does not automatically call multiple binds that match, see later in the Triggering any Bind section for details.

      +
      +
      +

      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} {
      +  putlog "myproc was called, argument list: '[join $args ',']'"
      +  return 0
      +}
      +
      +
      +

      Of course it is not clear so far:

      +
        +
      • If flags -|- matter for this bind at all and what they are checked against
      • +
      • If channel flags have a meaning or global/bot only
      • +
      • What test is matched against to see if the bind should trigger
      • +
      • Which arguments myproc receives, the example just accepts all arguments
      • +
      +
      +
      +

      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 };
      +  int x;
      +  char s[11];
      +
      +  get_user_flagrec(dcc[idx].user, &fr, dcc[idx].u.chat->con_chan);
      +  egg_snprintf(s, sizeof s, "%ld", dcc[idx].sock);
      +  Tcl_SetVar(interp, "_dcc1", (char *) dcc[idx].nick, 0);
      +  Tcl_SetVar(interp, "_dcc2", (char *) s, 0);
      +  Tcl_SetVar(interp, "_dcc3", (char *) args, 0);
      +  x = check_tcl_bind(H_dcc, cmd, &fr, " $_dcc1 $_dcc2 $_dcc3",
      +                  MATCH_PARTIAL | BIND_USE_ATTR | BIND_HAS_BUILTINS);
      +  /* snip ..., return code handling */
      +  return 0;
      +}
      +
      +
      +

      The global Tcl variables $_dcc1 $_dcc2 $_dcc3 are used as temporary string variables and passed as arguments to the registered Tcl proc.

      +

      This shows which arguments the callbacks in Tcl get:

      +
        +
      • the nickname of the DCC chat user (handle of the user)
      • +
      • the IDX (socket id) of the partyline so [putdcc] can respond back
      • +
      • another string argument that depends on the caller
      • +
      +

      The call to check_tcl_dcc can be found in the DCC parsing in src/dcc.c.

      +
      +
      +

      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)
      + * @param[in] const char *match        String to match the bind-masks against
      + * @param[in] struct flag_record *atr  Flags of the user calling the bind
      + * @param[in] const char *param        Arguments to add to the bind callback proc (e.g. " $_dcc1 $_dcc2 $_dcc3")
      + * @param[in] int match_type           Matchtype and various flags
      + * @returns   int                      Match result code
      + */
      +
      +/* Source code changed, only illustrative */
      +int check_tcl_bind(tcl_bind_list_t *tl, const char *match, struct flag_record *atr, const char *param, int match_type) {
      +  int x = BIND_NOMATCH;
      +  for (tm = tl->first; tm && !finish; tm_last = tm, tm = tm->next) {
      +    /* Check if bind mask matches */
      +    if (!check_bind_match(match, tm->mask, match_type))
      +      continue;
      +    for (tc = tm->first; tc; tc = tc->next) {
      +      /* Check if the provided flags suffice for this command. */
      +      if (check_bind_flags(&tc->flags, atr, match_type)) {
      +        tc->hits++;
      +        /* not much more than Tcl_Eval(interp, "<procname> <arguments>"); and grab the result */
      +        x = trigger_bind(tc->func_name, param, tm->mask);
      +      }
      +    }
      +  }
      +  return x;
      +}
      +
      +
      +

      The supplied flags to check_tcl_bind in check_tcl_dcc are what defines how matching is performed.

      +

      In the case of a DCC bind we had:

      +
        +
      • Matchtype MATCH_PARTIAL: Prefix-Matching if the command can be uniquely identified (e.g. dcc .help calls .help)
      • +
      • Additional flag BIND_USE_ATTR: Flags are checked
      • +
      • Additional flag BIND_HAS_BUILTINS: Something with flag matching, unsure
      • +
      +

      For details on the available match types (wildcard matching, exact matching, etc.) see src/tclegg.h. Additional flags are also described there as well as the return codes of check_tcl_bind (e.g. BIND_NOMATCH).

      +

      Note: For a bind type to be stackable it needs to be registered with HT_STACKABLE AND check_tcl_bind must be called with BIND_STACKABLE.

      +
      +
      +

      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)
      + * @param[in] cmd_t *            a NULL-terminated table of binds:
      + * cmd_t *mycmds = {
      + *   {char *name, char *flags, IntFunc function, char *tcl_name},
      + *   ...,
      + *   {NULL, NULL, NULL, NULL}
      + * };
      + */
      +void add_builtins(tcl_bind_list_t *tl, cmd_t *cc) {
      +  char p[1024];
      +  cd_tcl_cmd tclcmd;
      +
      +  tclcmd.name = p;
      +  tclcmd.callback = tl->func;
      +  for (i = 0; cc[i].name; i++) {
      +    /* Create Tcl command with automatic or given names *<bindtype>:<funcname>, e.g.
      +     * - H_raw {"324", "", got324, "irc:324"} => *raw:irc:324
      +     * - H_dcc {"boot", "t", cmd_boot, NULL} => *dcc:boot
      +     */
      +    egg_snprintf(p, sizeof p, "*%s:%s", tl->name, cc[i].funcname ? cc[i].funcname : cc[i].name);
      +    /* arbitrary void * can be included, we include C function pointer */
      +    tclcmd.cdata = (void *) cc[i].func;
      +    add_cd_tcl_cmd(tclcmd);
      +    bind_bind_entry(tl, cc[i].flags, cc[i].name, p);
      +  }
      +}
      +
      +
      +

      It automatically creates Tcl commands (e.g. *dcc:cmd_boot) that will call the C handler from add_bind_table in the first section Bind Table Creation and it gets a context (void *) argument with the C function it is supposed to call (e.g. cmd_boot()).

      +

      Now we can actually look at the C function handler for dcc as an example and what it has to implement.

      +
      +
      +

      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[]) {
      +  int idx;
      +  /* F: The C function we want to call, if the bind is okay, e.g. cmd_boot() */
      +  Function F = (Function) cd;
      +
      +  /* Task of C function: verify argument count and syntax as any Tcl command */
      +  BADARGS(4, 4, " hand idx param");
      +
      +  /* C Macro only used in C handlers for bind types, sanity checks the Tcl proc name
      +   * for *<bindtype>:<name> and that we are in the right C handler
      +   */
      +  CHECKVALIDITY(builtin_dcc);
      +
      +  idx = findidx(atoi(argv[2]));
      +  if (idx < 0) {
      +      Tcl_AppendResult(irp, "invalid idx", NULL);
      +      return TCL_ERROR;
      +  }
      +
      +  /* Call the desired C function, e.g. cmd_boot() with their arguments */
      +  F(dcc[idx].user, idx, argv[3]);
      +  Tcl_ResetResult(irp);
      +  Tcl_AppendResult(irp, "0", NULL);
      +  return TCL_OK;
      +}
      +
      +
      +

      This is finally the part where we see the arguments a C function gets for a DCC bind as opposed to a Tcl proc.

      +

      F(dcc[idx].user, idx, argv[3]):

      +
        +
      • User information as struct userrec *
      • +
      • IDX as int
      • +
      • The 3rd string argument from the Tcl call to *dcc:cmd_boot, which was $_dcc3 which was args to check_tcl_dcc which was everything after the dcc command
      • +
      +

      So this is how we register C callbacks for binds with the correct arguments:

      +
      /* We know the return value is ignored because the return value of F
      + * in builtin_dcc is ignored, so it can be void, but for other binds
      + * it could be something else and used in the C handler for the bind.
      + */
      +void cmd_boot(struct userrec *u, int idx, char *par) { /* snip */ }
      +
      +cmd_t *mycmds = {
      +  {"boot", "t", (IntFunc) cmd_boot, NULL /* automatic name: *dcc:boot */},
      +  {NULL, NULL, NULL, NULL}
      +};
      +add_builtins(H_dcc, mycmds);
      +
      +
      +
      +
      +

      Summary

      +

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

      +
        +
      • check_tcl_dcc() creates Tcl variables $_dcc1 $_dcc2 $_dcc3 and lets check_tcl_bind call the binds
      • +
      • Tcl binds are done at this point
      • +
      • C binds mean the Tcl command associated with the bind is *dcc:boot which calls builtin_dcc which gets cmd_boot as ClientData cd argument
      • +
      • buildin_dcc performs some sanity checking to avoid crashes and then calls cmd_boot() aka F() with the arguments it wants C callbacks to have
      • +
      +

      Example edited and annotated gdb backtrace in cmd_boot after doing .boot test on the partyline as user thommey with typical owner flags.

      +
      #0  cmd_boot (u=0x55e8bd8a49b0, idx=4, par=0x55e8be6a0010 "test") at cmds.c:614
      +    *u = {next = 0x55e8bd8aec90, handle = "thommey", flags = 8977024, flags_udef = 0, chanrec = 0x55e8bd8aeae0, entries = 0x55e8bd8a4a10}
      +#1  builtin_dcc (cd=0x55e8bbf002d0 <cmd_boot>, irp=0x55e8bd59b1c0, argc=4, argv=0x55e8bd7e3e00) at tclhash.c:678
      +    idx = 4
      +    argv = {0x55e8be642fa0 "*dcc:boot", 0x55e8be9f6bd0 "thommey", 0x55e8be7d9020 "4", 0x55e8be6a0010 "test", 0x0}
      +    F = 0x55e8bbf002d0 <cmd_boot>
      +#5  Tcl_Eval (interp=0x55e8bd59b1c0, script = "*dcc:boot $_dcc1 $_dcc2 $_dcc3") from /usr/lib/x86_64-linux-gnu/libtcl8.6.so
      +    Tcl: return $_dcc1 = "thommey"
      +    Tcl: return $_dcc2 = "4"
      +    Tcl: return $_dcc3 = "test"
      +    Tcl: return $lastbind = "boot" (set automatically by trigger_bind)
      +#8  trigger_bind (proc=proc@entry=0x55e8bd5efda0 "*dcc:boot", param=param@entry=0x55e8bbf4112b " $_dcc1 $_dcc2 $_dcc3", mask=mask@entry=0x55e8bd5efd40 "boot") at tclhash.c:742
      +#9  check_tcl_bind (tl=0x55e8bd5eecb0 <H_dcc>, match=match@entry=0x7ffcf3f9dac1 "boot", atr=atr@entry=0x7ffcf3f9d100, param=param@entry=0x55e8bbf4112b " $_dcc1 $_dcc2 $_dcc3", match_type=match_type@entry=80) at tclhash.c:942
      +    proc = 0x55e8bd5efda0 "*dcc:boot"
      +    mask = 0x55e8bd5efd40 "boot"
      +    brkt = 0x7ffcf3f9dac6 "test"
      +#10 check_tcl_dcc (cmd=cmd@entry=0x7ffcf3f9dac1 "boot", idx=idx@entry=4, args=0x7ffcf3f9dac6 "test") at tclhash.c:974
      +    fr = {match = 5, global = 8977024, udef_global = 0, bot = 0, chan = 0, udef_chan = 0}
      +#11 dcc_chat (idx=idx@entry=4, buf=<optimized out>, i=<optimized out>) at dcc.c:1068
      +    v = 0x7ffcf3f9dac1 "boot"
      +
      +
      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html new file mode 100644 index 000000000..b750801ea --- /dev/null +++ b/doc/html/tutorials/module.html @@ -0,0 +1,373 @@ + + + + + + + + Writing an Eggdrop Module — Eggdrop 1.9.4 documentation + + + + + + + + + + + + + +
      +
      + +
      + +
      +
      +
      + +
      +

      Writing an Eggdrop Module

      +

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

      +

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

      +
      +

      Module Header

      +

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

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

      Required Code

      +

      For this section, you don’t necessarily need to understand what it is doing, but this code is required for a module to function.

      +

      You’ll next want to name your module:

      +
      #define MODULE_NAME "woobie"
      +
      +
      +

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

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

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

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

      This function is called when Eggdrop loads the module:

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

      This next function is used to unload the module:

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

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

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

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

      +
      +
      +

      Adding a Partyline Command

      +

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

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

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

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

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

      +
      +
      +

      Adding a Tcl Command

      +

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

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

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

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

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

      +
      +
      +

      Adding a Tcl Bind

      +

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

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

      And then remove the binds when the module is unloaded:

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

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

      +
      +

      Defining bind arguments

      +

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

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

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

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

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

      +
      +
      +

      Calling the Bind

      +

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

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

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

      +
      +
      +
      +

      Exporting the Bind

      +

      Do we need to do this?

      +
      +
      + + +
      +
      +
      +
      +
      +
      +
      + + + + + \ No newline at end of file diff --git a/doc/sphinx_source/index.rst b/doc/sphinx_source/index.rst index dca64902a..5e0178241 100644 --- a/doc/sphinx_source/index.rst +++ b/doc/sphinx_source/index.rst @@ -78,6 +78,7 @@ The Eggheads development team can be found lurking on #eggdrop on the Libera net tutorials/firststeps tutorials/tlssetup tutorials/firstscript + tutorials/module.rst .. toctree:: :caption: Eggdrop Modules @@ -86,6 +87,7 @@ The Eggheads development team can be found lurking on #eggdrop on the Libera net modules/index modules/included modules/writing + modules/internals.rst .. toctree:: :caption: About Eggdrop diff --git a/doc/sphinx_source/modules/internals.rst b/doc/sphinx_source/modules/internals.rst new file mode 100644 index 000000000..5e026a391 --- /dev/null +++ b/doc/sphinx_source/modules/internals.rst @@ -0,0 +1,264 @@ +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 +------------------- + +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; + */ + p_tcl_bind_list H_dcc; + + /* Creating the bind table: + * @param[in] const char *name Limited in length, see tclhash.h + * @param[in] int flags HT_STACKABLE or 0 + * @param[in] IntFunc Function pointer to C handler + * @return p_tcl_bind_list aka (tcl_bind_list_t *) + */ + H_dcc = add_bind_table("dcc", 0, builtin_dcc); + +What the :code:`C handler` does is explained later, because a lot happens before it is actually called. :code:`IntFunc` is a generic function pointer that returns an :code:`int` with arbitrary arguments. + +:code:`H_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 +----------------------------- + +:code:`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 + +It does not automatically call multiple binds that match, see later in the `Triggering any Bind`_ section for details. + +Tcl Binding +----------- + +After the bind table is created with :code:`add_bind_table`, Tcl procs can already be registered to this bind by calling:: + + bind dcc -|- test myproc + proc myproc {args} { + putlog "myproc was called, argument list: '[join $args ',']'" + return 0 + } + +Of course it is not clear so far: + +* If flags :code:`-|-` matter for this bind at all and what they are checked against +* If channel flags have a meaning or global/bot only +* What :code:`test` is matched against to see if the bind should trigger +* Which arguments :code:`myproc` receives, the example just accepts all arguments + +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 }; + int x; + char s[11]; + + get_user_flagrec(dcc[idx].user, &fr, dcc[idx].u.chat->con_chan); + egg_snprintf(s, sizeof s, "%ld", dcc[idx].sock); + Tcl_SetVar(interp, "_dcc1", (char *) dcc[idx].nick, 0); + Tcl_SetVar(interp, "_dcc2", (char *) s, 0); + Tcl_SetVar(interp, "_dcc3", (char *) args, 0); + x = check_tcl_bind(H_dcc, cmd, &fr, " $_dcc1 $_dcc2 $_dcc3", + MATCH_PARTIAL | BIND_USE_ATTR | BIND_HAS_BUILTINS); + /* snip ..., return code handling */ + return 0; + } + +The global Tcl variables :code:`$_dcc1 $_dcc2 $_dcc3` are used as temporary string variables and passed as arguments to the registered Tcl proc. + +This shows which arguments the callbacks in Tcl get: + +* the nickname of the DCC chat user (handle of the user) +* the IDX (socket id) of the partyline so :code:`[putdcc]` can respond back +* another string argument that depends on the caller + +The call to :code:`check_tcl_dcc` can be found in the DCC parsing in `src/dcc.c`. + +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) + * @param[in] const char *match String to match the bind-masks against + * @param[in] struct flag_record *atr Flags of the user calling the bind + * @param[in] const char *param Arguments to add to the bind callback proc (e.g. " $_dcc1 $_dcc2 $_dcc3") + * @param[in] int match_type Matchtype and various flags + * @returns int Match result code + */ + + /* Source code changed, only illustrative */ + int check_tcl_bind(tcl_bind_list_t *tl, const char *match, struct flag_record *atr, const char *param, int match_type) { + int x = BIND_NOMATCH; + for (tm = tl->first; tm && !finish; tm_last = tm, tm = tm->next) { + /* Check if bind mask matches */ + if (!check_bind_match(match, tm->mask, match_type)) + continue; + for (tc = tm->first; tc; tc = tc->next) { + /* Check if the provided flags suffice for this command. */ + if (check_bind_flags(&tc->flags, atr, match_type)) { + tc->hits++; + /* not much more than Tcl_Eval(interp, " "); and grab the result */ + x = trigger_bind(tc->func_name, param, tm->mask); + } + } + } + return x; + } + +The supplied flags to :code:`check_tcl_bind` in `check_tcl_dcc` are what defines how matching is performed. + +In the case of a DCC bind we had: + +* Matchtype :code:`MATCH_PARTIAL`: Prefix-Matching if the command can be uniquely identified (e.g. dcc .help calls .help) +* Additional flag :code:`BIND_USE_ATTR`: Flags are checked +* Additional flag :code:`BIND_HAS_BUILTINS`: Something with flag matching, unsure + +For details on the available match types (wildcard matching, exact matching, etc.) see :code:`src/tclegg.h`. Additional flags are also described there as well as the return codes of :code:`check_tcl_bind` (e.g. :code:`BIND_NOMATCH`). + +Note: For a bind type to be stackable it needs to be registered with :code:`HT_STACKABLE` AND :code:`check_tcl_bind` must be called with :code:`BIND_STACKABLE`. + +C Binding +--------- + +To create a C function that is called by the bind, Eggdrop provides the :code:`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) + * @param[in] cmd_t * a NULL-terminated table of binds: + * cmd_t *mycmds = { + * {char *name, char *flags, IntFunc function, char *tcl_name}, + * ..., + * {NULL, NULL, NULL, NULL} + * }; + */ + void add_builtins(tcl_bind_list_t *tl, cmd_t *cc) { + char p[1024]; + cd_tcl_cmd tclcmd; + + tclcmd.name = p; + tclcmd.callback = tl->func; + for (i = 0; cc[i].name; i++) { + /* Create Tcl command with automatic or given names *:, e.g. + * - H_raw {"324", "", got324, "irc:324"} => *raw:irc:324 + * - H_dcc {"boot", "t", cmd_boot, NULL} => *dcc:boot + */ + egg_snprintf(p, sizeof p, "*%s:%s", tl->name, cc[i].funcname ? cc[i].funcname : cc[i].name); + /* arbitrary void * can be included, we include C function pointer */ + tclcmd.cdata = (void *) cc[i].func; + add_cd_tcl_cmd(tclcmd); + bind_bind_entry(tl, cc[i].flags, cc[i].name, p); + } + } + +It automatically creates Tcl commands (e.g. :code:`*dcc:cmd_boot`) that will call the `C handler` from `add_bind_table` in the first section `Bind Table Creation`_ and it gets a context (void \*) argument with the C function it is supposed to call (e.g. `cmd_boot()`). + +Now we can actually look at the C function handler for dcc as an example and what it has to implement. + +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[]) { + int idx; + /* F: The C function we want to call, if the bind is okay, e.g. cmd_boot() */ + Function F = (Function) cd; + + /* Task of C function: verify argument count and syntax as any Tcl command */ + BADARGS(4, 4, " hand idx param"); + + /* C Macro only used in C handlers for bind types, sanity checks the Tcl proc name + * for *: and that we are in the right C handler + */ + CHECKVALIDITY(builtin_dcc); + + idx = findidx(atoi(argv[2])); + if (idx < 0) { + Tcl_AppendResult(irp, "invalid idx", NULL); + return TCL_ERROR; + } + + /* Call the desired C function, e.g. cmd_boot() with their arguments */ + F(dcc[idx].user, idx, argv[3]); + Tcl_ResetResult(irp); + Tcl_AppendResult(irp, "0", NULL); + return TCL_OK; + } + +This is finally the part where we see the arguments a C function gets for a DCC bind as opposed to a Tcl proc. + +code:`F(dcc[idx].user, idx, argv[3])`: + +* User information as struct userrec * +* IDX as int +* The 3rd string argument from the Tcl call to \*dcc:cmd_boot, which was :code:`$_dcc3` which was :code:`args` to :code:`check_tcl_dcc` which was everything after the dcc command + +So this is how we register C callbacks for binds with the correct arguments:: + + /* We know the return value is ignored because the return value of F + * in builtin_dcc is ignored, so it can be void, but for other binds + * it could be something else and used in the C handler for the bind. + */ + void cmd_boot(struct userrec *u, int idx, char *par) { /* snip */ } + + cmd_t *mycmds = { + {"boot", "t", (IntFunc) cmd_boot, NULL /* automatic name: *dcc:boot */}, + {NULL, NULL, NULL, NULL} + }; + add_builtins(H_dcc, mycmds); + +Summary +------- + +In summary, this is how the dcc bind is called: + +* :code:`check_tcl_dcc()` creates Tcl variables :code:`$_dcc1 $_dcc2 $_dcc3` and lets :code:`check_tcl_bind` call the binds +* Tcl binds are done at this point +* C binds mean the Tcl command associated with the bind is :code:`*dcc:boot` which calls :code:`builtin_dcc` which gets :code:`cmd_boot` as ClientData cd argument +* :code:`gbuildin_dcc` performs some sanity checking to avoid crashes and then calls :code:`cmd_boot()` aka :code:`F()` with the arguments it wants C callbacks to have + +Example edited and annotated gdb backtrace in :code::`cmd_boot` after doing :code:`.boot test` on the partyline as user :code:`thommey` with typical owner flags. +:: + + #0 cmd_boot (u=0x55e8bd8a49b0, idx=4, par=0x55e8be6a0010 "test") at cmds.c:614 + *u = {next = 0x55e8bd8aec90, handle = "thommey", flags = 8977024, flags_udef = 0, chanrec = 0x55e8bd8aeae0, entries = 0x55e8bd8a4a10} + #1 builtin_dcc (cd=0x55e8bbf002d0 , irp=0x55e8bd59b1c0, argc=4, argv=0x55e8bd7e3e00) at tclhash.c:678 + idx = 4 + argv = {0x55e8be642fa0 "*dcc:boot", 0x55e8be9f6bd0 "thommey", 0x55e8be7d9020 "4", 0x55e8be6a0010 "test", 0x0} + F = 0x55e8bbf002d0 + #5 Tcl_Eval (interp=0x55e8bd59b1c0, script = "*dcc:boot $_dcc1 $_dcc2 $_dcc3") from /usr/lib/x86_64-linux-gnu/libtcl8.6.so + Tcl: return $_dcc1 = "thommey" + Tcl: return $_dcc2 = "4" + Tcl: return $_dcc3 = "test" + Tcl: return $lastbind = "boot" (set automatically by trigger_bind) + #8 trigger_bind (proc=proc@entry=0x55e8bd5efda0 "*dcc:boot", param=param@entry=0x55e8bbf4112b " $_dcc1 $_dcc2 $_dcc3", mask=mask@entry=0x55e8bd5efd40 "boot") at tclhash.c:742 + #9 check_tcl_bind (tl=0x55e8bd5eecb0 , match=match@entry=0x7ffcf3f9dac1 "boot", atr=atr@entry=0x7ffcf3f9d100, param=param@entry=0x55e8bbf4112b " $_dcc1 $_dcc2 $_dcc3", match_type=match_type@entry=80) at tclhash.c:942 + proc = 0x55e8bd5efda0 "*dcc:boot" + mask = 0x55e8bd5efd40 "boot" + brkt = 0x7ffcf3f9dac6 "test" + #10 check_tcl_dcc (cmd=cmd@entry=0x7ffcf3f9dac1 "boot", idx=idx@entry=4, args=0x7ffcf3f9dac6 "test") at tclhash.c:974 + fr = {match = 5, global = 8977024, udef_global = 0, bot = 0, chan = 0, udef_chan = 0} + #11 dcc_chat (idx=idx@entry=4, buf=, i=) at dcc.c:1068 + v = 0x7ffcf3f9dac1 "boot" diff --git a/doc/sphinx_source/modules/writing.rst b/doc/sphinx_source/modules/writing.rst index da222fbe5..ceeabb4fe 100644 --- a/doc/sphinx_source/modules/writing.rst +++ b/doc/sphinx_source/modules/writing.rst @@ -1,5 +1,7 @@ -Writing an Eggdrop Module -========================= +.. _writing_module: + +How to Write an Eggdrop Module +============================== Note: This is for a simple module of 1 source file. diff --git a/doc/sphinx_source/tutorials/module.rst b/doc/sphinx_source/tutorials/module.rst new file mode 100644 index 000000000..b4743484f --- /dev/null +++ b/doc/sphinx_source/tutorials/module.rst @@ -0,0 +1,235 @@ +Writing a Basic Eggdrop Module +============================== + +An Eggdrop module is a piece of C code that can be loaded (or unloaded) onto the core Eggdrop code. A module differs from a Tcl script in that modules must be compiled and then loaded, whereas scripts can be edited and loaded directly. Importantly, a module can be written to create new Eggdrop-specific Tcl commands and binds that a user can then use in a Tcl script. For example, the server module loaded by Eggdrop is what creates the "jump" Tcl command, which causes tells the Eggdrop to jump to the next server in its server list. + +There are a few required functions a module must perform in order to properly work with Eggdrop + +Module Header +------------- + +A module should include license information. This tells other open source users how they are allowed to use the code. Eggdrop uses GPL 2.0 licensing, and our license information looks like this:: + + /* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +Required Code +------------- + +For this section, you don't necessarily need to understand what it is doing, but this code is required for a module to function. If you want to learn more about this, check out :ref:`writing_module` + +You'll next want to name your module:: + + #define MODULE_NAME "woobie" + +Declare your own function tables (again, you don't need to understand this part; you just need to copy/paste it):: + + #undef global + static Function *global = NULL, *server_funcs = NULL; + EXPORT_SCOPE char *woobie_start(); + +Next are two memory-related functions used by the core Eggdrop .status and .module commands:: + + static int woobie_expmem() + { + int size = 0; + + return size; + } + + static void woobie_report(int idx, int details) + { + if (details) { + int size = woobie_expmem(); + + dprintf(idx, " Using %d byte%s of memory\n", size, + (size != 1) ? "s" : ""); + } + } + +This function is called when Eggdrop loads the module:: + + char *woobie_start(Function *global_funcs) + { + global = global_funcs; + + /* Register the module. */ + module_register(MODULE_NAME, woobie_table, 2, 1); + /* ^--- minor module version + * ^------ major module version + * ^-------------------- module function table + * ^--------------------------------- module name + */ + + if (!module_depend(MODULE_NAME, "eggdrop", 108, 0)) { + module_undepend(MODULE_NAME); + return "This module requires Eggdrop 1.8.0 or later."; + } + +This next function is used to unload the module:: + + static char *woobie_close() + { + module_undepend(MODULE_NAME); + return NULL; + } + +This creates a function table that is exported to Eggdrop. In other words, these are commands that are made available to the Eggdrop core and other modules. At minimum, the following functions must be exported:: + + static Function woobie_table[] = { + (Function) woobie_start, + (Function) woobie_close, + (Function) woobie_expmem, + (Function) woobie_report, + }; + +At this point, you should have a module that compiles and can be loaded by Eggdrop- but dosen't really do anything yet. We'll change that in the next section! + +Adding a Partyline Command +-------------------------- + +A partyline command function accepts three arguments- a pointer to the user record of the user that called the command; the idx the user was on when calling the command; and a pointer to the arguments appended to the command. A command should immediately log that it was called to the LOG_CMDS log level, and then run its desired code. This simple example prints "WOOBIE" to the partyline idx of the user that called it:: + + static int cmd_woobie(struct userrec *u, int idx, char *par) + { + putlog(LOG_CMDS, "*", "#%s# woobie", dcc[idx].nick); + dprintf(idx, "WOOBIE!\n"); + return 0; + } + +If you add partyline commands, you need to create a table which links the new command name to the function it should call. This can be done like so:: + + static cmd_t mywoobie[] = { + /* command flags function tcl-name */ + {"woobie", "", cmd_woobie, NULL}, + {NULL, NULL, NULL, NULL} /* Mark end. */ + }; + +The tcl-name field can be a name for a Tcl command that will also call the partyline command, or it can be left as NULL. + +Adding a Tcl Command +-------------------- + +Eggdrop uses the Tcl C API library to interact with the Tcl interpreter. Learning this API is outside the scope of this tutorial, but this example Tcl command will echo the provided argument:: + + + static int tcl_echome STDVAR { + BADARGS(2, 2, " arg"); + + if (strcmp(argv[1], "llama") { + Tcl_AppendResult(irp, "You said: ", argv[1], NULL); + return TCL_OK; + } else { + Tcl_AppendResult(irp, "illegal word!"); + return TCL_ERROR; + } + } + + A few notes on this example. BADARGS is a macro that checks the input provided to the Tcl command. The first argument BADARGS accepts is the minimum number of paramters the Tcl command must accept (including the command itself). The second argument is the maximum number of parameters that BADARGS will accept. The third argument is the help text that will be displayed if these boundaries are exceeded. For example, BADARGS(2, 4, " name ?date? ?place?") requires at least one argument to be passed, and a maximum of three arguments. Eggdrop code style is to enclose optional arguments between qusetion marks in the help text. + +Similar to adding a partyline command, you also have to create a function table for a new Tcl command:: + + static tcl_cmds mytcl[] = { + {"echome", tcl_echome}, + {NULL, NULL} /* Required to mark end of table */ + }; + +And now the newly-created Tcl command 'echome' is available for use in a script! + +Adding a Tcl Bind +----------------- + +A Tcl bind is a command that is activated when a certain condition is met. With Eggdrop, these are usually linked to receiving messages or other IRC events. To create a bind, you must first register the bind type with Eggdrop when the module is loaded (you added the woobie_start() and woobie_close functions earlier, you still need all that earlier code in here as well):: + + static p_tcl_bind_list H_woob; + + ... + + char *woobie_start(Function *global_funcs) + { + ... + H_woob = add_bind_table("woobie", HT_STACKABLE, woobie_2char); + } + +And then remove the binds when the module is unloaded:: + + static char *woobie_close() + { + ... + del_bind_table(H_woob); + } + +Here, "woobie" is the name of the bind (similar to the PUB, MSG, JOIN types of binds you already see in tcl-commands.doc). HT_STACKABLE means you can have multiple binds of this type. "woobie_2char" defines how many arguments the bind will take, and we'll talk about that next. + +Defining bind arguments +^^^^^^^^^^^^^^^^^^^^^^^ + +The following code example defines a bind that will take two arguments:: + + static int woobie_2char STDVAR + { + Function F = (Function) cd; + + BADARGS(3, 3, " nick chan"); + + CHECKVALIDITY(woobie_2char); + F(argv[1], argv[2]); + return TCL_OK; + } + +And this example defines a bind that will take three arguments:: + + static int woobie_3char STDVAR + { + Function F = (Function) cd; + + BADARGS(4, 4, " foo bar moo"); + + CHECKVALIDITY(woobie_3char); + F(argv[1], argv[2], argv[3]); + return TCL_OK; + } + +Like before, BADARGS still checks that the number of arguments passed is correct, and outputs help text if it is not. The rest is boilerplate code to pass the arguments when the bind is called. + +Calling the Bind +^^^^^^^^^^^^^^^^ + +To call the bind, Eggdrop coding style it to name that function "check_tcl_bindname". So here, whenever we reach a point in code that should trigger the bind, we'll call check_tcl_woobie() and pass the arguments we defined- in this case, two arguments that woobie_2char was created to handle. Here is some sample code:: + + check_tcl_woobie(chan, nick); + + + static int check_tcl_woobie(char *chan, char *nick, char *userhost) { + int x; + char mask[1024]; + struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; + + snprintf(mask, sizeof mask, "%s %s!%s", + chan, nick, userhost); + Tcl_SetVar(interp, "_woob1", nick ? (char *) nick : "", 0); + Tcl_SetVar(interp, "_woob2", chan, 0); + x = check_tcl_bind(H_woob, mask, &fr, " $_woob1 $_woob2", + MATCH_MASK | BIND_STACKABLE); + return (x == BIND_EXEC_LOG); + } + +Now that we have encountered a condition that triggers the bind, we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with check_tcl_bind(), called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options. + +Exporting the Bind +------------------ + +Do we need to do this? From 23386ce96e1828c6b8f4dc5eee50467d8cf286ab Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Mon, 13 Feb 2023 00:50:05 +0000 Subject: [PATCH 161/320] Fix load of null pointer Found by: 0_o I am EMPTY, mister EMPTY, ZarTek-Creole Patch by: michaelortmann Fixes: #1389 --- src/net.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/net.c b/src/net.c index 7539500fe..30e1f4cb8 100644 --- a/src/net.c +++ b/src/net.c @@ -1700,6 +1700,12 @@ char *traced_natip(ClientData cd, Tcl_Interp *irp, EGG_CONST char *name1, int r; struct in_addr ia; + /* Recover trace in case of unset. */ + if (flags & TCL_TRACE_DESTROYED) { + Tcl_TraceVar2(irp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, traced_natip, cd); + return NULL; + } + value = Tcl_GetVar2(irp, name1, name2, TCL_GLOBAL_ONLY); if (*value) { r = inet_pton(AF_INET, value, &ia); From ed12d430b88ff820eabdfa2fe6cdb081e13ff7d0 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Mon, 13 Feb 2023 22:07:22 +0100 Subject: [PATCH 162/320] Raise Tcl requirement to 8.5 Found by: mortmann Patch by: thommey Fixes: #1403 Eggdrop will not compile with Tcl8.5 DictObj support since 1.9.0 (oops). --- aclocal.m4 | 14 ++------------ config.h.in | 4 ---- configure.ac | 1 - doc/BUG-REPORT | 2 -- src/main.c | 7 ------- src/main.h | 12 ++---------- src/tcl.c | 25 ++----------------------- 7 files changed, 6 insertions(+), 59 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index fc810bc45..4e8aab300 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1087,14 +1087,14 @@ dnl AC_DEFUN([EGG_TCL_CHECK_VERSION], [ - if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 3; then + if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 5; then cat << EOF >&2 configure: error: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is $tclrecommendver and can be downloaded from - ${tclrecommendsite}. We require at least Tcl 8.3. + ${tclrecommendsite}. We require at least Tcl 8.5. See doc/COMPILE-GUIDE's 'Tcl Detection and Installation' section for more information. @@ -1114,16 +1114,6 @@ dnl AC_DEFUN([EGG_CACHE_UNSET], [unset $1]) -dnl EGG_TCL_CHECK_NOTIFIER_INIT -dnl -AC_DEFUN([EGG_TCL_CHECK_NOTIFIER_INIT], -[ - if test $TCL_MAJOR_VERSION -gt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -ge 4; then - AC_DEFINE(HAVE_TCL_NOTIFIER_INIT, 1, [Define for Tcl that has the Tcl_NotifierProcs struct member initNotifierProc (8.4 and later).]) - fi -]) - - dnl EGG_SUBST_EGGVERSION() dnl AC_DEFUN([EGG_SUBST_EGGVERSION], diff --git a/config.h.in b/config.h.in index a0f0bbfe1..4e56afd4a 100644 --- a/config.h.in +++ b/config.h.in @@ -296,10 +296,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H -/* Define for Tcl that has the Tcl_NotifierProcs struct member - initNotifierProc (8.4 and later). */ -#undef HAVE_TCL_NOTIFIER_INIT - /* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE diff --git a/configure.ac b/configure.ac index c101fedf0..c90d97e56 100644 --- a/configure.ac +++ b/configure.ac @@ -136,7 +136,6 @@ EGG_TCL_WITH_TCLLIB EGG_TCL_WITH_TCLINC EGG_TCL_TCLCONFIG EGG_TCL_CHECK_VERSION -EGG_TCL_CHECK_NOTIFIER_INIT EGG_TCL_LUSH diff --git a/doc/BUG-REPORT b/doc/BUG-REPORT index 3c279c599..f60096f40 100644 --- a/doc/BUG-REPORT +++ b/doc/BUG-REPORT @@ -42,8 +42,6 @@ DO NOT SEND HTML E-MAIL TO THE LISTS. 2) INFORMATION ABOUT TCL 2.1) Tcl library version: - ( ) 8.3._ - ( ) 8.4._ ( ) 8.5._ ( ) 8.6._ ( ) Other - Which? ____ diff --git a/src/main.c b/src/main.c index 9ab60c6de..13976ae84 100644 --- a/src/main.c +++ b/src/main.c @@ -981,11 +981,7 @@ static void mainloop(int toplevel) if (!eggbusy) { /* Process all pending tcl events */ -# ifdef REPLACE_NOTIFIER Tcl_ServiceAll(); -# else - while (Tcl_DoOneEvent(TCL_DONT_WAIT | TCL_ALL_EVENTS)); -# endif /* REPLACE_NOTIFIER */ } } @@ -1119,9 +1115,6 @@ int main(int arg_c, char **arg_v) fatal("ERROR: Eggdrop will not run as root!", 0); #endif -#ifndef REPLACE_NOTIFIER - init_threaddata(1); -#endif init_userent(); init_misc(); init_bots(); diff --git a/src/main.h b/src/main.h index 2b11465d5..3dbe592f2 100644 --- a/src/main.h +++ b/src/main.h @@ -45,16 +45,8 @@ # define TCL_PATCH_LEVEL "*unknown*" #endif -#if defined(HAVE_TCL_NOTIFIER_INIT) -# define REPLACE_NOTIFIER -#endif - -#if (((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 4)) || (TCL_MAJOR_VERSION > 8)) -# ifdef CONST -# define EGG_CONST CONST -# else -# define EGG_CONST -# endif +#ifdef CONST +# define EGG_CONST CONST #else # define EGG_CONST #endif diff --git a/src/tcl.c b/src/tcl.c index 6e02af9e2..ccc4cd8d0 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -96,8 +96,8 @@ int handlen = HANDLEN; extern Tcl_VarTraceProc traced_myiphostname, traced_natip, traced_remove_pass; -/* Unicode workaround for Tcl versions that only support BMP characters (3 byte utf-8) */ -#if TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION >= 5 && TCL_MINOR_VERSION <= 6 && TCL_UTF_MAX < 4 +/* Unicode workaround for Tcl versions (8.5/8.6) that only support BMP characters (3 byte utf-8) */ +#if TCL_MAJOR_VERSION == 8 && TCL_MINOR_VERSION <= 6 && TCL_UTF_MAX < 4 # define TCL_WORKAROUND_UNICODESUP 1 struct tcl_unicodesup_info { const char *subcmd; @@ -548,7 +548,6 @@ extern tcl_cmds tcluser_cmds[], tcldcc_cmds[], tclmisc_cmds[], extern tcl_cmds tcltls_cmds[]; #endif -#ifdef REPLACE_NOTIFIER /* The tickle_*() functions replace the Tcl Notifier * The tickle_*() functions can be called by Tcl threads */ @@ -619,18 +618,6 @@ struct threaddata *threaddata() return td; } -#else /* REPLACE_NOTIFIER */ - -int tclthreadmainloop() { return 0; } - -struct threaddata *threaddata() -{ - static struct threaddata tsd; - return &tsd; -} - -#endif /* REPLACE_NOTIFIER */ - void init_threaddata(int mainthread) { struct threaddata *td = threaddata(); @@ -915,15 +902,12 @@ void init_unicodesup(void) */ void init_tcl(int argc, char **argv) { -#ifdef REPLACE_NOTIFIER Tcl_NotifierProcs notifierprocs; -#endif /* REPLACE_NOTIFIER */ const char *encoding; int i, j; char *langEnv, pver[1024] = ""; -#ifdef REPLACE_NOTIFIER egg_bzero(¬ifierprocs, sizeof(notifierprocs)); notifierprocs.initNotifierProc = tickle_InitNotifier; notifierprocs.createFileHandlerProc = tickle_CreateFileHandler; @@ -934,7 +918,6 @@ void init_tcl(int argc, char **argv) notifierprocs.alertNotifierProc = tickle_AlertNotifier; Tcl_SetNotifier(¬ifierprocs); -#endif /* REPLACE_NOTIFIER */ /* This must be done *BEFORE* Tcl_SetSystemEncoding(), * or Tcl_SetSystemEncoding() will cause a segfault. @@ -1247,11 +1230,7 @@ int tcl_threaded() */ int fork_before_tcl() { -#ifndef REPLACE_NOTIFIER - return tcl_threaded(); -#else return 0; -#endif } time_t get_expire_time(Tcl_Interp * irp, const char *s) { From 98a53aa99121379bf4b7bf5f777666f153ee326f Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Tue, 14 Feb 2023 00:17:13 +0000 Subject: [PATCH 163/320] Fix tcl service mode crash Found by: MacinMan Patch by: michaelortmann Fixes: #1351 Fixes: #1352 Fix crash - add tcl service mode hook stub / enhance doc --- INSTALL | 6 ++++-- doc/COMPILE-GUIDE | 12 ++++++------ src/tcl.c | 13 +++++++++++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/INSTALL b/INSTALL index 1b355fd85..6304d2628 100644 --- a/INSTALL +++ b/INSTALL @@ -19,6 +19,8 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier. correctly compile Eggdrop. It will also try to find Tcl, which is required to compile. + For macOS tcl and openssl see doc/COMPILE-GUIDE. + 2. Type either 'make config' or 'make iconfig' to determine which @@ -158,5 +160,5 @@ the README file. If not, then READ IT!&@#%@! Have fun with Eggdrop! - Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2022 Eggheads - Development Team + Copyright (C) 1997 Robey Pointer + Copyright (C) 1999 - 2022 Eggheads Development Team diff --git a/doc/COMPILE-GUIDE b/doc/COMPILE-GUIDE index 54e98d32f..92ee2f4fb 100644 --- a/doc/COMPILE-GUIDE +++ b/doc/COMPILE-GUIDE @@ -1,5 +1,5 @@ Eggdrop Compile Guide and FAQ -Last revised: June 9, 2020 +Last revised: November 17, 2022 _____________________________________________________________________ Eggdrop Compile Guide and FAQ @@ -20,7 +20,7 @@ Last revised: June 9, 2020 A. Standard compile process (Linux, FreeBSD, NetBSD, OpenBSD, etc) B. HP-UX B.11.* C. Ultrix - D. Mac OS X + D. macOS (previously OS X and originally Mac OS X) E. AIX F. IRIX G. Solaris / SunOS @@ -187,7 +187,7 @@ Last revised: June 9, 2020 gmake install DEST=/home/user/otherdir - D. Mac OS X + D. macOS Follow the standard compile process in Section A. To compile dynamically (with module support), use 'make eggdrop' instead of 'make'. @@ -210,7 +210,7 @@ Last revised: June 9, 2020 If you notice a module that requires these changes, it would probably be a good idea to let the module's developer know, so it can be fixed. - Note that on Mac OS X, the DYLD_LIBRARY_PATH environment variable should + Note that on macOS, the DYLD_LIBRARY_PATH environment variable should be used instead of LD_LIBRARY_PATH. Install OpenSSL using homebrew: @@ -221,7 +221,7 @@ Last revised: June 9, 2020 Tell configure where to find tcl and openssl: - ./configure --with-tcl=/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh --with-sslinc=/usr/local/opt/openssl/include --with-ssllib=/usr/local/opt/openssl/lib + ./configure --with-tcl=/System/Volumes/Data/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/Tcl.framework/tclConfig.sh -with-sslinc=/usr/local/Cellar/openssl@3/3.0.7/include --with-ssllib=/usr/local/Cellar/openssl@3/3.0.7/lib E. AIX Follow the standard compile process in Section A. To compile dynamically @@ -581,4 +581,4 @@ Last revised: June 9, 2020 _____________________________________________________________________ Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2021 Eggheads Development Team + Copyright (C) 1999 - 2022 Eggheads Development Team diff --git a/src/tcl.c b/src/tcl.c index ccc4cd8d0..ac37316b0 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -600,8 +600,16 @@ ClientData tickle_InitNotifier() void tickle_AlertNotifier(ClientData cd) { - if (cd) - putlog(LOG_MISC, "*", "stub tickle_AlertNotifier"); + if (cd) { + fatal("Error calling Tcl_AlertNotifier", 0); + } +} + +void tickle_ServiceModeHook(int mode) +{ + if (mode != TCL_SERVICE_ALL) { + fatal("Tcl_ServiceModeHook called with unsupported mode", 0); + } } int tclthreadmainloop(int zero) @@ -916,6 +924,7 @@ void init_tcl(int argc, char **argv) notifierprocs.waitForEventProc = tickle_WaitForEvent; notifierprocs.finalizeNotifierProc = tickle_FinalizeNotifier; notifierprocs.alertNotifierProc = tickle_AlertNotifier; + notifierprocs.serviceModeHookProc = tickle_ServiceModeHook; Tcl_SetNotifier(¬ifierprocs); From de8c50be1a5475afe725e736c7019f9e432e2ba3 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Tue, 14 Feb 2023 00:19:06 +0000 Subject: [PATCH 164/320] Cleanup deprecated gethostbyname2 Replace deprecated / obsolete gethostbyname2() with POSIX.1-2001 getaddrinfo() --- aclocal.m4 | 1 - src/Makefile.in | 2 +- src/compat/Makefile.in | 16 +++------------ src/compat/compat.h | 1 - src/compat/gethostbyname2.c | 39 ------------------------------------- src/compat/gethostbyname2.h | 37 ----------------------------------- src/md5/Makefile.in | 2 +- src/net.c | 36 ++++++++++++++++++++++------------ src/tcldcc.c | 1 + 9 files changed, 30 insertions(+), 105 deletions(-) delete mode 100644 src/compat/gethostbyname2.c delete mode 100644 src/compat/gethostbyname2.h diff --git a/aclocal.m4 b/aclocal.m4 index 4e8aab300..1d8827d64 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1422,7 +1422,6 @@ dnl AC_DEFUN([EGG_IPV6_COMPAT], [ if test "$enable_ipv6" = "yes"; then - AC_CHECK_FUNCS([gethostbyname2]) AC_CHECK_TYPES([struct in6_addr], egg_cv_var_have_in6_addr="yes", egg_cv_var_have_in6_addr="no", [ #include #include diff --git a/src/Makefile.in b/src/Makefile.in index c9605a049..5ecc97d54 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -86,7 +86,7 @@ eggdrop.h: bg.o: bg.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ + ../src/main.h compat/snprintf.h \ compat/explicit_bzero.h compat/strlcpy.h bg.h botcmd.o: botcmd.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ diff --git a/src/compat/Makefile.in b/src/compat/Makefile.in index e2617fb5f..87012d46d 100644 --- a/src/compat/Makefile.in +++ b/src/compat/Makefile.in @@ -17,8 +17,7 @@ STRIP = @STRIP@ CFLAGS = @CFLAGS@ -I../.. -I$(top_srcdir) -I$(top_srcdir)/src @SSL_INCLUDES@ @DEFS@ $(CFLGS) CPPFLAGS = @CPPFLAGS@ -OBJS = base64.o explicit_bzero.o gethostbyname2.o in6.o inet_aton.o snprintf.o \ - strlcpy.o +OBJS = base64.o explicit_bzero.o in6.o inet_aton.o snprintf.o strlcpy.o doofus: @echo "" @@ -43,15 +42,6 @@ compat: $(OBJS) #safety hash base64.o: base64.c ../../config.h explicit_bzero.o: explicit_bzero.c ../../config.h -gethostbyname2.o: gethostbyname2.c gethostbyname2.h ../../src/main.h \ - ../../config.h ../../eggint.h ../../lush.h ../../src/lang.h \ - ../../src/eggdrop.h ../../src/compat/in6.h ../../src/flags.h \ - ../../src/proto.h ../../src/misc_file.h ../../src/cmdt.h \ - ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ - ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ - ../../src/compat/inet_aton.h ../../src/compat/snprintf.h \ - ../../src/compat/gethostbyname2.h ../../src/compat/explicit_bzero.h \ - ../../src/compat/strlcpy.h in6.o: in6.c in6.h inet_aton.o: inet_aton.c ../../src/main.h ../../config.h ../../eggint.h \ ../../lush.h ../../src/lang.h ../../src/eggdrop.h ../../src/compat/in6.h \ @@ -59,7 +49,7 @@ inet_aton.o: inet_aton.c ../../src/main.h ../../config.h ../../eggint.h \ ../../src/cmdt.h ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ ../../src/compat/inet_aton.h ../../src/main.h \ - ../../src/compat/snprintf.h ../../src/compat/gethostbyname2.h \ + ../../src/compat/snprintf.h \ ../../src/compat/explicit_bzero.h ../../src/compat/strlcpy.h inet_aton.h snprintf.o: snprintf.c ../../src/main.h ../../config.h ../../eggint.h \ ../../lush.h ../../src/lang.h ../../src/eggdrop.h ../../src/compat/in6.h \ @@ -67,6 +57,6 @@ snprintf.o: snprintf.c ../../src/main.h ../../config.h ../../eggint.h \ ../../src/cmdt.h ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ ../../src/compat/inet_aton.h ../../src/main.h \ - ../../src/compat/snprintf.h ../../src/compat/gethostbyname2.h \ + ../../src/compat/snprintf.h \ ../../src/compat/explicit_bzero.h ../../src/compat/strlcpy.h snprintf.h strlcpy.o: strlcpy.c ../../config.h diff --git a/src/compat/compat.h b/src/compat/compat.h index 75eb1753c..63b35ebc4 100644 --- a/src/compat/compat.h +++ b/src/compat/compat.h @@ -26,7 +26,6 @@ #include "base64.h" #include "inet_aton.h" #include "snprintf.h" -#include "gethostbyname2.h" #include "explicit_bzero.h" #include "strlcpy.h" diff --git a/src/compat/gethostbyname2.c b/src/compat/gethostbyname2.c deleted file mode 100644 index 6f1ec80d9..000000000 --- a/src/compat/gethostbyname2.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * gethostbyname2.c -- provide a dummy gethostbyname2 replacement - */ -/* - * Copyright (C) 2010 - 2022 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include "gethostbyname2.h" - -#if defined IPV6 && !defined HAVE_GETHOSTBYNAME2 -struct hostent *gethostbyname2(const char *name, int af) -{ - struct hostent *h; - - h = gethostbyname(name); - if (!h) - return NULL; - if (h->h_addrtype != af) { - h_errno = NO_RECOVERY; - return NULL; - } - - return h; -} -#endif diff --git a/src/compat/gethostbyname2.h b/src/compat/gethostbyname2.h deleted file mode 100644 index 0f59f6e0e..000000000 --- a/src/compat/gethostbyname2.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * gethostbyname2.h - * prototypes for gethostbyname2.c - */ -/* - * Copyright (C) 2010 - 2022 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef _EGG_COMPAT_GETHOSTBYNAME2 -#define _EGG_COMPAT_GETHOSTBYNAME2 - -#include "src/main.h" - -#include -#ifdef HAVE_SYS_SOCKET_H -# include -#endif -#include - -#if defined IPV6 && !defined HAVE_GETHOSTBYNAME2 -struct hostent *gethostbyname2(const char *name, int af); -#endif -#endif /* _EGG_COMPAT_GETHOSTBYNAME2 */ diff --git a/src/md5/Makefile.in b/src/md5/Makefile.in index 4c9c670d3..7bf42c5c9 100644 --- a/src/md5/Makefile.in +++ b/src/md5/Makefile.in @@ -46,5 +46,5 @@ md5c.o: md5c.c md5.h ../../src/main.h ../../config.h ../../eggint.h \ ../../src/cmdt.h ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ ../../src/compat/inet_aton.h ../../src/compat/snprintf.h \ - ../../src/compat/gethostbyname2.h ../../src/compat/explicit_bzero.h \ + ../../src/compat/explicit_bzero.h \ ../../src/compat/strlcpy.h diff --git a/src/net.c b/src/net.c index 30e1f4cb8..bb71aad6d 100644 --- a/src/net.c +++ b/src/net.c @@ -133,12 +133,14 @@ int setsockname(sockname_t *addr, char *src, int port, int allowres) char *endptr, *src2 = src;; long val; IP ip; - struct hostent *hp; volatile int af = AF_UNSPEC; char ip2[EGG_INET_ADDRSTRLEN]; #ifdef IPV6 volatile int pref; + struct addrinfo *res0 = NULL, *res; + int error; #else + struct hostent *hp; int i, count; #endif @@ -176,18 +178,28 @@ int setsockname(sockname_t *addr, char *src, int port, int allowres) /* src is a hostname. Attempt to resolve it.. */ if (!sigsetjmp(alarmret, 1)) { alarm(resolve_timeout); - hp = gethostbyname2(src, pref_af ? AF_INET6 : AF_INET); - if (!hp) - hp = gethostbyname2(src, pref_af ? AF_INET : AF_INET6); - alarm(0); - } else - hp = NULL; - if (hp) { - if (hp->h_addrtype == AF_INET) - memcpy(&addr->addr.s4.sin_addr, hp->h_addr_list[0], hp->h_length); + error = getaddrinfo(src, NULL, NULL, &res0); + if (!error) { + for (res = res0; res; res = res->ai_next) { + if (res == res0 || res->ai_family == (pref_af ? AF_INET6 : AF_INET)) { + af = res->ai_family; + memcpy(&addr->addr.sa, res->ai_addr, res->ai_addrlen); + if (res->ai_family == (pref_af ? AF_INET6 : AF_INET)) { + break; + } + } + } + if (res0) /* The behavior of freeadrinfo(NULL) is left unspecified by RFCs + * 2553 and 3493. Avoid to be compatible with all OSes. */ + freeaddrinfo(res0); + } + else if (error == EAI_NONAME) + debug1("net: setsockname(): getaddrinfo(): hostname %s not known", src); else - memcpy(&addr->addr.s6.sin6_addr, hp->h_addr_list[0], hp->h_length); - af = hp->h_addrtype; + debug1("net: setsockname(): getaddrinfo(): error = %s", gai_strerror(error)); + alarm(0); + } else { + debug1("net: setsockname(): getaddrinfo(): hostname %s resolve timeout", src); } } diff --git a/src/tcldcc.c b/src/tcldcc.c index 3fd96e0f0..3aba03757 100644 --- a/src/tcldcc.c +++ b/src/tcldcc.c @@ -22,6 +22,7 @@ */ #include "main.h" +#include #include "tandem.h" #include "modules.h" #include From 42916cee15222d20692569c161bc6ac3dec8ee19 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 13 Feb 2023 19:22:17 -0500 Subject: [PATCH 165/320] Run autotools/makedepend --- config.h.in | 3 - configure | 24 +------- src/Makefile.in | 97 +++++++++++++++----------------- src/compat/Makefile.in | 8 +-- src/md5/Makefile.in | 3 +- src/mod/assoc.mod/Makefile | 1 - src/mod/blowfish.mod/Makefile | 1 - src/mod/channels.mod/Makefile | 1 - src/mod/compress.mod/Makefile.in | 1 - src/mod/compress.mod/configure | 2 +- src/mod/console.mod/Makefile | 1 - src/mod/ctcp.mod/Makefile | 7 +-- src/mod/dns.mod/Makefile.in | 4 +- src/mod/dns.mod/configure | 2 +- src/mod/filesys.mod/Makefile | 1 - src/mod/ident.mod/Makefile | 1 - src/mod/irc.mod/Makefile | 1 - src/mod/notes.mod/Makefile | 1 - src/mod/pbkdf2.mod/Makefile | 10 +++- src/mod/seen.mod/Makefile | 1 - src/mod/server.mod/Makefile | 1 - src/mod/share.mod/Makefile | 1 - src/mod/transfer.mod/Makefile | 1 - src/mod/twitch.mod/Makefile | 1 - src/mod/uptime.mod/Makefile | 7 +-- src/mod/woobie.mod/Makefile | 6 +- 26 files changed, 73 insertions(+), 114 deletions(-) diff --git a/config.h.in b/config.h.in index 4e56afd4a..1a412d315 100644 --- a/config.h.in +++ b/config.h.in @@ -111,9 +111,6 @@ /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H -/* Define to 1 if you have the `gethostbyname2' function. */ -#undef HAVE_GETHOSTBYNAME2 - /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE diff --git a/configure b/configure index 7372012d6..494e63381 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 533f882a. +# From configure.ac de8c50be. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop 1.9.4. # @@ -8933,14 +8933,14 @@ $as_echo "$TCL_INCLUDE_SPEC" >&6; } - if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 3; then + if test "x$TCL_MAJOR_VERSION" = x || test "x$TCL_MINOR_VERSION" = x || test $TCL_MAJOR_VERSION -lt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -lt 5; then cat << EOF >&2 configure: error: Your Tcl version is much too old for Eggdrop to use. You should download and compile a more recent version. The most reliable current version is $tclrecommendver and can be downloaded from - ${tclrecommendsite}. We require at least Tcl 8.3. + ${tclrecommendsite}. We require at least Tcl 8.5. See doc/COMPILE-GUIDE's 'Tcl Detection and Installation' section for more information. @@ -8951,13 +8951,6 @@ EOF - if test $TCL_MAJOR_VERSION -gt 8 || test $TCL_MAJOR_VERSION -eq 8 -a $TCL_MINOR_VERSION -ge 4; then - -$as_echo "#define HAVE_TCL_NOTIFIER_INIT 1" >>confdefs.h - - fi - - if test "x$TCLINCFN" != x; then egg_tclinc="\\\"$TCLINC/$TCLINCFN\\\"" else @@ -9335,17 +9328,6 @@ $as_echo "#define IPV6 1" >>confdefs.h if test "$enable_ipv6" = "yes"; then - for ac_func in gethostbyname2 -do : - ac_fn_c_check_func "$LINENO" "gethostbyname2" "ac_cv_func_gethostbyname2" -if test "x$ac_cv_func_gethostbyname2" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETHOSTBYNAME2 1 -_ACEOF - -fi -done - ac_fn_c_check_type "$LINENO" "struct in6_addr" "ac_cv_type_struct_in6_addr" " #include #include diff --git a/src/Makefile.in b/src/Makefile.in index 5ecc97d54..6fbce846f 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -86,155 +86,146 @@ eggdrop.h: bg.o: bg.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h \ - compat/explicit_bzero.h compat/strlcpy.h bg.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + bg.h botcmd.o: botcmd.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - tandem.h modules.h mod/modvals.h + compat/explicit_bzero.h compat/strlcpy.h tandem.h modules.h \ + mod/modvals.h botmsg.o: botmsg.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - tandem.h + compat/explicit_bzero.h compat/strlcpy.h tandem.h botnet.o: botnet.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - tandem.h + compat/explicit_bzero.h compat/strlcpy.h tandem.h chanprog.o: chanprog.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h cmds.o: cmds.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h tandem.h modules.h \ - mod/modvals.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + tandem.h modules.h mod/modvals.h dcc.o: dcc.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ - tandem.h md5/md5.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + modules.h mod/modvals.h tandem.h md5/md5.h dccutil.o: dccutil.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h tandem.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ + tandem.h dns.o: dns.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h dns.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + dns.h flags.o: flags.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h + compat/explicit_bzero.h compat/strlcpy.h language.o: language.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h + compat/explicit_bzero.h compat/strlcpy.h main.o: main.c ../config.h main.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h version.h modules.h \ - mod/modvals.h tandem.h bg.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + version.h modules.h mod/modvals.h tandem.h bg.h match.o: match.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h + compat/explicit_bzero.h compat/strlcpy.h mem.o: mem.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h mod/modvals.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + mod/modvals.h misc.o: misc.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h tandem.h modules.h \ - mod/modvals.h stat.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + tandem.h modules.h mod/modvals.h stat.h misc_file.o: misc_file.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h stat.h + compat/explicit_bzero.h compat/strlcpy.h stat.h modules.o: modules.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h tandem.h md5/md5.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ + tandem.h md5/md5.h net.o: net.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h mod/server.mod/server.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + mod/server.mod/server.h rfc1459.o: rfc1459.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h + compat/explicit_bzero.h compat/strlcpy.h tcl.o: tcl.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h tcldcc.o: tcldcc.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - tandem.h modules.h mod/modvals.h + compat/explicit_bzero.h compat/strlcpy.h tandem.h modules.h \ + mod/modvals.h tclhash.o: tclhash.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h + compat/explicit_bzero.h compat/strlcpy.h tclmisc.o: tclmisc.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h tandem.h md5/md5.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ + tandem.h md5/md5.h tcluser.o: tcluser.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - tandem.h modules.h mod/modvals.h + compat/explicit_bzero.h compat/strlcpy.h tandem.h modules.h \ + mod/modvals.h tls.o: tls.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/gethostbyname2.h \ - compat/explicit_bzero.h compat/strlcpy.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h userent.o: userent.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h + compat/explicit_bzero.h compat/strlcpy.h userrec.o: userrec.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h tandem.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ + tandem.h users.o: users.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/gethostbyname2.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h tandem.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ + tandem.h diff --git a/src/compat/Makefile.in b/src/compat/Makefile.in index 87012d46d..c431ee491 100644 --- a/src/compat/Makefile.in +++ b/src/compat/Makefile.in @@ -49,14 +49,14 @@ inet_aton.o: inet_aton.c ../../src/main.h ../../config.h ../../eggint.h \ ../../src/cmdt.h ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ ../../src/compat/inet_aton.h ../../src/main.h \ - ../../src/compat/snprintf.h \ - ../../src/compat/explicit_bzero.h ../../src/compat/strlcpy.h inet_aton.h + ../../src/compat/snprintf.h ../../src/compat/explicit_bzero.h \ + ../../src/compat/strlcpy.h inet_aton.h snprintf.o: snprintf.c ../../src/main.h ../../config.h ../../eggint.h \ ../../lush.h ../../src/lang.h ../../src/eggdrop.h ../../src/compat/in6.h \ ../../src/flags.h ../../src/proto.h ../../src/misc_file.h \ ../../src/cmdt.h ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ ../../src/compat/inet_aton.h ../../src/main.h \ - ../../src/compat/snprintf.h \ - ../../src/compat/explicit_bzero.h ../../src/compat/strlcpy.h snprintf.h + ../../src/compat/snprintf.h ../../src/compat/explicit_bzero.h \ + ../../src/compat/strlcpy.h snprintf.h strlcpy.o: strlcpy.c ../../config.h diff --git a/src/md5/Makefile.in b/src/md5/Makefile.in index 7bf42c5c9..81fb52a98 100644 --- a/src/md5/Makefile.in +++ b/src/md5/Makefile.in @@ -46,5 +46,4 @@ md5c.o: md5c.c md5.h ../../src/main.h ../../config.h ../../eggint.h \ ../../src/cmdt.h ../../src/tclegg.h ../../src/tclhash.h ../../src/chan.h \ ../../src/users.h ../../src/compat/compat.h ../../src/compat/base64.h \ ../../src/compat/inet_aton.h ../../src/compat/snprintf.h \ - ../../src/compat/explicit_bzero.h \ - ../../src/compat/strlcpy.h + ../../src/compat/explicit_bzero.h ../../src/compat/strlcpy.h diff --git a/src/mod/assoc.mod/Makefile b/src/mod/assoc.mod/Makefile index 756870353..5bc160183 100644 --- a/src/mod/assoc.mod/Makefile +++ b/src/mod/assoc.mod/Makefile @@ -35,6 +35,5 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h .././assoc.mod/assoc.h diff --git a/src/mod/blowfish.mod/Makefile b/src/mod/blowfish.mod/Makefile index 4a448b5b1..64b1e7344 100644 --- a/src/mod/blowfish.mod/Makefile +++ b/src/mod/blowfish.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ .././blowfish.mod/blowfish.h .././blowfish.mod/bf_tab.h diff --git a/src/mod/channels.mod/Makefile b/src/mod/channels.mod/Makefile index 2e75492be..b53d568cd 100644 --- a/src/mod/channels.mod/Makefile +++ b/src/mod/channels.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ .././channels.mod/channels.h .././channels.mod/cmdschan.c \ diff --git a/src/mod/compress.mod/Makefile.in b/src/mod/compress.mod/Makefile.in index 552f38f15..6f91a3342 100644 --- a/src/mod/compress.mod/Makefile.in +++ b/src/mod/compress.mod/Makefile.in @@ -39,7 +39,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ ../../../src/mod/share.mod/share.h .././compress.mod/compress.h \ diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 3ea939674..88d9e0815 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 533f882a. +# From configure.ac de8c50be. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop Compress Module 1.9.4. # diff --git a/src/mod/console.mod/Makefile b/src/mod/console.mod/Makefile index e33c0b8e3..a678d1176 100644 --- a/src/mod/console.mod/Makefile +++ b/src/mod/console.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ .././console.mod/console.h diff --git a/src/mod/ctcp.mod/Makefile b/src/mod/ctcp.mod/Makefile index 8412533f0..dec8c9d97 100644 --- a/src/mod/ctcp.mod/Makefile +++ b/src/mod/ctcp.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/cmdt.h ../../../src/tclegg.h ../../../src/tclhash.h \ ../../../src/chan.h ../../../src/users.h ../../../src/compat/compat.h \ ../../../src/compat/base64.h ../../../src/compat/inet_aton.h \ - ../../../src/compat/snprintf.h ../../../src/compat/gethostbyname2.h \ - ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ - ../../../src/mod/modvals.h ../../../src/tandem.h \ - ../../../src/mod/server.mod/server.h + ../../../src/compat/snprintf.h ../../../src/compat/explicit_bzero.h \ + ../../../src/compat/strlcpy.h ../../../src/mod/modvals.h \ + ../../../src/tandem.h ../../../src/mod/server.mod/server.h diff --git a/src/mod/dns.mod/Makefile.in b/src/mod/dns.mod/Makefile.in index bba72091b..b2508d6a9 100644 --- a/src/mod/dns.mod/Makefile.in +++ b/src/mod/dns.mod/Makefile.in @@ -40,7 +40,5 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ - ../../../src/mod/modvals.h ../../../src/tandem.h .././dns.mod/dns.h \ - .././dns.mod/coredns.c + ../../../src/mod/modvals.h ../../../src/tandem.h diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 84e203692..5f03ba0b7 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 533f882a. +# From configure.ac de8c50be. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for Eggdrop DNS Module 1.9.4. # diff --git a/src/mod/filesys.mod/Makefile b/src/mod/filesys.mod/Makefile index c5bb3ac99..f1a7e1309 100644 --- a/src/mod/filesys.mod/Makefile +++ b/src/mod/filesys.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ .././filesys.mod/filedb3.h .././filesys.mod/filesys.h \ diff --git a/src/mod/ident.mod/Makefile b/src/mod/ident.mod/Makefile index eb261e1cd..071e7ef01 100644 --- a/src/mod/ident.mod/Makefile +++ b/src/mod/ident.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ ../../../src/mod/server.mod/server.h diff --git a/src/mod/irc.mod/Makefile b/src/mod/irc.mod/Makefile index 4fb07ab95..8a17bf80c 100644 --- a/src/mod/irc.mod/Makefile +++ b/src/mod/irc.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h .././irc.mod/irc.h \ ../../../src/mod/server.mod/server.h \ diff --git a/src/mod/notes.mod/Makefile b/src/mod/notes.mod/Makefile index 7c001acfb..0c3ce51a5 100644 --- a/src/mod/notes.mod/Makefile +++ b/src/mod/notes.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h .././notes.mod/notes.h \ .././notes.mod/cmdsnote.c diff --git a/src/mod/pbkdf2.mod/Makefile b/src/mod/pbkdf2.mod/Makefile index b28559065..8266ce14f 100644 --- a/src/mod/pbkdf2.mod/Makefile +++ b/src/mod/pbkdf2.mod/Makefile @@ -28,4 +28,12 @@ clean: distclean: clean #safety hash -../pbkdf2.o: .././pbkdf2.mod/pbkdf2.c +../pbkdf2.o: .././pbkdf2.mod/pbkdf2.c ../../../src/mod/module.h \ + ../../../src/main.h ../../../config.h ../../../eggint.h ../../../lush.h \ + ../../../src/lang.h ../../../src/eggdrop.h ../../../src/compat/in6.h \ + ../../../src/flags.h ../../../src/cmdt.h ../../../src/tclegg.h \ + ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ + ../../../src/compat/compat.h ../../../src/compat/base64.h \ + ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ + ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ + ../../../src/mod/modvals.h ../../../src/tandem.h diff --git a/src/mod/seen.mod/Makefile b/src/mod/seen.mod/Makefile index c61d32b5c..bcf2454c0 100644 --- a/src/mod/seen.mod/Makefile +++ b/src/mod/seen.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h ../../../src/users.h \ ../../../src/chan.h ../../../src/mod/channels.mod/channels.h diff --git a/src/mod/server.mod/Makefile b/src/mod/server.mod/Makefile index aaa8ee887..1b26a1043 100644 --- a/src/mod/server.mod/Makefile +++ b/src/mod/server.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ .././server.mod/server.h .././server.mod/isupport.c \ diff --git a/src/mod/share.mod/Makefile b/src/mod/share.mod/Makefile index e6f804367..5543e3570 100644 --- a/src/mod/share.mod/Makefile +++ b/src/mod/share.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h ../../../src/chan.h \ ../../../src/users.h ../../../src/mod/transfer.mod/transfer.h \ diff --git a/src/mod/transfer.mod/Makefile b/src/mod/transfer.mod/Makefile index 9cfb660bc..21de50e84 100644 --- a/src/mod/transfer.mod/Makefile +++ b/src/mod/transfer.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h ../../../src/users.h \ .././transfer.mod/transfer.h .././transfer.mod/transferfstat.c \ diff --git a/src/mod/twitch.mod/Makefile b/src/mod/twitch.mod/Makefile index bb81afa35..3477b6281 100644 --- a/src/mod/twitch.mod/Makefile +++ b/src/mod/twitch.mod/Makefile @@ -35,7 +35,6 @@ distclean: clean ../../../src/tclhash.h ../../../src/chan.h ../../../src/users.h \ ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ - ../../../src/compat/gethostbyname2.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ ../../../src/mod/modvals.h ../../../src/tandem.h \ ../../../src/mod/twitch.mod/twitch.h \ diff --git a/src/mod/uptime.mod/Makefile b/src/mod/uptime.mod/Makefile index ec120df9b..ff49761a4 100644 --- a/src/mod/uptime.mod/Makefile +++ b/src/mod/uptime.mod/Makefile @@ -34,7 +34,6 @@ distclean: clean ../../../src/cmdt.h ../../../src/tclegg.h ../../../src/tclhash.h \ ../../../src/chan.h ../../../src/users.h ../../../src/compat/compat.h \ ../../../src/compat/base64.h ../../../src/compat/inet_aton.h \ - ../../../src/compat/snprintf.h ../../../src/compat/gethostbyname2.h \ - ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ - .././uptime.mod/../modvals.h ../../../src/tandem.h \ - .././uptime.mod/../server.mod/server.h + ../../../src/compat/snprintf.h ../../../src/compat/explicit_bzero.h \ + ../../../src/compat/strlcpy.h .././uptime.mod/../modvals.h \ + ../../../src/tandem.h .././uptime.mod/../server.mod/server.h diff --git a/src/mod/woobie.mod/Makefile b/src/mod/woobie.mod/Makefile index 8b1a3417e..9ce22150a 100644 --- a/src/mod/woobie.mod/Makefile +++ b/src/mod/woobie.mod/Makefile @@ -34,6 +34,6 @@ distclean: clean ../../../src/cmdt.h ../../../src/tclegg.h ../../../src/tclhash.h \ ../../../src/chan.h ../../../src/users.h ../../../src/compat/compat.h \ ../../../src/compat/base64.h ../../../src/compat/inet_aton.h \ - ../../../src/compat/snprintf.h ../../../src/compat/gethostbyname2.h \ - ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ - ../../../src/mod/modvals.h ../../../src/tandem.h + ../../../src/compat/snprintf.h ../../../src/compat/explicit_bzero.h \ + ../../../src/compat/strlcpy.h ../../../src/mod/modvals.h \ + ../../../src/tandem.h From d9bda49c2d6f3b4e43252b8119999b271a931e9c Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 13 Feb 2023 19:23:15 -0500 Subject: [PATCH 166/320] bump patchlevel --- src/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/version.h b/src/version.h index 5111478ae..36f59b15c 100644 --- a/src/version.h +++ b/src/version.h @@ -27,5 +27,5 @@ */ #define EGG_STRINGVER "1.9.4" -#define EGG_NUMVER 1090404 -#define EGG_PATCH "logupdates" +#define EGG_NUMVER 1090405 +#define EGG_PATCH "raisetcl" From 506f1405af21fa68652e0dae909d48a119cb3054 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 13 Feb 2023 21:14:40 -0500 Subject: [PATCH 167/320] Update THANKS --- THANKS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/THANKS b/THANKS index 1f3f5ba6f..53fe4a189 100644 --- a/THANKS +++ b/THANKS @@ -236,6 +236,7 @@ eelcohuininga Eelco Huininga Ehrenberg ejm Emmanuel Marty +Empus Erick- Erick Velez erick@erick.org eryg-kai Evo|ver @@ -509,6 +510,7 @@ Robby robby@chatbelgie.be Roger Yerramsetti Rok Papez romulus +rsc Robert Scheck Rufus S Wilcox S7reaM From c27143997de77af5f66c6278f02f86de24bba15d Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 13 Feb 2023 21:15:52 -0500 Subject: [PATCH 168/320] Update NEWS --- NEWS | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/NEWS b/NEWS index 6af6b7bac..a884e737a 100644 --- a/NEWS +++ b/NEWS @@ -15,6 +15,35 @@ Last revised: December 4, 2021 _________________________________________________________________ +Eggdrop v1.9.5: + + General changes: + - Implemented a workaround for a Tcl issue parsing emojis that can cause a + crash + - Fixed an improper change to the display of bind flags that caused issues + with Tcl scripts that parse bind flags + - Added SSL header information to .status to help diagnose ./configure + mismatches + - Lots of under-the-hood bug fixes + + Botnet changes: + - None + + Tcl API changes: + - Tcl minimum required version is now 8.5! This actually happened in version + version 1.9.0; we just forgot to tell people. Oops! :) + + Module changes: + - Updated woobie.mod with additional example code + + Eggdrop config changes: + - None + + Documentation changes: + - Added additional documentation to help write modules + - Updated botnet docs to include reference to TLS docs for secure links + - Updated Tcl repo from unmaintained FTP to HTTP repository + Eggdrop v1.9.4: General changes: From ffb8c1814095966386f9891e43d10a67ed9ceec3 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 13 Feb 2023 21:22:26 -0500 Subject: [PATCH 169/320] Update copyright --- AUTHORS | 2 +- CONTENTS | 2 +- FEATURES | 2 +- INSTALL | 6 +- NEWS | 4 +- aclocal.m4 | 2 +- config.h.in | 2 +- configure | 4 +- configure.ac | 4 +- doc/ABOUT | 2 +- doc/BANS | 2 +- doc/BOTNET | 27 +- doc/COMPILE-GUIDE | 2 +- doc/CONTENTS | 2 +- doc/FIRST-SCRIPT | 2 +- doc/IPV6 | 2 +- doc/IRCv3 | 2 +- doc/MODULES | 2 +- doc/PARTYLINE | 2 +- doc/PATCH-HOWTO | 2 +- doc/PBKDF2 | 2 +- doc/TLS | 2 +- doc/TRICKS | 2 +- doc/USERS | 2 +- doc/core.settings | 6 +- doc/html/_static/basic.css | 331 ++- doc/html/_static/doctools.js | 377 +-- doc/html/_static/documentation_options.js | 6 +- doc/html/_static/language_data.js | 106 +- doc/html/_static/pygments.css | 7 +- doc/html/_static/searchtools.js | 793 ++--- doc/html/_static/sphinx_highlight.js | 144 + doc/html/about/about.html | 72 +- doc/html/about/legal.html | 52 +- doc/html/index.html | 121 +- doc/html/install/install.html | 121 +- doc/html/install/readme.html | 201 +- doc/html/install/upgrading.html | 108 +- doc/html/modules/assoc.html | 2 +- doc/html/modules/blowfish.html | 2 +- doc/html/modules/channels.html | 2 +- doc/html/modules/compress.html | 2 +- doc/html/modules/console.html | 2 +- doc/html/modules/ctcp.html | 2 +- doc/html/modules/dns.html | 2 +- doc/html/modules/filesys.html | 2 +- doc/html/modules/ident.html | 2 +- doc/html/modules/included.html | 154 +- doc/html/modules/index.html | 106 +- doc/html/modules/internals.html | 166 +- doc/html/modules/irc.html | 2 +- doc/html/modules/mod/assoc.html | 54 +- doc/html/modules/mod/blowfish.html | 54 +- doc/html/modules/mod/channels.html | 467 ++- doc/html/modules/mod/compress.html | 68 +- doc/html/modules/mod/console.html | 74 +- doc/html/modules/mod/ctcp.html | 83 +- doc/html/modules/mod/dns.html | 86 +- doc/html/modules/mod/filesys.html | 325 ++- doc/html/modules/mod/ident.html | 91 +- doc/html/modules/mod/irc.html | 197 +- doc/html/modules/mod/notes.html | 88 +- doc/html/modules/mod/pbkdf2.html | 70 +- doc/html/modules/mod/seen.html | 54 +- doc/html/modules/mod/server.html | 278 +- doc/html/modules/mod/share.html | 92 +- doc/html/modules/mod/transfer.html | 86 +- doc/html/modules/mod/twitch.html | 93 +- doc/html/modules/mod/uptime.html | 60 +- doc/html/modules/mod/woobie.html | 54 +- doc/html/modules/notes.html | 2 +- doc/html/modules/pbkdf2.html | 2 +- doc/html/modules/seen.html | 2 +- doc/html/modules/server.html | 2 +- doc/html/modules/share.html | 2 +- doc/html/modules/transfer.html | 2 +- doc/html/modules/twitch.html | 2 +- doc/html/modules/uptime.html | 2 +- doc/html/modules/woobie.html | 2 +- doc/html/modules/writing.html | 136 +- doc/html/objects.inv | Bin 1319 -> 1395 bytes doc/html/search.html | 75 +- doc/html/searchindex.js | 2 +- doc/html/tutorials/firstscript.html | 96 +- doc/html/tutorials/firststeps.html | 150 +- doc/html/tutorials/module.html | 106 +- doc/html/tutorials/setup.html | 269 +- doc/html/tutorials/tlssetup.html | 96 +- doc/html/using/accounts.html | 112 +- doc/html/using/bans.html | 108 +- doc/html/using/botnet.html | 326 +-- doc/html/using/core.html | 693 +++-- doc/html/using/features.html | 98 +- doc/html/using/ipv6.html | 99 +- doc/html/using/ircv3.html | 104 +- doc/html/using/partyline.html | 56 +- doc/html/using/patch.html | 85 +- doc/html/using/pbkdf2.html | 2 +- doc/html/using/pbkdf2info.html | 130 +- doc/html/using/tcl-commands.html | 2858 +++++++++---------- doc/html/using/text-sub.html | 153 +- doc/html/using/tls.html | 177 +- doc/html/using/tricks.html | 90 +- doc/html/using/twitch-tcl-commands.html | 162 +- doc/html/using/twitchinfo.html | 110 +- doc/html/using/users.html | 228 +- doc/man1/eggdrop.1 | 4 +- doc/modules/mod.assoc | 2 +- doc/modules/mod.blowfish | 2 +- doc/modules/mod.channels | 2 +- doc/modules/mod.compress | 2 +- doc/modules/mod.console | 2 +- doc/modules/mod.ctcp | 2 +- doc/modules/mod.dns | 2 +- doc/modules/mod.filesys | 2 +- doc/modules/mod.ident | 2 +- doc/modules/mod.irc | 2 +- doc/modules/mod.notes | 2 +- doc/modules/mod.pbkdf2 | 2 +- doc/modules/mod.seen | 2 +- doc/modules/mod.server | 2 +- doc/modules/mod.share | 2 +- doc/modules/mod.transfer | 2 +- doc/modules/mod.twitch | 2 +- doc/modules/mod.uptime | 2 +- doc/modules/mod.woobie | 2 +- doc/modules/writing-modules | 2 +- doc/settings/CONTENTS | 2 +- doc/settings/core.settings | 2 +- doc/settings/mod.assoc | 2 +- doc/settings/mod.blowfish | 2 +- doc/settings/mod.channels | 2 +- doc/settings/mod.compress | 2 +- doc/settings/mod.console | 2 +- doc/settings/mod.ctcp | 2 +- doc/settings/mod.dns | 2 +- doc/settings/mod.filesys | 2 +- doc/settings/mod.ident | 2 +- doc/settings/mod.irc | 2 +- doc/settings/mod.notes | 2 +- doc/settings/mod.seen | 2 +- doc/settings/mod.server | 2 +- doc/settings/mod.share | 2 +- doc/settings/mod.transfer | 2 +- doc/settings/mod.uptime | 2 +- doc/settings/mod.woobie | 2 +- doc/sphinx_source/about/about.rst | 2 +- doc/sphinx_source/conf.py | 2 +- doc/sphinx_source/install/install.rst | 2 +- doc/sphinx_source/install/readme.rst | 2 +- doc/sphinx_source/modules/index.rst | 2 +- doc/sphinx_source/modules/mod/assoc.rst | 2 +- doc/sphinx_source/modules/mod/blowfish.rst | 2 +- doc/sphinx_source/modules/mod/channels.rst | 2 +- doc/sphinx_source/modules/mod/compress.rst | 2 +- doc/sphinx_source/modules/mod/console.rst | 2 +- doc/sphinx_source/modules/mod/ctcp.rst | 2 +- doc/sphinx_source/modules/mod/dns.rst | 2 +- doc/sphinx_source/modules/mod/filesys.rst | 2 +- doc/sphinx_source/modules/mod/ident.rst | 2 +- doc/sphinx_source/modules/mod/irc.rst | 2 +- doc/sphinx_source/modules/mod/notes.rst | 2 +- doc/sphinx_source/modules/mod/pbkdf2.rst | 2 +- doc/sphinx_source/modules/mod/seen.rst | 2 +- doc/sphinx_source/modules/mod/server.rst | 2 +- doc/sphinx_source/modules/mod/share.rst | 2 +- doc/sphinx_source/modules/mod/transfer.rst | 2 +- doc/sphinx_source/modules/mod/twitch.rst | 2 +- doc/sphinx_source/modules/mod/uptime.rst | 2 +- doc/sphinx_source/modules/mod/woobie.rst | 2 +- doc/sphinx_source/tutorials/firstscript.rst | 2 +- doc/sphinx_source/using/bans.rst | 2 +- doc/sphinx_source/using/botnet.rst | 2 +- doc/sphinx_source/using/core.rst | 2 +- doc/sphinx_source/using/features.rst | 2 +- doc/sphinx_source/using/ipv6.rst | 2 +- doc/sphinx_source/using/ircv3.rst | 2 +- doc/sphinx_source/using/partyline.rst | 2 +- doc/sphinx_source/using/patch.rst | 2 +- doc/sphinx_source/using/pbkdf2info.rst | 2 +- doc/sphinx_source/using/tcl-commands.rst | 2 +- doc/sphinx_source/using/text-sub.rst | 2 +- doc/sphinx_source/using/tls.rst | 2 +- doc/sphinx_source/using/tricks.rst | 2 +- doc/sphinx_source/using/users.rst | 2 +- doc/tcl-commands.doc | 2 +- logs/CONTENTS | 2 +- m4/tcl.m4 | 2 +- misc/genchanges | 2 +- misc/generatedocs | 2 +- misc/getcommit | 2 +- misc/killwhitespace | 2 +- misc/makedepend | 2 +- misc/modconfig | 2 +- misc/newversion | 2 +- misc/releaseprep | 2 +- misc/runautotools | 2 +- misc/setpatch | 4 +- misc/updatecopyright | 2 +- scripts/CONTENTS | 2 +- scripts/action.fix.tcl | 2 +- scripts/autobotchk | 6 +- scripts/compat.tcl | 2 +- scripts/ques5.tcl | 2 +- src/bg.c | 2 +- src/bg.h | 2 +- src/botcmd.c | 2 +- src/botmsg.c | 2 +- src/botnet.c | 2 +- src/chan.h | 2 +- src/chanprog.c | 2 +- src/cmds.c | 2 +- src/cmdt.h | 2 +- src/compat/base64.c | 2 +- src/compat/base64.h | 2 +- src/compat/compat.h | 2 +- src/compat/explicit_bzero.c | 2 +- src/compat/explicit_bzero.h | 2 +- src/compat/in6.h | 2 +- src/compat/inet_aton.c | 2 +- src/compat/inet_aton.h | 2 +- src/compat/snprintf.c | 2 +- src/compat/snprintf.h | 2 +- src/compat/strlcpy.c | 2 +- src/compat/strlcpy.h | 2 +- src/dcc.c | 2 +- src/dccutil.c | 2 +- src/dns.c | 2 +- src/dns.h | 2 +- src/eggdrop.h | 2 +- src/flags.c | 2 +- src/flags.h | 2 +- src/lang.h | 2 +- src/language.c | 2 +- src/main.c | 6 +- src/main.h | 2 +- src/mem.c | 2 +- src/misc.c | 2 +- src/misc_file.c | 2 +- src/misc_file.h | 2 +- src/mod/assoc.mod/assoc.c | 2 +- src/mod/assoc.mod/assoc.h | 2 +- src/mod/blowfish.mod/bf_tab.h | 2 +- src/mod/blowfish.mod/blowfish.c | 2 +- src/mod/blowfish.mod/blowfish.h | 2 +- src/mod/channels.mod/channels.c | 2 +- src/mod/channels.mod/channels.h | 2 +- src/mod/channels.mod/cmdschan.c | 2 +- src/mod/channels.mod/tclchan.c | 2 +- src/mod/channels.mod/udefchan.c | 2 +- src/mod/channels.mod/userchan.c | 2 +- src/mod/compress.mod/compress.c | 2 +- src/mod/compress.mod/compress.h | 2 +- src/mod/compress.mod/configure | 4 +- src/mod/compress.mod/configure.ac | 2 +- src/mod/compress.mod/tclcompress.c | 2 +- src/mod/console.mod/console.c | 2 +- src/mod/console.mod/console.h | 2 +- src/mod/ctcp.mod/ctcp.c | 2 +- src/mod/ctcp.mod/ctcp.h | 2 +- src/mod/dns.mod/configure | 4 +- src/mod/dns.mod/configure.ac | 2 +- src/mod/dns.mod/coredns.c | 2 +- src/mod/dns.mod/dns.c | 2 +- src/mod/dns.mod/dns.h | 2 +- src/mod/filesys.mod/dbcompat.c | 2 +- src/mod/filesys.mod/dbcompat.h | 2 +- src/mod/filesys.mod/filedb3.c | 2 +- src/mod/filesys.mod/filedb3.h | 2 +- src/mod/filesys.mod/filelist.c | 2 +- src/mod/filesys.mod/filelist.h | 2 +- src/mod/filesys.mod/files.c | 2 +- src/mod/filesys.mod/files.h | 2 +- src/mod/filesys.mod/filesys.c | 2 +- src/mod/filesys.mod/filesys.h | 2 +- src/mod/filesys.mod/tclfiles.c | 2 +- src/mod/ident.mod/ident.c | 2 +- src/mod/irc.mod/chan.c | 2 +- src/mod/irc.mod/cmdsirc.c | 2 +- src/mod/irc.mod/irc.c | 2 +- src/mod/irc.mod/irc.h | 2 +- src/mod/irc.mod/mode.c | 2 +- src/mod/irc.mod/msgcmds.c | 2 +- src/mod/irc.mod/tclirc.c | 2 +- src/mod/module.h | 2 +- src/mod/modvals.h | 2 +- src/mod/notes.mod/cmdsnote.c | 2 +- src/mod/notes.mod/notes.c | 2 +- src/mod/notes.mod/notes.h | 2 +- src/mod/pbkdf2.mod/pbkdf2.c | 2 +- src/mod/seen.mod/seen.c | 2 +- src/mod/server.mod/cmdsserv.c | 2 +- src/mod/server.mod/isupport.c | 2 +- src/mod/server.mod/server.c | 2 +- src/mod/server.mod/server.h | 2 +- src/mod/server.mod/servmsg.c | 2 +- src/mod/server.mod/tclisupport.c | 2 +- src/mod/server.mod/tclserv.c | 2 +- src/mod/share.mod/share.c | 2 +- src/mod/share.mod/share.h | 2 +- src/mod/share.mod/uf_features.c | 2 +- src/mod/transfer.mod/tcltransfer.c | 2 +- src/mod/transfer.mod/transfer.c | 2 +- src/mod/transfer.mod/transfer.h | 2 +- src/mod/transfer.mod/transferfstat.c | 2 +- src/mod/transfer.mod/transferqueue.c | 2 +- src/mod/twitch.mod/twitch.c | 2 +- src/mod/twitch.mod/twitch.h | 2 +- src/mod/uptime.mod/uptime.c | 2 +- src/mod/uptime.mod/uptime.h | 2 +- src/mod/woobie.mod/woobie.c | 2 +- src/modules.c | 2 +- src/modules.h | 2 +- src/net.c | 2 +- src/proto.h | 2 +- src/rfc1459.c | 2 +- src/stat.h | 2 +- src/tandem.h | 2 +- src/tcl.c | 2 +- src/tcldcc.c | 2 +- src/tclegg.h | 2 +- src/tclhash.c | 2 +- src/tclhash.h | 2 +- src/tclmisc.c | 2 +- src/tcluser.c | 2 +- src/tls.c | 2 +- src/userent.c | 2 +- src/userrec.c | 2 +- src/users.c | 2 +- src/users.h | 2 +- src/version.h | 2 +- text/CONTENTS | 2 +- text/banner | 2 +- 333 files changed, 6148 insertions(+), 6209 deletions(-) create mode 100644 doc/html/_static/sphinx_highlight.js diff --git a/AUTHORS b/AUTHORS index 0a0d78221..dc4275d08 100644 --- a/AUTHORS +++ b/AUTHORS @@ -104,4 +104,4 @@ See also: THANKS, doc/Versions, doc/Changes ------------------------------------------------------------------------------ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/CONTENTS b/CONTENTS index ac9540049..6b5dbc606 100644 --- a/CONTENTS +++ b/CONTENTS @@ -82,4 +82,4 @@ Last revised: September 21, 2018 Contains information on upgrading from a 1.6 bot to a 1.8 bot. _____________________________________________________________________ - Copyright (C) 2003 - 2021 Eggheads Development Team + Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/FEATURES b/FEATURES index 5f8fafe56..4de630f7e 100644 --- a/FEATURES +++ b/FEATURES @@ -44,4 +44,4 @@ Eggdrop Features Copyright (C) 1997 Robey Pointer -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/INSTALL b/INSTALL index 6304d2628..1b355fd85 100644 --- a/INSTALL +++ b/INSTALL @@ -19,8 +19,6 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier. correctly compile Eggdrop. It will also try to find Tcl, which is required to compile. - For macOS tcl and openssl see doc/COMPILE-GUIDE. - 2. Type either 'make config' or 'make iconfig' to determine which @@ -160,5 +158,5 @@ the README file. If not, then READ IT!&@#%@! Have fun with Eggdrop! - Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1997 Robey Pointer Copyright (C) 1999 - 2022 Eggheads + Development Team diff --git a/NEWS b/NEWS index a884e737a..fcb16e621 100644 --- a/NEWS +++ b/NEWS @@ -36,7 +36,7 @@ Eggdrop v1.9.5: Module changes: - Updated woobie.mod with additional example code - Eggdrop config changes: + Eggdrop config changes: - None Documentation changes: @@ -317,4 +317,4 @@ Eggdrop v1.9.0: ________________________________________________________________________ Copyright (C) 1997 Robey Pointer -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/aclocal.m4 b/aclocal.m4 index 1d8827d64..f0df8ce91 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1,6 +1,6 @@ dnl aclocal.m4: macros autoconf uses when building configure from configure.ac dnl -dnl Copyright (C) 1999 - 2022 Eggheads Development Team +dnl Copyright (C) 1999 - 2023 Eggheads Development Team dnl dnl This program is free software; you can redistribute it and/or dnl modify it under the terms of the GNU General Public License diff --git a/config.h.in b/config.h.in index 1a412d315..cec70a8a3 100644 --- a/config.h.in +++ b/config.h.in @@ -2,7 +2,7 @@ /* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2022 Eggheads Development Team + * Copyright (C) 1999 - 2023 Eggheads Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/configure b/configure index 494e63381..a66f50b10 100755 --- a/configure +++ b/configure @@ -12,7 +12,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (C) 1999 - 2022 Eggheads Development Team +# Copyright (C) 1999 - 2023 Eggheads Development Team ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -1518,7 +1518,7 @@ Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team _ACEOF exit fi diff --git a/configure.ac b/configure.ac index c90d97e56..3ae5947e2 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl configure.ac: this file is processed by autoconf to produce ./configure. AC_PREREQ(2.61) AC_INIT([Eggdrop],[1.9.4],[bugs@eggheads.org]) -AC_COPYRIGHT([Copyright (C) 1999 - 2022 Eggheads Development Team]) +AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) AC_LANG([C]) AC_REVISION([m4_esyscmd([misc/getcommit])]) AC_CONFIG_SRCDIR(src/eggdrop.h) @@ -14,7 +14,7 @@ AC_PRESERVE_HELP_ORDER dnl config.h stuff AH_TOP([/* * Copyright (C) 1997 Robey Pointer - * Copyright (C) 1999 - 2022 Eggheads Development Team + * Copyright (C) 1999 - 2023 Eggheads Development Team * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License diff --git a/doc/ABOUT b/doc/ABOUT index 30fb3e7ff..dd7301edd 100644 --- a/doc/ABOUT +++ b/doc/ABOUT @@ -55,4 +55,4 @@ About Eggdrop - Tcl -- Eggdrop cannot compile without Tcl installed on your shell. - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BANS b/doc/BANS index 747f95ffa..0eb2ddfdb 100644 --- a/doc/BANS +++ b/doc/BANS @@ -75,4 +75,4 @@ Bans, Invites, and Exempts file) or until the channel goes -i again, whichever happens last. - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/BOTNET b/doc/BOTNET index d3e700766..cef4b16ee 100644 --- a/doc/BOTNET +++ b/doc/BOTNET @@ -1,4 +1,4 @@ -Botnet Sharing and Linking Last revised: Nov 09, 2017 +Botnet Sharing and Linking Botnet Sharing and Linking @@ -171,6 +171,16 @@ At this point, you can link the two bots by typing '.link BotA' on BotB passwords which are not stored encrypted in the userfile. Note that you can link as many bots as you wish to your botnet. +Secure (TLS) Links + +Since Eggdrop 1.8.0, the ability to encrypt bot links using TLS is +possible. On the hub bot you would prefix the port given in the listen +command with a +, and when you add the hub bot to the leaf, you would +prefix the port used in the .+bot command with a +. In other words, you +would set listen +5555 in the hub config and use .+bot hubbot 1.2.3.4 ++5555 on the leaf bot. These settings are explained more thoroughly in +the TLS botnet documentation. + USING BOTFLAGS Botflags are needed to assign special functions and tasks to your bots. @@ -338,4 +348,17 @@ MAKING BOTS SHARE USER RECORDS |-+beldin `-+Lameshare -Copyright (C) 1999 - 2022 Eggheads Development Team +USING CERTIFICATES TO AUTHENTICATE EGGDROPS + +Eggdrops can use certificates to authenticate when linking to each other +instead of a password. First, you must ensure you have set the +appropriate certificates in the ssl-privatekey and ssl-certificate +settings in the config file, and then enable the ssl-cert-auth setting. +Next, add the certificate on the partyline by using .fprint + to add the +fingerprint for the certificate currently in use, or .fprint to manually add a fingerprint. Once the config file +settings are set 0and fingerprints are added on the partyline, Eggdrops +will attempt to use their certificates intead of passwords for +authentication. + +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/COMPILE-GUIDE b/doc/COMPILE-GUIDE index 92ee2f4fb..7e4322866 100644 --- a/doc/COMPILE-GUIDE +++ b/doc/COMPILE-GUIDE @@ -581,4 +581,4 @@ Last revised: November 17, 2022 _____________________________________________________________________ Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2022 Eggheads Development Team + Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/CONTENTS b/doc/CONTENTS index ba059a05e..a56d03cb4 100644 --- a/doc/CONTENTS +++ b/doc/CONTENTS @@ -72,4 +72,4 @@ Last revised: Nov 01, 2010 notes in reverse chronological order. _____________________________________________________________________ - Copyright (C) 2003 - 2021 Eggheads Development Team + Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/doc/FIRST-SCRIPT b/doc/FIRST-SCRIPT index c98d00674..919531af7 100644 --- a/doc/FIRST-SCRIPT +++ b/doc/FIRST-SCRIPT @@ -225,4 +225,4 @@ of salt!)
      -Copyright (C) 2003 - 2022 Eggheads Development Team +Copyright (C) 2003 - 2023 Eggheads Development Team diff --git a/doc/IPV6 b/doc/IPV6 index b088b8a8f..b181d3b14 100644 --- a/doc/IPV6 +++ b/doc/IPV6 @@ -77,4 +77,4 @@ Other affected variables: nat-ip works with IPv4 as it used to. It has no meaning for IPv6 and is not queried for IPv6 connections. -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/IRCv3 b/doc/IRCv3 index e72536ff9..2199771ee 100644 --- a/doc/IRCv3 +++ b/doc/IRCv3 @@ -54,4 +54,4 @@ The following capabilities are supported by Eggdrop: - setname - +typing -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/MODULES b/doc/MODULES index 9e6aeba41..b61a69b4b 100644 --- a/doc/MODULES +++ b/doc/MODULES @@ -418,4 +418,4 @@ WHAT TO DO WITH A MODULE? the modules directory on ftp.eggheads.org. Don't forget to mention in your text file which version Eggdrop the module is written for. -Copyright (C) 1999 - 2021 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/PARTYLINE b/doc/PARTYLINE index 4b4a030c1..3d490e611 100644 --- a/doc/PARTYLINE +++ b/doc/PARTYLINE @@ -34,4 +34,4 @@ prefixed with an apostrophe is sent to all users on the local bot only. You can change channels with the ".chat" command or even leave all channels with ".chat off". -Copyright (C) 2002 - 2022 Eggheads Development Team +Copyright (C) 2002 - 2023 Eggheads Development Team diff --git a/doc/PATCH-HOWTO b/doc/PATCH-HOWTO index abfa9c012..411ef0adc 100644 --- a/doc/PATCH-HOWTO +++ b/doc/PATCH-HOWTO @@ -34,4 +34,4 @@ To create a patch via github: 7. Pour yourself a cold one and bask in the warm feeling of contributing to the open source community! Karma++! -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/PBKDF2 b/doc/PBKDF2 index cbb4e5e81..7e60d55c7 100644 --- a/doc/PBKDF2 +++ b/doc/PBKDF2 @@ -138,4 +138,4 @@ where 'PBK method' is the method specified in the configuration file, 'salt' is the value used for the salt, and 'password hash' is the output of the hashing algorithm. -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/doc/TLS b/doc/TLS index d4c9661d3..991217fd4 100644 --- a/doc/TLS +++ b/doc/TLS @@ -202,4 +202,4 @@ verification and authorization. Higher values enable specific exceptions like allowing self-signed or expired certificates. Details are documented in eggdrop.conf. -Copyright (C) 2010 - 2022 Eggheads Development Team +Copyright (C) 2010 - 2023 Eggheads Development Team diff --git a/doc/TRICKS b/doc/TRICKS index 157390db8..dfc5dbb6d 100644 --- a/doc/TRICKS +++ b/doc/TRICKS @@ -58,4 +58,4 @@ normal Tcl file. For example, you can set 'userfile' and 'chanfile' to set userfile "$myvar.user" set chanfile "$myvar.chan" -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2023 Eggheads Development Team diff --git a/doc/USERS b/doc/USERS index de72d3bf6..5e561135f 100644 --- a/doc/USERS +++ b/doc/USERS @@ -97,4 +97,4 @@ global flag applies to all channels. The standard global flags are: user-defined flags (Capital letters A through Z). These are used by scripts, and their uses vary depending on the script that uses them. -Copyright (C) 2002 - 2022 Eggheads Development Team +Copyright (C) 2002 - 2023 Eggheads Development Team diff --git a/doc/core.settings b/doc/core.settings index 236709f7f..28b090666 100644 --- a/doc/core.settings +++ b/doc/core.settings @@ -231,9 +231,7 @@ logfile "logs/logfile" set logfile-suffix ".%d%b%Y" If keep-all-logs is 1, this setting will define the suffix of the logfiles. The default will result in a suffix like "04May2000". "%Y%m%d" will produce the often used - yyyymmdd format. Read the strftime manpages for more options. NOTE: - On systems which don't support strftime, the default format will - always be used. + yyyymmdd format. Read the strftime manpages for more options. CONSOLE SETTINGS @@ -712,4 +710,4 @@ point. source scripts/alltools.tcl source scripts/action.fix.tcl -Copyright (C) 2000 - 2022 Eggheads Development Team +Copyright (C) 2000 - 2023 Eggheads Development Team diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css index 9b49ca350..18255e5ae 100644 --- a/doc/html/_static/basic.css +++ b/doc/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -15,6 +15,12 @@ div.clearer { clear: both; } +div.section::after { + display: block; + content: ''; + clear: left; +} + /* -- relbar ---------------------------------------------------------------- */ div.related { @@ -124,7 +130,7 @@ ul.search li a { font-weight: bold; } -ul.search li div.context { +ul.search li p.context { color: #888; margin: 2px 0 0 30px; text-align: left; @@ -216,7 +222,7 @@ table.modindextable td { /* -- general body styles --------------------------------------------------- */ div.body { - min-width: 450px; + min-width: 360px; max-width: 800px; } @@ -261,19 +267,25 @@ p.rubric { font-weight: bold; } -img.align-left, .figure.align-left, object.align-left { +img.align-left, figure.align-left, .figure.align-left, object.align-left { clear: left; float: left; margin-right: 1em; } -img.align-right, .figure.align-right, object.align-right { +img.align-right, figure.align-right, .figure.align-right, object.align-right { clear: right; float: right; margin-left: 1em; } -img.align-center, .figure.align-center, object.align-center { +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { display: block; margin-left: auto; margin-right: auto; @@ -287,30 +299,45 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } /* -- sidebars -------------------------------------------------------------- */ -div.sidebar { +div.sidebar, +aside.sidebar { margin: 0 0 0.5em 1em; border: 1px solid #ddb; - padding: 7px 7px 0 7px; + padding: 7px; background-color: #ffe; width: 40%; float: right; + clear: right; + overflow-x: auto; } p.sidebar-title { font-weight: bold; } +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + /* -- topics ---------------------------------------------------------------- */ +nav.contents, +aside.topic, div.topic { border: 1px solid #ccc; - padding: 7px 7px 0 7px; + padding: 7px; margin: 10px 0 10px 0; } @@ -332,10 +359,6 @@ div.admonition dt { font-weight: bold; } -div.admonition dl { - margin-bottom: 0; -} - p.admonition-title { margin: 0px 10px 5px 0px; font-weight: bold; @@ -346,9 +369,34 @@ div.body p.centered { margin-top: 25px; } +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + /* -- tables ---------------------------------------------------------------- */ table.docutils { + margin-top: 10px; + margin-bottom: 10px; border: 0; border-collapse: collapse; } @@ -358,6 +406,11 @@ table.align-center { margin-right: auto; } +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } @@ -373,10 +426,6 @@ table.docutils td, table.docutils th { border-bottom: 1px solid #aaa; } -table.footnote td, table.footnote th { - border: 0 !important; -} - th { text-align: left; padding-right: 5px; @@ -391,22 +440,34 @@ table.citation td { border-bottom: none; } +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + /* -- figures --------------------------------------------------------------- */ -div.figure { +div.figure, figure { margin: 0.5em; padding: 0.5em; } -div.figure p.caption { +div.figure p.caption, figcaption { padding: 0.3em; } -div.figure p.caption span.caption-number { +div.figure p.caption span.caption-number, +figcaption span.caption-number { font-style: italic; } -div.figure p.caption span.caption-text { +div.figure p.caption span.caption-text, +figcaption span.caption-text { } /* -- field list styles ----------------------------------------------------- */ @@ -433,10 +494,71 @@ table.field-list td, table.field-list th { /* -- hlist styles ---------------------------------------------------------- */ +table.hlist { + margin: 1em 0; +} + table.hlist td { vertical-align: top; } +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + /* -- other body styles ----------------------------------------------------- */ @@ -460,11 +582,81 @@ ol.upperroman { list-style: upper-roman; } +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + dl { margin-bottom: 15px; } -dd p { +dd > :first-child { margin-top: 0px; } @@ -478,6 +670,11 @@ dd { margin-left: 30px; } +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + dt:target, span.highlighted { background-color: #fbe54e; } @@ -491,14 +688,6 @@ dl.glossary dt { font-size: 1.1em; } -.optional { - font-size: 1.3em; -} - -.sig-paren { - font-size: larger; -} - .versionmodified { font-style: italic; } @@ -537,6 +726,13 @@ dl.glossary dt { font-style: oblique; } +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + abbr, acronym { border-bottom: dotted 1px; cursor: help; @@ -549,29 +745,69 @@ pre { overflow-y: hidden; /* fixes display issues on Chrome browsers */ } +pre, div[class*="highlight-"] { + clear: both; +} + span.pre { -moz-hyphens: none; -ms-hyphens: none; -webkit-hyphens: none; hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; } td.linenos pre { - padding: 5px 0px; border: 0; background-color: transparent; color: #aaa; } table.highlighttable { - margin-left: 0.5em; + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; } table.highlighttable td { - padding: 0 0.5em 0 0.5em; + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; } div.code-block-caption { + margin-top: 1em; padding: 2px 5px; font-size: small; } @@ -580,8 +816,14 @@ div.code-block-caption code { background-color: transparent; } -div.code-block-caption + div > div.highlight > pre { - margin-top: 0; +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ } div.code-block-caption span.caption-number { @@ -593,21 +835,7 @@ div.code-block-caption span.caption-text { } div.literal-block-wrapper { - padding: 1em 1em 0; -} - -div.literal-block-wrapper div.highlight { - margin: 0; -} - -code.descname { - background-color: transparent; - font-weight: bold; - font-size: 1.2em; -} - -code.descclassname { - background-color: transparent; + margin: 1em 0; } code.xref, a code { @@ -648,8 +876,7 @@ span.eqno { } span.eqno a.headerlink { - position: relative; - left: 0px; + position: absolute; z-index: 1; } diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js index 344db17dd..d06a71d75 100644 --- a/doc/html/_static/doctools.js +++ b/doc/html/_static/doctools.js @@ -2,314 +2,155 @@ * doctools.js * ~~~~~~~~~~~ * - * Sphinx JavaScript utilities for all documentation. + * Base JavaScript utilities for all Sphinx HTML documentation. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ - -/** - * select a different prefix for underscore - */ -$u = _.noConflict(); - -/** - * make the code below compatible with browsers without - * an installed firebug like debugger -if (!window.console || !console.firebug) { - var names = ["log", "debug", "info", "warn", "error", "assert", "dir", - "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", - "profile", "profileEnd"]; - window.console = {}; - for (var i = 0; i < names.length; ++i) - window.console[names[i]] = function() {}; -} - */ - -/** - * small helper function to urldecode strings - */ -jQuery.urldecode = function(x) { - return decodeURIComponent(x).replace(/\+/g, ' '); -}; - -/** - * small helper function to urlencode strings - */ -jQuery.urlencode = encodeURIComponent; - -/** - * This function returns the parsed url parameters of the - * current request. Multiple values per key are supported, - * it will always return arrays of strings for the value parts. - */ -jQuery.getQueryParameters = function(s) { - if (typeof s === 'undefined') - s = document.location.search; - var parts = s.substr(s.indexOf('?') + 1).split('&'); - var result = {}; - for (var i = 0; i < parts.length; i++) { - var tmp = parts[i].split('=', 2); - var key = jQuery.urldecode(tmp[0]); - var value = jQuery.urldecode(tmp[1]); - if (key in result) - result[key].push(value); - else - result[key] = [value]; +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); } - return result; }; -/** - * highlight a given string on a jquery object by wrapping it in - * span elements with the given class name. - */ -jQuery.fn.highlightText = function(text, className) { - function highlight(node, addItems) { - if (node.nodeType === 3) { - var val = node.nodeValue; - var pos = val.toLowerCase().indexOf(text); - if (pos >= 0 && - !jQuery(node.parentNode).hasClass(className) && - !jQuery(node.parentNode).hasClass("nohighlight")) { - var span; - var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); - if (isInSVG) { - span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); - } else { - span = document.createElement("span"); - span.className = className; - } - span.appendChild(document.createTextNode(val.substr(pos, text.length))); - node.parentNode.insertBefore(span, node.parentNode.insertBefore( - document.createTextNode(val.substr(pos + text.length)), - node.nextSibling)); - node.nodeValue = val.substr(0, pos); - if (isInSVG) { - var bbox = span.getBBox(); - var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; - rect.y.baseVal.value = bbox.y; - rect.width.baseVal.value = bbox.width; - rect.height.baseVal.value = bbox.height; - rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; - addItems.push({ - "parent": node.parentNode, - "target": rect}); - } - } - } - else if (!jQuery(node).is("button, select, textarea")) { - jQuery.each(node.childNodes, function() { - highlight(this, addItems); - }); - } - } - var addItems = []; - var result = this.each(function() { - highlight(this, addItems); - }); - for (var i = 0; i < addItems.length; ++i) { - jQuery(addItems[i].parent).before(addItems[i].target); - } - return result; -}; - -/* - * backward compatibility for jQuery.browser - * This will be supported until firefox bug is fixed. - */ -if (!jQuery.browser) { - jQuery.uaMatch = function(ua) { - ua = ua.toLowerCase(); - - var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || - /(webkit)[ \/]([\w.]+)/.exec(ua) || - /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || - /(msie) ([\w.]+)/.exec(ua) || - ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || - []; - - return { - browser: match[ 1 ] || "", - version: match[ 2 ] || "0" - }; - }; - jQuery.browser = {}; - jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; -} - /** * Small JavaScript module for the documentation. */ -var Documentation = { - - init : function() { - this.fixFirefoxAnchorBug(); - this.highlightSearchWords(); - this.initIndexTable(); - if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { - this.initOnKeyListeners(); - } +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); }, /** * i18n support */ - TRANSLATIONS : {}, - PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, - LOCALE : 'unknown', + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", // gettext and ngettext don't access this so that the functions // can safely bound to a different name (_ = Documentation.gettext) - gettext : function(string) { - var translated = Documentation.TRANSLATIONS[string]; - if (typeof translated === 'undefined') - return string; - return (typeof translated === 'string') ? translated : translated[0]; - }, - - ngettext : function(singular, plural, n) { - var translated = Documentation.TRANSLATIONS[singular]; - if (typeof translated === 'undefined') - return (n == 1) ? singular : plural; - return translated[Documentation.PLURALEXPR(n)]; + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } }, - addTranslations : function(catalog) { - for (var key in catalog.messages) - this.TRANSLATIONS[key] = catalog.messages[key]; - this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); - this.LOCALE = catalog.locale; + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; }, - /** - * add context elements like header anchor links - */ - addContextElements : function() { - $('div[id] > :header:first').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this headline')). - appendTo(this); - }); - $('dt[id]').each(function() { - $('\u00B6'). - attr('href', '#' + this.id). - attr('title', _('Permalink to this definition')). - appendTo(this); - }); + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; }, /** - * workaround a firefox stupidity - * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + * helper function to focus on search bar */ - fixFirefoxAnchorBug : function() { - if (document.location.hash && $.browser.mozilla) - window.setTimeout(function() { - document.location.href += ''; - }, 10); + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); }, /** - * highlight the search words provided in the url in the text + * Initialise the domain index toggle buttons */ - highlightSearchWords : function() { - var params = $.getQueryParameters(); - var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; - if (terms.length) { - var body = $('div.body'); - if (!body.length) { - body = $('body'); + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); } - window.setTimeout(function() { - $.each(terms, function() { - body.highlightText(this.toLowerCase(), 'highlighted'); - }); - }, 10); - $('') - .appendTo($('#searchbox')); - } - }, - - /** - * init the domain index toggle buttons - */ - initIndexTable : function() { - var togglers = $('img.toggler').click(function() { - var src = $(this).attr('src'); - var idnum = $(this).attr('id').substr(7); - $('tr.cg-' + idnum).toggle(); - if (src.substr(-9) === 'minus.png') - $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); - else - $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); - }).css('display', ''); - if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { - togglers.click(); - } - }, - - /** - * helper function to hide the search marks again - */ - hideSearchWords : function() { - $('#searchbox .highlight-link').fadeOut(300); - $('span.highlighted').removeClass('highlighted'); - }, - - /** - * make the url absolute - */ - makeURL : function(relativeURL) { - return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; - }, + }; - /** - * get the current relative url - */ - getCurrentURL : function() { - var path = document.location.pathname; - var parts = path.split(/\//); - $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { - if (this === '..') - parts.pop(); - }); - var url = parts.join('/'); - return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); }, - initOnKeyListeners: function() { - $(document).keyup(function(event) { - var activeElementType = document.activeElement.tagName; - // don't navigate when in search box or textarea - if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT') { - switch (event.keyCode) { - case 37: // left - var prevHref = $('link[rel="prev"]').prop('href'); - if (prevHref) { - window.location.href = prevHref; - return false; + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); } - case 39: // right - var nextHref = $('link[rel="next"]').prop('href'); - if (nextHref) { - window.location.href = nextHref; - return false; + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); } + break; } } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } }); - } + }, }; // quick alias for translations -_ = Documentation.gettext; +const _ = Documentation.gettext; -$(document).ready(function() { - Documentation.init(); -}); +_ready(Documentation.init); diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index c0721a95a..dbe4282de 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,10 +1,14 @@ var DOCUMENTATION_OPTIONS = { URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '1.9.4', - LANGUAGE: 'None', + LANGUAGE: 'en', COLLAPSE_INDEX: false, + BUILDER: 'html', FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/doc/html/_static/language_data.js b/doc/html/_static/language_data.js index 5266fb19e..250f5665f 100644 --- a/doc/html/_static/language_data.js +++ b/doc/html/_static/language_data.js @@ -5,15 +5,16 @@ * This script contains the language-specific data used by searchtools.js, * namely the list of stopwords, stemmer, scorer and splitter. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ -var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; -/* Non-minified version JS is _stemmer.js if file is provided */ +/* Non-minified version is copied as a separate JS file, is available */ + /** * Porter Stemmer */ @@ -196,102 +197,3 @@ var Stemmer = function() { } } - - - - -var splitChars = (function() { - var result = {}; - var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, - 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, - 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, - 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, - 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, - 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, - 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, - 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, - 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, - 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; - var i, j, start, end; - for (i = 0; i < singles.length; i++) { - result[singles[i]] = true; - } - var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], - [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], - [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], - [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], - [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], - [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], - [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], - [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], - [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], - [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], - [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], - [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], - [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], - [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], - [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], - [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], - [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], - [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], - [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], - [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], - [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], - [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], - [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], - [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], - [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], - [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], - [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], - [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], - [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], - [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], - [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], - [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], - [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], - [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], - [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], - [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], - [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], - [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], - [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], - [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], - [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], - [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], - [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], - [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], - [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], - [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], - [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], - [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], - [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; - for (i = 0; i < ranges.length; i++) { - start = ranges[i][0]; - end = ranges[i][1]; - for (j = start; j <= end; j++) { - result[j] = true; - } - } - return result; -})(); - -function splitQuery(query) { - var result = []; - var start = -1; - for (var i = 0; i < query.length; i++) { - if (splitChars[query.charCodeAt(i)]) { - if (start !== -1) { - result.push(query.slice(start, i)); - start = -1; - } - } else if (start === -1) { - start = i; - } - } - if (start !== -1) { - result.push(query.slice(start)); - } - return result; -} - - diff --git a/doc/html/_static/pygments.css b/doc/html/_static/pygments.css index 20c4814dc..691aeb82d 100644 --- a/doc/html/_static/pygments.css +++ b/doc/html/_static/pygments.css @@ -1,5 +1,10 @@ +pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } -.highlight { background: #eeffcc; } +.highlight { background: #eeffcc; } .highlight .c { color: #408090; font-style: italic } /* Comment */ .highlight .err { border: 1px solid #FF0000 } /* Error */ .highlight .k { color: #007020; font-weight: bold } /* Keyword */ diff --git a/doc/html/_static/searchtools.js b/doc/html/_static/searchtools.js index 5ff318066..97d56a74d 100644 --- a/doc/html/_static/searchtools.js +++ b/doc/html/_static/searchtools.js @@ -4,22 +4,24 @@ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ +"use strict"; -if (!Scorer) { - /** - * Simple result scoring code. - */ +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { var Scorer = { // Implement the following function to further tweak the score for each result - // The function takes a result array [filename, title, anchor, descr, score] + // The function takes a result array [docname, title, anchor, descr, score, filename] // and returns the new score. /* - score: function(result) { - return result[4]; + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score }, */ @@ -28,423 +30,508 @@ if (!Scorer) { // or matches in the last dotted part of the object name objPartialMatch: 6, // Additive scores depending on the priority of the object - objPrio: {0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5}, // used to be unimportantResults + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, // Used when the priority is not in the mapping. objPrioDefault: 0, // query found in title title: 15, + partialTitle: 7, // query found in terms - term: 5 + term: 5, + partialTerm: 2, }; } -if (!splitQuery) { - function splitQuery(query) { - return query.split(/\s+/); +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = docUrlRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = docUrlRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings } /** * Search Module */ -var Search = { - - _index : null, - _queued_query : null, - _pulse_status : -1, - - init : function() { - var params = $.getQueryParameters(); - if (params.q) { - var query = params.q[0]; - $('input[name="q"]')[0].value = query; - this.performSearch(query); - } +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; }, - loadIndex : function(url) { - $.ajax({type: "GET", url: url, data: null, - dataType: "script", cache: true, - complete: function(jqxhr, textstatus) { - if (textstatus != "success") { - document.getElementById("searchindexloader").src = url; - } - }}); + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); }, - setIndex : function(index) { - var q; - this._index = index; - if ((q = this._queued_query) !== null) { - this._queued_query = null; - Search.query(q); + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); } }, - hasIndex : function() { - return this._index !== null; - }, + hasIndex: () => Search._index !== null, - deferQuery : function(query) { - this._queued_query = query; - }, + deferQuery: (query) => (Search._queued_query = query), - stopPulse : function() { - this._pulse_status = 0; - }, + stopPulse: () => (Search._pulse_status = -1), - startPulse : function() { - if (this._pulse_status >= 0) - return; - function pulse() { - var i; + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { Search._pulse_status = (Search._pulse_status + 1) % 4; - var dotString = ''; - for (i = 0; i < Search._pulse_status; i++) - dotString += '.'; - Search.dots.text(dotString); - if (Search._pulse_status > -1) - window.setTimeout(pulse, 500); - } + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; pulse(); }, /** * perform a search for something (or wait until index is loaded) */ - performSearch : function(query) { + performSearch: (query) => { // create the required interface elements - this.out = $('#search-results'); - this.title = $('

      ' + _('Searching') + '

      ').appendTo(this.out); - this.dots = $('').appendTo(this.title); - this.status = $('

      ').appendTo(this.out); - this.output = $(' -

      Using Eggdrop

      +

      Using Eggdrop

      -

      Tutorials

      +

      Tutorials

      -

      Eggdrop Modules

      +

      Eggdrop Modules

      -

      About Eggdrop

      +

      About Eggdrop

      So this is how we register C callbacks for binds with the correct arguments:

      - -
      -

      Summary

      + +
      +

      Summary

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

        -
      • check_tcl_dcc() creates Tcl variables $_dcc1 $_dcc2 $_dcc3 and lets check_tcl_bind call the binds
      • -
      • Tcl binds are done at this point
      • -
      • C binds mean the Tcl command associated with the bind is *dcc:boot which calls builtin_dcc which gets cmd_boot as ClientData cd argument
      • -
      • buildin_dcc performs some sanity checking to avoid crashes and then calls cmd_boot() aka F() with the arguments it wants C callbacks to have
      • +
      • check_tcl_dcc() creates Tcl variables $_dcc1 $_dcc2 $_dcc3 and lets check_tcl_bind call the binds

      • +
      • Tcl binds are done at this point

      • +
      • C binds mean the Tcl command associated with the bind is *dcc:boot which calls builtin_dcc which gets cmd_boot as ClientData cd argument

      • +
      • gbuildin_dcc performs some sanity checking to avoid crashes and then calls cmd_boot() aka F() with the arguments it wants C callbacks to have

      -

      Example edited and annotated gdb backtrace in cmd_boot after doing .boot test on the partyline as user thommey with typical owner flags.

      +

      Example edited and annotated gdb backtrace in :code::cmd_boot after doing .boot test on the partyline as user thommey with typical owner flags.

      #0  cmd_boot (u=0x55e8bd8a49b0, idx=4, par=0x55e8be6a0010 "test") at cmds.c:614
           *u = {next = 0x55e8bd8aec90, handle = "thommey", flags = 8977024, flags_udef = 0, chanrec = 0x55e8bd8aeae0, entries = 0x55e8bd8a4a10}
       #1  builtin_dcc (cd=0x55e8bbf002d0 <cmd_boot>, irp=0x55e8bd59b1c0, argc=4, argv=0x55e8bd7e3e00) at tclhash.c:678
      @@ -355,10 +350,11 @@ 

      Summary

      @@ -371,7 +367,7 @@

      Summary
      - previous | next @@ -383,9 +379,9 @@

      Summary

      diff --git a/doc/html/modules/irc.html b/doc/html/modules/irc.html index f12063f7e..868377b61 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 - 2022 Eggheads Development Team

      +

      Copyright (C) 2000 - 2023 Eggheads Development Team

      diff --git a/doc/html/modules/mod/assoc.html b/doc/html/modules/mod/assoc.html index 546553921..39f962f04 100644 --- a/doc/html/modules/mod/assoc.html +++ b/doc/html/modules/mod/assoc.html @@ -1,28 +1,23 @@ - + - + - - + + + Assoc Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + +

      ---- - - - +
      +
      0turn off
      + + + - - + + - - + + - - + + - - + + - - + + - + - - + + - +

      0

      turn off

      1isoptest (allow serverop if registered op)

      1

      isoptest (allow serverop if registered op)

      2wasoptest (allow serverop if user had op before split)

      2

      wasoptest (allow serverop if user had op before split)

      3allow serverop if isop or wasop

      3

      allow serverop if isop or wasop

      4allow serverop if isop and wasop.

      4

      allow serverop if isop and wasop.

      5If the channel is -bitch, see stopnethack-mode 3

      5

      If the channel is -bitch, see stopnethack-mode 3

      If the channel is +bitch, see stopnethack-mode 1

      If the channel is +bitch, see stopnethack-mode 1

      6If the channel is -bitch, see stopnethack-mode 2

      6

      If the channel is -bitch, see stopnethack-mode 2

      If the channel is +bitch, see stopnethack-mode 4

      If the channel is +bitch, see stopnethack-mode 4

      -
      revenge-mode 0
      -

      This settings defines how the bot should punish bad users when +

      revenge-mode 0

      This settings defines how the bot should punish bad users when revenging. There are four possible settings:

      -
      -
      ---- - - - +
      +
      0Deop the user.
      + + + - - + + - - + + - - + +

      0

      Deop the user.

      1Deop the user and give them the +d flag for the channel.

      1

      Deop the user and give them the +d flag for the channel.

      2Deop the user, give them the +d flag for the channel, and kick them.

      2

      Deop the user, give them the +d flag for the channel, and kick them.

      3Deop the user, give them the +d flag for the channel, kick, and ban them.

      3

      Deop the user, give them the +d flag for the channel, kick, and ban them.

      -
      ban-type 3
      -

      This setting defines what type of bans should eggdrop place for +

      ban-type 3

      This setting defines what type of bans should eggdrop place for +k users or when revenge-mode is 3. Available types are:

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

      0 *!user@host

      1 *!*user@host

      1 *!*user@host

      2 *!*@host

      2 *!*@host

      3 *!*user@*.host

      3 *!*user@*.host

      4 *!*@*.host

      4 *!*@*.host

      5 nick!user@host

      5 nick!user@host

      6 nick!*user@host

      6 nick!*user@host

      7 nick!*@host

      7 nick!*@host

      8 nick!*user@*.host

      8 nick!*user@*.host

      9 nick!*@*.host

      9 nick!*@*.host

      -

      You can also specify types from 10 to 19 which correspond to types +

      You can also specify types from 10 to 19 which correspond to types 0 to 9, but instead of using a * wildcard to replace portions of the host, only numbers in hostnames are replaced with the ‘?’ wildcard. Same is valid for types 20-29, but instead of ‘?’, the ‘*’ wildcard will be used. Types 30-39 set the host to ‘*’.

      -
      ban-time 120
      -
      Set here how long temporary bans will last (in minutes). If you -set this setting to 0, the bot will never remove them.
      -
      exempt-time 60
      -
      Set here how long temporary exempts will last (in minutes). If you set +
      ban-time 120

      Set here how long temporary bans will last (in minutes). If you +set this setting to 0, the bot will never remove them.

      +
      +
      exempt-time 60

      Set here how long temporary exempts will last (in minutes). If you set this setting to 0, the bot will never remove them. The bot will check the exempts every X minutes, but will not remove the exempt if a ban is set on the channel that matches that exempt. Once the ban is removed, then the exempt will be removed the next time the bot checks. Please -note that this is an IRCnet feature.

      -
      invite-time 60
      -
      Set here how long temporary invites will last (in minutes). If you set +note that this is an IRCnet feature.

      +
      +
      invite-time 60

      Set here how long temporary invites will last (in minutes). If you set this setting to 0, the bot will never remove them. The bot will check the invites every X minutes, but will not remove the invite if a channel is set to +i. Once the channel is -i then the invite will be removed the next time the bot checks. Please note that this is an -IRCnet feature.

      -
      aop-delay (minimum:maximum)
      -
      +IRCnet feature.

      +
      +
      aop-delay (minimum:maximum)

      This is used for autoop, autohalfop, autovoice. If an op or voice joins a channel while another op or voice is pending, the bot will attempt to put both modes on one line.

      -
      ---- - - - +
      aop-delay 0No delay is used.
      + + + - - + + - - + +

      aop-delay 0

      No delay is used.

      aop-delay XAn X second delay is used.

      aop-delay X

      An X second delay is used.

      aop-delay X:YA random delay between X and Y is used.

      aop-delay X:Y

      A random delay between X and Y is used.

      -
      -
      need-op { putserv “PRIVMSG #lamest :op me cos i’m lame!” }
      -
      This setting will make the bot run the script enclosed in braces +
      +
      need-op { putserv “PRIVMSG #lamest :op me cos i’m lame!” }

      This setting will make the bot run the script enclosed in braces if it does not have ops. This must be shorter than 120 characters. If you use scripts like getops.tcl or botnetop.tcl, you don’t need -to set this setting.

      -
      need-invite { putserv “PRIVMSG #lamest :let me in!” }
      -
      This setting will make the bot run the script enclosed in braces +to set this setting.

      +
      +
      need-invite { putserv “PRIVMSG #lamest :let me in!” }

      This setting will make the bot run the script enclosed in braces if it needs an invite to the channel. This must be shorter than 120 characters. If you use scripts like getops.tcl or botnetop.tcl, you -don’t need to set this setting.

      -
      need-key { putserv “PRIVMSG #lamest :let me in!” }
      -
      This setting will make the bot run the script enclosed in braces +don’t need to set this setting.

      +
      +
      need-key { putserv “PRIVMSG #lamest :let me in!” }

      This setting will make the bot run the script enclosed in braces if it needs the key to the channel. This must be shorter than 120 characters. If you use scripts like getops.tcl or botnetop.tcl, you -don’t need to set this setting.

      -
      need-unban { putserv “PRIVMSG #lamest :let me in!” }
      -
      This setting will make the bot run the script enclosed in braces +don’t need to set this setting.

      +
      +
      need-unban { putserv “PRIVMSG #lamest :let me in!” }

      This setting will make the bot run the script enclosed in braces if it needs to be unbanned on the channel. This must be shorter than 120 characters. If you use scripts like getops.tcl or botnetop.tcl, -you don’t need to set this setting.

      -
      need-limit { putserv “PRIVMSG #lamest :let me in!” }
      -
      This setting will make the bot run the script enclosed in braces +you don’t need to set this setting.

      +
      +
      need-limit { putserv “PRIVMSG #lamest :let me in!” }

      This setting will make the bot run the script enclosed in braces if it needs the limit to be raised on the channel. This must be shorter than 120 characters. If you use scripts like getops.tcl or -botnetop.tcl, you don’t need to set this setting.

      -
      flood-chan 15:60
      -
      Set here how many channel messages in how many seconds from one +botnetop.tcl, you don’t need to set this setting.

      +
      +
      flood-chan 15:60

      Set here how many channel messages in how many seconds from one host constitutes a flood. Setting this to 0, 0:X or X:0 disables text -flood protection for the channel, where X is an integer >= 0.

      -
      flood-deop 3:10
      -
      Set here how many deops in how many seconds from one host constitutes +flood protection for the channel, where X is an integer >= 0.

      +
      +
      flood-deop 3:10

      Set here how many deops in how many seconds from one host constitutes a flood. Setting this to 0, 0:X or X:0 disables deop flood protection for -the channel, where X is an integer >= 0.

      -
      flood-kick 3:10
      -
      Set here how many kicks in how many seconds from one host constitutes +the channel, where X is an integer >= 0.

      +
      +
      flood-kick 3:10

      Set here how many kicks in how many seconds from one host constitutes a flood. Setting this to 0, 0:X or X:0 disables kick flood protection for -the channel, where X is an integer >= 0.

      -
      flood-join 5:60
      -
      Set here how many joins in how many seconds from one host constitutes +the channel, where X is an integer >= 0.

      +
      +
      flood-join 5:60

      Set here how many joins in how many seconds from one host constitutes a flood. Setting this to 0, 0:X or X:0 disables join flood protection for -the channel, where X is an integer >= 0.

      -
      flood-ctcp 3:60
      -
      Set here how many channel ctcps in how many seconds from one host +the channel, where X is an integer >= 0.

      +
      +
      flood-ctcp 3:60

      Set here how many channel ctcps in how many seconds from one host constitutes a flood. Setting this to 0, 0:X or X:0 disables ctcp flood -protection for the channel, where X is an integer >= 0.

      -
      flood-nick 5:60
      -
      Set here how many nick changes in how many seconds from one host +protection for the channel, where X is an integer >= 0.

      +
      +
      flood-nick 5:60

      Set here how many nick changes in how many seconds from one host constitutes a flood. Setting this to 0, 0:X or X:0 disables nick flood -protection for the channel, where X is an integer >= 0.

      +protection for the channel, where X is an integer >= 0.

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

      There are many different options for channels which you can define. +

      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:

      -
      -
      -
      enforcebans
      -
      When a ban is set, kick people who are on the channel and match -the ban?
      -
      dynamicbans
      -
      Only activate bans on the channel when necessary? This keeps the +
      +
      +
      enforcebans

      When a ban is set, kick people who are on the channel and match +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 remembers every ban, but it only activates a ban on the channel -when it sees someone join who matches that ban.

      -
      userbans
      -
      Allow bans to be made by users directly? If turned off, the bot will -require all bans to be made through the bot’s console.
      -
      dynamicexempts
      -
      Only activate exempts on the channel when necessary? This keeps the +when it sees someone join who matches that ban.

      +
      +
      userbans

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

      +
      +
      dynamicexempts

      Only activate exempts on the channel when necessary? This keeps the channel’s exempt list from getting excessively long. The bot still remembers every exempt, but it only activates a exempt on the channel when it sees a ban set that matches the exempt. The exempt remains -active on the channel for as long as the ban is still active.

      -
      userexempts
      -
      Allow exempts to be made by users directly? If turned off, the bot will -require all exempts to be made through the bot’s console.
      -
      dynamicinvites
      -
      Only activate invites on the channel when necessary? This keeps the +active on the channel for as long as the ban is still active.

      +
      +
      userexempts

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

      +
      +
      dynamicinvites

      Only activate invites on the channel when necessary? This keeps the channel’s invite list from getting excessively long. The bot still remembers every invite, but the invites are only activated when the channel is set to invite only and a user joins after requesting an -invite. Once set, the invite remains until the channel goes to -i.

      -
      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? -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?
      -
      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?
      -
      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 +invite. Once set, the invite remains until the channel goes to -i.

      +
      +
      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? +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?

      +
      +
      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?

      +
      +
      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 the total number of members, ops, voices, regular users, and +b, +e, and +I modes on the channel. A sample status line follows:

      -
      -
      [01:40] @#lamest (+istn) : [m/1 o/1 v/4 n/7 b/1 e/5 I/7]
      -
      -
      revenge
      -
      Remember people who deop/kick/ban the bot, valid ops, or friends -and punish them? Users with the +f flag are exempt from revenge.
      -
      revengebot
      -
      This is similar to to the ‘revenge’ option, but it only triggers -if a bot gets deopped, kicked or banned.
      -
      autovoice
      -
      Voice users with the +v flag when they join the channel?
      -
      secret
      -
      Prevent this channel from being listed on the botnet?
      -
      shared
      -
      Share channel-related user info for this channel?
      -
      cycle
      -
      Cycle the channel when it has no ops?
      -
      dontkickops
      -
      Do you want the bot not to be able to kick users who have the +o +
      +

      [01:40] @#lamest (+istn) : [m/1 o/1 v/4 n/7 b/1 e/5 I/7]

      +
      +
      +
      revenge

      Remember people who deop/kick/ban the bot, valid ops, or friends +and punish them? Users with the +f flag are exempt from revenge.

      +
      +
      revengebot

      This is similar to to the ‘revenge’ option, but it only triggers +if a bot gets deopped, kicked or banned.

      +
      +
      autovoice

      Voice users with the +v flag when they join the channel?

      +
      +
      secret

      Prevent this channel from being listed on the botnet?

      +
      +
      shared

      Share channel-related user info for this channel?

      +
      +
      cycle

      Cycle the channel when it has no ops?

      +
      +
      dontkickops

      Do you want the bot not to be able to kick users who have the +o flag, letting them kick-flood for instance to protect the channel -against clone attacks?

      -
      inactive
      -
      This prevents the bot from joining the channel (or makes it leave the +against clone attacks?

      +
      +
      inactive

      This prevents the bot from joining the channel (or makes it leave the channel if it is already there). It can be useful to make the bot leave a channel without losing its settings, channel-specific user flags, -channel bans, and without affecting sharing.

      -
      seen
      -
      Respond to seen requests in the channel? The seen module must be -loaded for this to work.
      -
      nodesynch
      -
      Allow non-ops to perform channel modes? This can stop the bot from +channel bans, and without affecting sharing.

      +
      +
      seen

      Respond to seen requests in the channel? The seen module must be +loaded for this to work.

      +
      +
      nodesynch

      Allow non-ops to perform channel modes? This can stop the bot from 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?
      +setting channel modes without having ops.

      +
      +
      static

      Allow only permanent owners to remove the channel?

      +
      @@ -475,9 +450,8 @@

      Search

      set default-ban-time 120

      set default-exempt-time 60

      set default-invite-time 60

      -
      -
      set default-chanset {
      -
      +
      +
      set default-chanset {
      -autoop
      -autovoice
      -bitch
      @@ -510,11 +484,12 @@

      Search

      }

      -

      Copyright (C) 2000 - 2022 Eggheads Development Team

      +

      Copyright (C) 2000 - 2023 Eggheads Development Team

      - + +
      @@ -539,9 +514,9 @@

      Search

      diff --git a/doc/html/modules/mod/compress.html b/doc/html/modules/mod/compress.html index 55b0f5e18..c5b4b2d30 100644 --- a/doc/html/modules/mod/compress.html +++ b/doc/html/modules/mod/compress.html @@ -1,28 +1,23 @@ - + - + - - + + + Compress Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + +
      - -
      -

      Partyline usage

      -
      -

      .files

      + +
      +

      Partyline usage

      +
      +

      .files

      -
      Moves you into the file transfer sub-system, if it has been enabled on this +

      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 -transfers to download and upload.

      -
      -
      -

      .cancel <file> [file] …

      +transfers to download and upload.

      +
      + +
      +

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

      +

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

      +
      + +
      +

      .cd <directory>

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

      .cp <source> <dst>

      +

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

      +
      + +
      +

      .cp <source> <dst>

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

      .desc <file> <description>

      +

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

      +
      + +
      +

      .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. @@ -198,20 +199,22 @@

      .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

      +

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

      +
      + +
      +

      .stats

      -
      Clears a users upload & download statistics.
      -
      -
      -

      .get <filename> [nickname]

      +

      Clears a users upload & download statistics.

      +
      + +
      +

      .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 @@ -226,15 +229,16 @@

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

      +

      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>

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

      .ln <bot:filepath> <localfile> -

      .ls [filemask]

      +

      +
      +

      .ls [filemask]

      -
      Displays the files in the current directory. Subdirectories +

      Displays the files in the current directory. Subdirectories are shown with “<DIR>” next to them, and other files will display their size (typically in kilobytes), who uploaded them (and when), and how many times each file has been downloaded. If a description of the file exists, it is displayed below the filename. You can -restrict the file listing by specifying a mask, just like in unix.

      -
      -
      -

      .mkdir <dir> [flags [channel]]

      +restrict the file listing by specifying a mask, just like in unix.

      +
      + +
      +

      .mkdir <dir> [flags [channel]]

      -
      Creates a subdirectory from this one, with the given name. If +

      Creates a subdirectory from this one, with the given name. If flags are specified, then those flags are required to enter or even see the directory. You can even specify a channel that the flags are matched against. You can use the %b’mkdir’%b command again -to alter or remove those flags.

      - -
      -

      .mv <source> <dest>

      +to alter or remove those flags.

      +
      +
      +
      +

      .mv <source> <dest>

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

      .pending

      +

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

      +
      +
      +
      +

      .pending

      -
      Gives you a listing of every file you’ve requested which is +

      Gives you a listing of every file you’ve requested which is still waiting, queued, or in the process of transferring. It shows you the nickname on IRC that the file is being sent to, and, if the transfer is in progress, tells you how far -along the transfer is.

      - -
      -

      .pwd

      +along the transfer is.

      +
      +
      +
      +

      .pwd

      -
      Tells you what your current directory is.
      - -
      -

      .quit

      +

      Tells you what your current directory is.

      +
      +
      +
      +

      .quit

      -
      Exits the file system.
      - -
      -

      rm <file> [files] …

      +

      Exits the file system.

      +
      +
      +
      +

      rm <file> [files] …

      -
      Erase a file for good.
      - -
      -

      .rmdir <dir>

      +

      Erase a file for good.

      +
      +
      +
      +

      .rmdir <dir>

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

      .share <file> [files] …

      +

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

      +
      +
      +
      +

      .share <file> [files] …

      -
      Marks a file as shared. This means that other bots can get +

      Marks a file as shared. This means that other bots can get the file remotely for users on their file systems. By default, -files are marked as unshared.

      - -
      -

      .optimize

      +files are marked as unshared.

      +
      +
      +
      +

      .optimize

      -
      Cleans up the current directory’s database. If you have a large +

      Cleans up the current directory’s database. If you have a large directory with many files you may want to use this command if you experience slow-downs/delays over time. Normally, the db -should clean up itself though.

      - -
      -

      .unhide

      +should clean up itself though.

      +
      +
      +
      +

      .unhide

      -
      Makes a file be not hidden any more.
      - -
      -

      .unshare <file> [file] …

      +

      Makes a file be not hidden any more.

      +
      +
      +
      +

      .unshare <file> [file] …

      -
      Removes the shared tag from a file.
      - -
      -

      .filesys module

      +

      Removes the shared tag from a file.

      +
      +
      +
      +

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

      The following commands are provided by the filesys module:

      -
      -
      For filesystem users:
      -
      files
      +
      +
      For filesystem users:

      files

      +
      -

      Copyright (C) 2000 - 2022 Eggheads Development Team

      - - - +

      Copyright (C) 2000 - 2023 Eggheads Development Team

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

      .filesys module
      diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 0fb9cf6a6..59c0266a9 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -1,28 +1,23 @@ - + - + - - + + + Ident Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + + diff --git a/doc/html/modules/twitch.html b/doc/html/modules/twitch.html index f8dfb3c13..bc21cddcf 100644 --- a/doc/html/modules/twitch.html +++ b/doc/html/modules/twitch.html @@ -163,7 +163,7 @@

      Partyline commandsSearch

      loadmodule uptime
       
      -

      Copyright (C) 2001 - 2022 Eggheads Development Team

      +

      Copyright (C) 2001 - 2023 Eggheads Development Team

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

      Search

      loadmodule woobie
       
      -

      Copyright (C) 2000 - 2022 Eggheads Development Team

      +

      Copyright (C) 2000 - 2023 Eggheads Development Team

      diff --git a/doc/html/modules/writing.html b/doc/html/modules/writing.html index 4cd607b43..8eb8cb6ad 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -1,34 +1,29 @@ - + - + - - - Writing an Eggdrop Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + How to Write an Eggdrop Module — Eggdrop 1.9.4 documentation + + + + + - +
      @@ -417,7 +413,7 @@

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

      What to do with a module?

      diff --git a/doc/html/objects.inv b/doc/html/objects.inv index 3eeec3c4f2f64ba7cdec65c523bdfc5395e4a612..7703dd2ccaddb86169d3a44b8031aed2182828a4 100644 GIT binary patch delta 1288 zcmV+j1^4==3iAq(e1A=E+c*%t`&ST1kM$bu0()2#1@ego+Y~{aqK9Hp&=hS8kx7B1 z;`rb1@SBuI&R!C0-n=K08a@u`Mh<30?O&oz^LHZ|S$-fihyU1{Lq{%M#_ev`DA_MO z-0>alrYslstShNnu_G~Y*lrh8Ye=@Fj&68oX$RR19oH-PzkhPDBVW8DmoE3g!HZ2N zkK0!7=eaQ>(yt;TD6l;hf_HjeA!bB{>&S=-^3W@;&nbkAq!1ZNL1@|Wa{?|Q^L>7# z8`huU0-A_V*N>6ah%+MwFmi6bts`aI0)9F}3ki{W7xDvr$3-g|{#x^6)ECFS{kdox zF3kLE92{SA?|*W`E3$s5zCt?G>3c#2kv$hg%Rw{je!qWYRK{ zuvw`ydlSI)C14@LcQ{Z3+r}7G69)~tE5o`aY>5LEO@AttO!x%btLgY>@@d=Ao&HRI zg$?-c0^WxdP=8uRz%Py;Lnx&<)>g1?Xn0dD?iefSnk2@tHT$#}nKP=i3aBbB4`?eD zOth7vkTF~d8vJJ>6~J2V3SI$X0b5L*5|gTJv^G)9F6T5VJDr#*W}9J- zrP5v}=6{O#=)6$2*|EuvEp=8S+HGaFBX6A}N82q;7xC9QdTGC7^PTwToJcm;+FD1O zewH5mpmKu(7t-+A2{_Qxzqvd_px-<<+mCY!9`zEBSO47HeZ(|0xAu=KSj_X+HVb8| z7p~^{7L5un6VupJHCu-c3<@p}5ip7hy`3LM#DBfaQ_RMcz~9*HhWBVt@tKIm(3|!! zJ0Fk6lgniy8b>KN?W~4Jy~aYlbp3Gi~`i#?@DmLnYeJqxt!yoC6FH-5FV@$;lBP`3m zD1Z4GUMhOWEXzKZI!;Z+Zkc7dS0#>et0D*bxXjI9;IaXSBv_-;Ml;p+mGPkop~ylx z6&12}@I=+{UY`@ScsiR7@bT_!n5=EQ5c3nmg*-MI7`dXlW#jtIB+bpx<9ZH?#bKP> zk3RJ{InQ+Zj7mg9dm`w@^^H$o*PzM<7=P!9NRef;(coV*TaEpemDv;qgK`Ut0d8$F zzU!on$w8RvOVvndjr8gl!}553V* zKpMdfBH`lkmh5uuhVWI`kgu(<0}3Kc)(1$A*4^T@%?lqn4q(fv85Bom5s_NsE`LM= zz3pHAno?~v9Q}_LANpP@6Df+l{E2XEIQ0uQqhj?`nG@6$GSLKuqiN5<-ymdHi6{E# zU@OAGP3_O}t`jnxRkzTuBkY95vS;el+opc?h3b9&K;<=ODl@qRrNw??-Y6^*rTD8^ z>S2S(1SG5iJlQ6YtcQ&@E$mbnR(}%duwldo+-}->@r`QPGe&XouvwZHDj3|6p4vXW z$8Fr@8`GaAjaI>Le{3-vf`6Qhl^shU4sc2#Lvi8IoVX0T*Y51yb8&3DhEdh%|9g#n ya1{ra888pHpMgSdYEa)Q+8UtOjZNrUeisMBM5F9%F2chy5Z-8X{sT1dCjoH?WO&d3 delta 1211 zcmV;s1VsDu3a1K?e1F@H+cpq=_g4r=ALANLfj$&LfW4xNW`jlSAP+?m&=hSGE0Y3A z+3UaW@G4RoI(^y8oH<7%HFG#3TRE5&u|FGa+CN)Ko8@l}8NEgM^XK6>-4jt1g_RWdB_7 zmI+gTjDzDto_}0!c*Lk5sxOlcb^5*`qLDoljh2I=taPl|{nBD{&WOxrpVxVn|Q6+KEpt~}(TS7}5iGOHQsf>h=&|YoFJ~bbA9og$o z%|D?5|6RcIkOJy2%Lw?x@oNaB6xYfH?S_`M`Qc8noUWV1ICFDIhcR*{l~w>n#f=Nv zNd+6_QY>cnhDnv)S2`c&aW##?17{A1d0kDZ@WPoBVxCu3$~|%Bh=}>sg+_0jI^)y_ zs~XWG3x9{47-Eeay)t)7#1w1v+%u<+IWxVQ$mocrA5J>8N)Jt3v~Y$CX;^gw4)pXd zE)Nmtx3BH)LruY>UgG8U@B7COn1*K7vvCEBdH&jFp=@5 zxI9F_C?fQ(zKn=_nN7^bl)#i|wc$M)RD33)F@N-iAFKQEXuNJ*CZchca?7h49`zdE zeda{tthkw6c@rqGLmu4SrK>K++C=ZCu{zezn};`c?2V2B(gUm`OJk~P!OTAH0v>1PG@&EFTCWqfE^=dPz>2cL`sdv5Dj$RpZ=Ir zZ8Ti7FBTvAUMdqQik^N)I5wQ_W}8v4dZNq)Y6{tCg2FX$U|>fOvZurneR7Fp;eT)) z+duP99A{_q9c$6nisEJ!}z~ zfP_N*@DZ`$eR_^-+~rTU zKTn#Rf^UE9FdTxvoDs{XgFqbMQZzx9;=*ANa2dAO9_`23;>^3264mPe` + - + - - + + Search — Eggdrop 1.9.4 documentation - - + + - - - - - - + + + + + - - - +
      @@ -260,9 +254,9 @@

      Writing an Eggdrop Script

      @@ -270,4 +264,4 @@

      Writing an Eggdrop Script + - + - - + + + Common First Steps — Eggdrop 1.9.4 documentation - - - - - - - + + + + + @@ -309,9 +303,9 @@

      Setting up SASL authentication
      diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html index b750801ea..53d400935 100644 --- a/doc/html/tutorials/module.html +++ b/doc/html/tutorials/module.html @@ -1,28 +1,23 @@ - + - + - - - Writing an Eggdrop Module — Eggdrop 1.9.4 documentation - - - - - - - + + + + Writing a Basic Eggdrop Module — Eggdrop 1.9.4 documentation + + + + + -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -534,7 +534,7 @@

      Default Channel Values diff --git a/doc/html/modules/mod/compress.html b/doc/html/modules/mod/compress.html index 88924232b..5f3e14696 100644 --- a/doc/html/modules/mod/compress.html +++ b/doc/html/modules/mod/compress.html @@ -141,7 +141,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -170,7 +170,7 @@

      Search

      diff --git a/doc/html/modules/mod/console.html b/doc/html/modules/mod/console.html index f9d6a99ce..6de9fce47 100644 --- a/doc/html/modules/mod/console.html +++ b/doc/html/modules/mod/console.html @@ -143,7 +143,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -172,7 +172,7 @@

      Search

      diff --git a/doc/html/modules/mod/ctcp.html b/doc/html/modules/mod/ctcp.html index 49be32ecb..915b4acbe 100644 --- a/doc/html/modules/mod/ctcp.html +++ b/doc/html/modules/mod/ctcp.html @@ -155,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

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

      Search

      diff --git a/doc/html/modules/mod/dns.html b/doc/html/modules/mod/dns.html index 17d42f77b..cfffaf7a3 100644 --- a/doc/html/modules/mod/dns.html +++ b/doc/html/modules/mod/dns.html @@ -156,7 +156,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -185,7 +185,7 @@

      Search

      diff --git a/doc/html/modules/mod/filesys.html b/doc/html/modules/mod/filesys.html index 397a41817..aeabce403 100644 --- a/doc/html/modules/mod/filesys.html +++ b/doc/html/modules/mod/filesys.html @@ -351,7 +351,7 @@

      .filesys module diff --git a/doc/html/modules/mod/ident.html b/doc/html/modules/mod/ident.html index 80ee7add4..249d7ecb5 100644 --- a/doc/html/modules/mod/ident.html +++ b/doc/html/modules/mod/ident.html @@ -194,7 +194,7 @@

      Search

      -

      Copyright (C) 2019 - 2023 Eggheads Development Team

      +

      Copyright (C) 2019 - 2024 Eggheads Development Team

      @@ -223,7 +223,7 @@

      Search

      diff --git a/doc/html/modules/mod/irc.html b/doc/html/modules/mod/irc.html index 88cf758c3..3fa36c056 100644 --- a/doc/html/modules/mod/irc.html +++ b/doc/html/modules/mod/irc.html @@ -264,7 +264,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -293,7 +293,7 @@

      Search

      diff --git a/doc/html/modules/mod/notes.html b/doc/html/modules/mod/notes.html index efe43cd39..bbdea5dbe 100644 --- a/doc/html/modules/mod/notes.html +++ b/doc/html/modules/mod/notes.html @@ -151,7 +151,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

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

      Search

      diff --git a/doc/html/modules/mod/pbkdf2.html b/doc/html/modules/mod/pbkdf2.html index 4e7b21bb7..7f6f48ac4 100644 --- a/doc/html/modules/mod/pbkdf2.html +++ b/doc/html/modules/mod/pbkdf2.html @@ -149,7 +149,7 @@

      Search

      This module requires: none

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -179,7 +179,7 @@

      Search

      diff --git a/doc/html/modules/mod/python.html b/doc/html/modules/mod/python.html index 7ed056faa..66dbab2ea 100644 --- a/doc/html/modules/mod/python.html +++ b/doc/html/modules/mod/python.html @@ -231,7 +231,7 @@

      Code Section

      Writing a module for use with Eggdrop

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

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -261,7 +261,7 @@

      Writing a module for use with Eggdrop diff --git a/doc/html/modules/mod/seen.html b/doc/html/modules/mod/seen.html index b2ccae2aa..762b215de 100644 --- a/doc/html/modules/mod/seen.html +++ b/doc/html/modules/mod/seen.html @@ -130,7 +130,7 @@

      Search

      loadmodule seen
       
      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

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

      Search

      diff --git a/doc/html/modules/mod/server.html b/doc/html/modules/mod/server.html index e42d70e5c..32d3ae644 100644 --- a/doc/html/modules/mod/server.html +++ b/doc/html/modules/mod/server.html @@ -338,7 +338,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -368,7 +368,7 @@

      Search

      diff --git a/doc/html/modules/mod/share.html b/doc/html/modules/mod/share.html index 518dad3df..33f66f6ad 100644 --- a/doc/html/modules/mod/share.html +++ b/doc/html/modules/mod/share.html @@ -160,7 +160,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -189,7 +189,7 @@

      Search

      diff --git a/doc/html/modules/mod/transfer.html b/doc/html/modules/mod/transfer.html index f20020dd4..eef7fe318 100644 --- a/doc/html/modules/mod/transfer.html +++ b/doc/html/modules/mod/transfer.html @@ -149,7 +149,7 @@

      Search

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -178,7 +178,7 @@

      Search

      diff --git a/doc/html/modules/mod/twitch.html b/doc/html/modules/mod/twitch.html index 216560543..ee2929846 100644 --- a/doc/html/modules/mod/twitch.html +++ b/doc/html/modules/mod/twitch.html @@ -162,7 +162,7 @@

      Partyline commands diff --git a/doc/html/modules/mod/uptime.html b/doc/html/modules/mod/uptime.html index b93153160..c84f8e9ef 100644 --- a/doc/html/modules/mod/uptime.html +++ b/doc/html/modules/mod/uptime.html @@ -136,7 +136,7 @@

      Search

      loadmodule uptime
       
      -

      Copyright (C) 2001 - 2023 Eggheads Development Team

      +

      Copyright (C) 2001 - 2024 Eggheads Development Team

      @@ -165,7 +165,7 @@

      Search

      diff --git a/doc/html/modules/mod/woobie.html b/doc/html/modules/mod/woobie.html index 45607c452..4c175976a 100644 --- a/doc/html/modules/mod/woobie.html +++ b/doc/html/modules/mod/woobie.html @@ -129,7 +129,7 @@

      Search

      loadmodule woobie
       
      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -158,7 +158,7 @@

      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 61a994db3..66b823642 100644 --- a/doc/html/modules/writing.html +++ b/doc/html/modules/writing.html @@ -423,7 +423,7 @@

      What to do with a module? diff --git a/doc/html/search.html b/doc/html/search.html index 537f62159..423788fbf 100644 --- a/doc/html/search.html +++ b/doc/html/search.html @@ -147,7 +147,7 @@

      Search

      diff --git a/doc/html/tutorials/firstscript.html b/doc/html/tutorials/firstscript.html index cb437b682..988ef562e 100644 --- a/doc/html/tutorials/firstscript.html +++ b/doc/html/tutorials/firstscript.html @@ -225,7 +225,7 @@

      Writing an Eggdrop Script diff --git a/doc/html/tutorials/firststeps.html b/doc/html/tutorials/firststeps.html index 246aa0ef3..958dd374f 100644 --- a/doc/html/tutorials/firststeps.html +++ b/doc/html/tutorials/firststeps.html @@ -303,7 +303,7 @@

      Setting up SASL authentication diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html index 2c534118f..097ce753d 100644 --- a/doc/html/tutorials/module.html +++ b/doc/html/tutorials/module.html @@ -356,7 +356,7 @@

      Exporting the Bind diff --git a/doc/html/tutorials/setup.html b/doc/html/tutorials/setup.html index 1b3f9e7ed..a2107bad6 100644 --- a/doc/html/tutorials/setup.html +++ b/doc/html/tutorials/setup.html @@ -290,7 +290,7 @@

      No show?
      diff --git a/doc/html/tutorials/tlssetup.html b/doc/html/tutorials/tlssetup.html index b2182268d..b36d8a40c 100644 --- a/doc/html/tutorials/tlssetup.html +++ b/doc/html/tutorials/tlssetup.html @@ -195,7 +195,7 @@

      Additional Information diff --git a/doc/html/using/accounts.html b/doc/html/using/accounts.html index 7b989047a..fdb89efa9 100644 --- a/doc/html/using/accounts.html +++ b/doc/html/using/accounts.html @@ -204,7 +204,7 @@

      Using Accounts with Tcl Scripts diff --git a/doc/html/using/autoscripts.html b/doc/html/using/autoscripts.html index 0d6b6ce61..fc9c81e2e 100644 --- a/doc/html/using/autoscripts.html +++ b/doc/html/using/autoscripts.html @@ -329,7 +329,7 @@

      egg_all
      diff --git a/doc/html/using/bans.html b/doc/html/using/bans.html index e2468189e..2257abc79 100644 --- a/doc/html/using/bans.html +++ b/doc/html/using/bans.html @@ -169,7 +169,7 @@

      Bans, Invites, and Exempts diff --git a/doc/html/using/botnet.html b/doc/html/using/botnet.html index 4e1c584a5..6bc802079 100644 --- a/doc/html/using/botnet.html +++ b/doc/html/using/botnet.html @@ -400,7 +400,7 @@

      Making bots share user records

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

      Using certificates to authenticate Eggdrops diff --git a/doc/html/using/core.html b/doc/html/using/core.html index 63574f00f..21302afdc 100644 --- a/doc/html/using/core.html +++ b/doc/html/using/core.html @@ -732,7 +732,7 @@

      Scripts

      -

      Copyright (C) 2000 - 2023 Eggheads Development Team

      +

      Copyright (C) 2000 - 2024 Eggheads Development Team

      @@ -762,7 +762,7 @@

      Scripts
      diff --git a/doc/html/using/features.html b/doc/html/using/features.html index c5d468e49..00387c256 100644 --- a/doc/html/using/features.html +++ b/doc/html/using/features.html @@ -139,7 +139,7 @@

      Eggdrop Features diff --git a/doc/html/using/ipv6.html b/doc/html/using/ipv6.html index ca3aec141..396d93b9d 100644 --- a/doc/html/using/ipv6.html +++ b/doc/html/using/ipv6.html @@ -171,7 +171,7 @@

      Settings

      nat-ip works with IPv4 as it used to. It has no meaning for IPv6 and is not queried for IPv6 connections.

      -

      Copyright (C) 2010 - 2023 Eggheads Development Team

      +

      Copyright (C) 2010 - 2024 Eggheads Development Team

      @@ -201,7 +201,7 @@

      Settings
      diff --git a/doc/html/using/ircv3.html b/doc/html/using/ircv3.html index 431a7fd37..1257f7b04 100644 --- a/doc/html/using/ircv3.html +++ b/doc/html/using/ircv3.html @@ -137,7 +137,7 @@

      Supported CAP capabilities diff --git a/doc/html/using/partyline.html b/doc/html/using/partyline.html index 2d7e7ad0c..3f03d779b 100644 --- a/doc/html/using/partyline.html +++ b/doc/html/using/partyline.html @@ -126,7 +126,7 @@

      The Party Line diff --git a/doc/html/using/patch.html b/doc/html/using/patch.html index a98538093..f83ac29d4 100644 --- a/doc/html/using/patch.html +++ b/doc/html/using/patch.html @@ -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 diff --git a/doc/html/using/tcl-commands.html b/doc/html/using/tcl-commands.html index 9af070bc5..50cb59f37 100644 --- a/doc/html/using/tcl-commands.html +++ b/doc/html/using/tcl-commands.html @@ -3566,7 +3566,7 @@

      TCP Connections diff --git a/doc/html/using/text-sub.html b/doc/html/using/text-sub.html index 6e2441d44..7bac99298 100644 --- a/doc/html/using/text-sub.html +++ b/doc/html/using/text-sub.html @@ -190,7 +190,7 @@

      Textfile Substitutions
      -

      Copyright (C) 1999 - 2023 Eggheads Development Team

      +

      Copyright (C) 1999 - 2024 Eggheads Development Team

      @@ -220,7 +220,7 @@

      Textfile Substitutions diff --git a/doc/html/using/tls.html b/doc/html/using/tls.html index 86cb03fec..c326c0dd1 100644 --- a/doc/html/using/tls.html +++ b/doc/html/using/tls.html @@ -294,7 +294,7 @@

      SSL/TLS Settings diff --git a/doc/html/using/tricks.html b/doc/html/using/tricks.html index 599269979..409db4a2a 100644 --- a/doc/html/using/tricks.html +++ b/doc/html/using/tricks.html @@ -142,7 +142,7 @@

      Variables in Your Configset chanfile "$myvar.chan"

      -

      Copyright (C) 1999 - 2023 Eggheads Development Team

      +

      Copyright (C) 1999 - 2024 Eggheads Development Team

      @@ -172,7 +172,7 @@

      Variables in Your Config diff --git a/doc/html/using/twitch-tcl-commands.html b/doc/html/using/twitch-tcl-commands.html index 94789d19f..769757da4 100644 --- a/doc/html/using/twitch-tcl-commands.html +++ b/doc/html/using/twitch-tcl-commands.html @@ -303,7 +303,7 @@

      Bind Types diff --git a/doc/html/using/twitchinfo.html b/doc/html/using/twitchinfo.html index b1254710c..9a5eb698e 100644 --- a/doc/html/using/twitchinfo.html +++ b/doc/html/using/twitchinfo.html @@ -185,7 +185,7 @@

      Twitch IRC limitations diff --git a/doc/html/using/users.html b/doc/html/using/users.html index a7786e0e2..fa526e3df 100644 --- a/doc/html/using/users.html +++ b/doc/html/using/users.html @@ -227,7 +227,7 @@

      Users and Flags diff --git a/doc/man1/eggdrop.1 b/doc/man1/eggdrop.1 index a9fe4406f..155680cef 100644 --- a/doc/man1/eggdrop.1 +++ b/doc/man1/eggdrop.1 @@ -1,6 +1,6 @@ .\" To view: groff -man -Tascii eggdrop.1 .\" -.\" Copyright (C) 1999 - 2023 Eggheads Development Team +.\" Copyright (C) 1999 - 2024 Eggheads Development Team .\" .\" This file is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License as published by @@ -143,7 +143,7 @@ Bugs can be reported directly via GitHub at .SH COPYRIGHT Copyright (C) 1997 Robey Pointer .br -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team .PP This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software diff --git a/doc/modules/mod.assoc b/doc/modules/mod.assoc index c20635102..4527a9e31 100644 --- a/doc/modules/mod.assoc +++ b/doc/modules/mod.assoc @@ -11,4 +11,4 @@ module: loadmodule assoc -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.blowfish b/doc/modules/mod.blowfish index 1f3b454de..1139d4307 100644 --- a/doc/modules/mod.blowfish +++ b/doc/modules/mod.blowfish @@ -14,4 +14,4 @@ Blowfish Module loadmodule blowfish - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.channels b/doc/modules/mod.channels index c1e33ce98..7bab6eda8 100644 --- a/doc/modules/mod.channels +++ b/doc/modules/mod.channels @@ -477,4 +477,4 @@ DEFAULT CHANNEL VALUES } - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.compress b/doc/modules/mod.compress index 8b9eb24b3..80843b3c5 100644 --- a/doc/modules/mod.compress +++ b/doc/modules/mod.compress @@ -25,4 +25,4 @@ There are also some variables you can set in your config file: This is the default compression level used. These levels are the same as those used by GNU gzip. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.console b/doc/modules/mod.console index 9e764f82c..7c7b84c3a 100644 --- a/doc/modules/mod.console +++ b/doc/modules/mod.console @@ -29,4 +29,4 @@ There are also some variables you can set in your config file: Enable this setting if a user's global info line should be displayed when they join a botnet channel. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.ctcp b/doc/modules/mod.ctcp index 4fa0bee9a..3ecd15fe8 100644 --- a/doc/modules/mod.ctcp +++ b/doc/modules/mod.ctcp @@ -33,4 +33,4 @@ 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/modules/mod.dns b/doc/modules/mod.dns index 38a27f39c..ea7300a58 100644 --- a/doc/modules/mod.dns +++ b/doc/modules/mod.dns @@ -44,4 +44,4 @@ There are also some variables you can set in your config file: Specify how long should the DNS module wait for a reply before resending 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/modules/mod.filesys b/doc/modules/mod.filesys index b8cd261e8..1ff14418b 100644 --- a/doc/modules/mod.filesys +++ b/doc/modules/mod.filesys @@ -197,4 +197,4 @@ rm [files] ... files -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.ident b/doc/modules/mod.ident index fac1d8fc4..fef76623b 100644 --- a/doc/modules/mod.ident +++ b/doc/modules/mod.ident @@ -83,4 +83,4 @@ There are also some variables you can set in your config file: beginning of this document 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/modules/mod.irc b/doc/modules/mod.irc index ca39625b6..bb28fa17e 100644 --- a/doc/modules/mod.irc +++ b/doc/modules/mod.irc @@ -169,4 +169,4 @@ Use the following settings only if you set 'net-type' to IRCnet! If your network doesn't use rfc 1459 compliant string matching routines, set this to 0. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.notes b/doc/modules/mod.notes index bcf5b8baa..5433eca70 100644 --- a/doc/modules/mod.notes +++ b/doc/modules/mod.notes @@ -44,4 +44,4 @@ There are also some variables you can set in your config file: Set this to 1 if you want the bot to let people know on join if they have any notes. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.pbkdf2 b/doc/modules/mod.pbkdf2 index 319ec4c35..4a508edb9 100644 --- a/doc/modules/mod.pbkdf2 +++ b/doc/modules/mod.pbkdf2 @@ -38,4 +38,4 @@ There are also some variables you can set in your config file: This module requires: none - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.seen b/doc/modules/mod.seen index af637b8ec..0d010be8d 100644 --- a/doc/modules/mod.seen +++ b/doc/modules/mod.seen @@ -15,4 +15,4 @@ module: loadmodule seen -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.server b/doc/modules/mod.server index 2b5c2d123..36cf8f9db 100644 --- a/doc/modules/mod.server +++ b/doc/modules/mod.server @@ -265,4 +265,4 @@ There are additional settings for 'net-type' Efnet. supported by your network. The default setting is 9. The maximum supported length by Eggdrop is 32. - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.share b/doc/modules/mod.share index 30105db44..157868a7f 100644 --- a/doc/modules/mod.share +++ b/doc/modules/mod.share @@ -52,4 +52,4 @@ There are also some variables you can set in your config file: shared, only ports and address are added to sharing procedure. This only works with hubs that are v1.5.1 or higher. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.transfer b/doc/modules/mod.transfer index b2ad7edd9..e9c35fd94 100644 --- a/doc/modules/mod.transfer +++ b/doc/modules/mod.transfer @@ -37,4 +37,4 @@ There are also some variables you can set in your config file: to keep the bots linked if the userfile transfer fails and retry every minute (both bots must be v1.9.0 or higher). -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.twitch b/doc/modules/mod.twitch index 16bd125c5..cb3b20647 100644 --- a/doc/modules/mod.twitch +++ b/doc/modules/mod.twitch @@ -60,4 +60,4 @@ 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 diff --git a/doc/modules/mod.uptime b/doc/modules/mod.uptime index 483175e7a..c6acd360c 100644 --- a/doc/modules/mod.uptime +++ b/doc/modules/mod.uptime @@ -20,4 +20,4 @@ module: loadmodule uptime -Copyright (C) 2001 - 2023 Eggheads Development Team +Copyright (C) 2001 - 2024 Eggheads Development Team diff --git a/doc/modules/mod.woobie b/doc/modules/mod.woobie index eef5d5157..28dd56f74 100644 --- a/doc/modules/mod.woobie +++ b/doc/modules/mod.woobie @@ -12,4 +12,4 @@ module: loadmodule woobie -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/CONTENTS b/doc/settings/CONTENTS index 75c7df16f..5301bf99c 100644 --- a/doc/settings/CONTENTS +++ b/doc/settings/CONTENTS @@ -57,4 +57,4 @@ Last revised: April 16, 2003 Documentation for the woobie module is provided in this file. ________________________________________________________________________ - Copyright (C) 2003 - 2023 Eggheads Development Team + Copyright (C) 2003 - 2024 Eggheads Development Team diff --git a/doc/settings/core.settings b/doc/settings/core.settings index 9e6d285d5..7424efa50 100644 --- a/doc/settings/core.settings +++ b/doc/settings/core.settings @@ -712,4 +712,4 @@ point. source scripts/alltools.tcl source scripts/action.fix.tcl -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.assoc b/doc/settings/mod.assoc index c20635102..4527a9e31 100644 --- a/doc/settings/mod.assoc +++ b/doc/settings/mod.assoc @@ -11,4 +11,4 @@ module: loadmodule assoc -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.blowfish b/doc/settings/mod.blowfish index 1f3b454de..1139d4307 100644 --- a/doc/settings/mod.blowfish +++ b/doc/settings/mod.blowfish @@ -14,4 +14,4 @@ Blowfish Module loadmodule blowfish - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.channels b/doc/settings/mod.channels index 00d7a5ad4..b235d4f46 100644 --- a/doc/settings/mod.channels +++ b/doc/settings/mod.channels @@ -485,4 +485,4 @@ There are also some variables you can set in your config file: } - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.compress b/doc/settings/mod.compress index 8b9eb24b3..80843b3c5 100644 --- a/doc/settings/mod.compress +++ b/doc/settings/mod.compress @@ -25,4 +25,4 @@ There are also some variables you can set in your config file: This is the default compression level used. These levels are the same as those used by GNU gzip. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.console b/doc/settings/mod.console index 9e764f82c..7c7b84c3a 100644 --- a/doc/settings/mod.console +++ b/doc/settings/mod.console @@ -29,4 +29,4 @@ There are also some variables you can set in your config file: Enable this setting if a user's global info line should be displayed when they join a botnet channel. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.ctcp b/doc/settings/mod.ctcp index 4fa0bee9a..3ecd15fe8 100644 --- a/doc/settings/mod.ctcp +++ b/doc/settings/mod.ctcp @@ -33,4 +33,4 @@ 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/settings/mod.dns b/doc/settings/mod.dns index 38a27f39c..ea7300a58 100644 --- a/doc/settings/mod.dns +++ b/doc/settings/mod.dns @@ -44,4 +44,4 @@ There are also some variables you can set in your config file: Specify how long should the DNS module wait for a reply before resending 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/settings/mod.filesys b/doc/settings/mod.filesys index b8cd261e8..1ff14418b 100644 --- a/doc/settings/mod.filesys +++ b/doc/settings/mod.filesys @@ -197,4 +197,4 @@ rm [files] ... files -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.ident b/doc/settings/mod.ident index fac1d8fc4..fef76623b 100644 --- a/doc/settings/mod.ident +++ b/doc/settings/mod.ident @@ -83,4 +83,4 @@ There are also some variables you can set in your config file: beginning of this document 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/settings/mod.irc b/doc/settings/mod.irc index ca39625b6..bb28fa17e 100644 --- a/doc/settings/mod.irc +++ b/doc/settings/mod.irc @@ -169,4 +169,4 @@ Use the following settings only if you set 'net-type' to IRCnet! If your network doesn't use rfc 1459 compliant string matching routines, set this to 0. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.notes b/doc/settings/mod.notes index bcf5b8baa..5433eca70 100644 --- a/doc/settings/mod.notes +++ b/doc/settings/mod.notes @@ -44,4 +44,4 @@ There are also some variables you can set in your config file: Set this to 1 if you want the bot to let people know on join if they have any notes. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.seen b/doc/settings/mod.seen index af637b8ec..0d010be8d 100644 --- a/doc/settings/mod.seen +++ b/doc/settings/mod.seen @@ -15,4 +15,4 @@ module: loadmodule seen -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.server b/doc/settings/mod.server index 9e4a07b2d..f87c8613f 100644 --- a/doc/settings/mod.server +++ b/doc/settings/mod.server @@ -265,4 +265,4 @@ There are additional settings for 'net-type' Efnet. supported by your network. The default setting is 9. The maximum supported length by Eggdrop is 32. - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.share b/doc/settings/mod.share index 30105db44..157868a7f 100644 --- a/doc/settings/mod.share +++ b/doc/settings/mod.share @@ -52,4 +52,4 @@ There are also some variables you can set in your config file: shared, only ports and address are added to sharing procedure. This only works with hubs that are v1.5.1 or higher. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.transfer b/doc/settings/mod.transfer index 14a5cf0b7..39963f6b7 100644 --- a/doc/settings/mod.transfer +++ b/doc/settings/mod.transfer @@ -45,4 +45,4 @@ There are also some variables you can set in your config file: to keep the bots linked if the userfile transfer fails and retry every minute (both bots must be v1.9.0 or higher). -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.uptime b/doc/settings/mod.uptime index 483175e7a..c6acd360c 100644 --- a/doc/settings/mod.uptime +++ b/doc/settings/mod.uptime @@ -20,4 +20,4 @@ module: loadmodule uptime -Copyright (C) 2001 - 2023 Eggheads Development Team +Copyright (C) 2001 - 2024 Eggheads Development Team diff --git a/doc/settings/mod.woobie b/doc/settings/mod.woobie index eef5d5157..28dd56f74 100644 --- a/doc/settings/mod.woobie +++ b/doc/settings/mod.woobie @@ -12,4 +12,4 @@ module: loadmodule woobie -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/about/about.rst b/doc/sphinx_source/about/about.rst index 601a6116b..3e516fa27 100644 --- a/doc/sphinx_source/about/about.rst +++ b/doc/sphinx_source/about/about.rst @@ -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/sphinx_source/conf.py b/doc/sphinx_source/conf.py index f5bbaa7f5..b59b22f93 100644 --- a/doc/sphinx_source/conf.py +++ b/doc/sphinx_source/conf.py @@ -44,7 +44,7 @@ # General information about the project. project = u'Eggdrop' -copyright = u'2023, Eggheads' +copyright = u'2024, Eggheads' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff --git a/doc/sphinx_source/install/install.rst b/doc/sphinx_source/install/install.rst index 94cdc0749..21ee258bf 100644 --- a/doc/sphinx_source/install/install.rst +++ b/doc/sphinx_source/install/install.rst @@ -143,4 +143,4 @@ the README file. If not, then READ IT!&@#%@! Have fun with Eggdrop! Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/install/readme.rst b/doc/sphinx_source/install/readme.rst index 80453b226..29cc7e8f3 100644 --- a/doc/sphinx_source/install/readme.rst +++ b/doc/sphinx_source/install/readme.rst @@ -191,4 +191,4 @@ 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 Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/index.rst b/doc/sphinx_source/modules/index.rst index a5a4a6523..fc0318e96 100644 --- a/doc/sphinx_source/modules/index.rst +++ b/doc/sphinx_source/modules/index.rst @@ -44,4 +44,4 @@ 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 diff --git a/doc/sphinx_source/modules/mod/assoc.rst b/doc/sphinx_source/modules/mod/assoc.rst index 60ccc09e5..0833a9150 100644 --- a/doc/sphinx_source/modules/mod/assoc.rst +++ b/doc/sphinx_source/modules/mod/assoc.rst @@ -15,4 +15,4 @@ module:: loadmodule assoc -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/blowfish.rst b/doc/sphinx_source/modules/mod/blowfish.rst index be67a622b..0d894ec77 100644 --- a/doc/sphinx_source/modules/mod/blowfish.rst +++ b/doc/sphinx_source/modules/mod/blowfish.rst @@ -18,4 +18,4 @@ Blowfish Module loadmodule blowfish - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/channels.rst b/doc/sphinx_source/modules/mod/channels.rst index b55e4d2e3..f47085664 100644 --- a/doc/sphinx_source/modules/mod/channels.rst +++ b/doc/sphinx_source/modules/mod/channels.rst @@ -410,4 +410,4 @@ Default Channel Values } - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/compress.rst b/doc/sphinx_source/modules/mod/compress.rst index 21e1de6c0..8d531dce9 100644 --- a/doc/sphinx_source/modules/mod/compress.rst +++ b/doc/sphinx_source/modules/mod/compress.rst @@ -28,4 +28,4 @@ There are also some variables you can set in your config file: as those used by GNU gzip. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/console.rst b/doc/sphinx_source/modules/mod/console.rst index cc51727ba..9bdd8edaa 100644 --- a/doc/sphinx_source/modules/mod/console.rst +++ b/doc/sphinx_source/modules/mod/console.rst @@ -33,4 +33,4 @@ There are also some variables you can set in your config file: when they join a botnet channel. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/ctcp.rst b/doc/sphinx_source/modules/mod/ctcp.rst index 98d5c5c9d..650050d87 100644 --- a/doc/sphinx_source/modules/mod/ctcp.rst +++ b/doc/sphinx_source/modules/mod/ctcp.rst @@ -37,4 +37,4 @@ 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/sphinx_source/modules/mod/dns.rst b/doc/sphinx_source/modules/mod/dns.rst index 93300a011..daa98cb8f 100644 --- a/doc/sphinx_source/modules/mod/dns.rst +++ b/doc/sphinx_source/modules/mod/dns.rst @@ -46,4 +46,4 @@ There are also some variables you can set in your config file: 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/sphinx_source/modules/mod/filesys.rst b/doc/sphinx_source/modules/mod/filesys.rst index e5afdb400..67ef08c7e 100644 --- a/doc/sphinx_source/modules/mod/filesys.rst +++ b/doc/sphinx_source/modules/mod/filesys.rst @@ -252,4 +252,4 @@ rm [files] ... -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/ident.rst b/doc/sphinx_source/modules/mod/ident.rst index 11247fdf0..f542da253 100644 --- a/doc/sphinx_source/modules/mod/ident.rst +++ b/doc/sphinx_source/modules/mod/ident.rst @@ -73,4 +73,4 @@ There are also some variables you can set in your config file: 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/sphinx_source/modules/mod/irc.rst b/doc/sphinx_source/modules/mod/irc.rst index f8a046d0a..5b1b8d2f3 100644 --- a/doc/sphinx_source/modules/mod/irc.rst +++ b/doc/sphinx_source/modules/mod/irc.rst @@ -151,4 +151,4 @@ Use the following settings only if you set 'net-type' to IRCnet! If your network doesn't use rfc 1459 compliant string matching routines, set this to 0. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/notes.rst b/doc/sphinx_source/modules/mod/notes.rst index 657253255..8190c9143 100644 --- a/doc/sphinx_source/modules/mod/notes.rst +++ b/doc/sphinx_source/modules/mod/notes.rst @@ -42,4 +42,4 @@ There are also some variables you can set in your config file: any notes. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/pbkdf2.rst b/doc/sphinx_source/modules/mod/pbkdf2.rst index 2b3a6c1b7..883db733b 100644 --- a/doc/sphinx_source/modules/mod/pbkdf2.rst +++ b/doc/sphinx_source/modules/mod/pbkdf2.rst @@ -35,4 +35,4 @@ There are also some variables you can set in your config file: This module requires: none - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/python.rst b/doc/sphinx_source/modules/mod/python.rst index cc82fa9d9..97500493c 100644 --- a/doc/sphinx_source/modules/mod/python.rst +++ b/doc/sphinx_source/modules/mod/python.rst @@ -151,4 +151,4 @@ Writing a module for use with Eggdrop This is how you import a module for use with an egg python script. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/seen.rst b/doc/sphinx_source/modules/mod/seen.rst index 05f17700c..0ddf12153 100644 --- a/doc/sphinx_source/modules/mod/seen.rst +++ b/doc/sphinx_source/modules/mod/seen.rst @@ -18,4 +18,4 @@ Put this line into your Eggdrop configuration file to load the seen module:: loadmodule seen -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/server.rst b/doc/sphinx_source/modules/mod/server.rst index 26eed0dac..6f4cbd926 100644 --- a/doc/sphinx_source/modules/mod/server.rst +++ b/doc/sphinx_source/modules/mod/server.rst @@ -237,5 +237,5 @@ There are additional settings for 'net-type' Efnet. your network. The default setting is 9. The maximum supported length by Eggdrop is 32. - Copyright (C) 2000 - 2023 Eggheads Development Team + Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/share.rst b/doc/sphinx_source/modules/mod/share.rst index f40b92874..3a1c3649b 100644 --- a/doc/sphinx_source/modules/mod/share.rst +++ b/doc/sphinx_source/modules/mod/share.rst @@ -50,4 +50,4 @@ There are also some variables you can set in your config file: address are added to sharing procedure. This only works with hubs that are v1.5.1 or higher. -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/transfer.rst b/doc/sphinx_source/modules/mod/transfer.rst index 1d804c229..8055298da 100644 --- a/doc/sphinx_source/modules/mod/transfer.rst +++ b/doc/sphinx_source/modules/mod/transfer.rst @@ -37,4 +37,4 @@ There are also some variables you can set in your config file: linked if the userfile transfer fails and retry every minute (both bots must be v1.9.0 or higher). -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/twitch.rst b/doc/sphinx_source/modules/mod/twitch.rst index a1c25aaed..533bd7246 100644 --- a/doc/sphinx_source/modules/mod/twitch.rst +++ b/doc/sphinx_source/modules/mod/twitch.rst @@ -55,5 +55,5 @@ This module adds the following commands to the partyline: * 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 diff --git a/doc/sphinx_source/modules/mod/uptime.rst b/doc/sphinx_source/modules/mod/uptime.rst index 7ad024f78..d88b9244d 100644 --- a/doc/sphinx_source/modules/mod/uptime.rst +++ b/doc/sphinx_source/modules/mod/uptime.rst @@ -24,4 +24,4 @@ module:: loadmodule uptime -Copyright (C) 2001 - 2023 Eggheads Development Team +Copyright (C) 2001 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/modules/mod/woobie.rst b/doc/sphinx_source/modules/mod/woobie.rst index 38b38b0dd..2516fc0b7 100644 --- a/doc/sphinx_source/modules/mod/woobie.rst +++ b/doc/sphinx_source/modules/mod/woobie.rst @@ -15,4 +15,4 @@ module:: loadmodule woobie -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/tutorials/firstscript.rst b/doc/sphinx_source/tutorials/firstscript.rst index ff35aa6e8..67a9dafaa 100644 --- a/doc/sphinx_source/tutorials/firstscript.rst +++ b/doc/sphinx_source/tutorials/firstscript.rst @@ -143,4 +143,4 @@ If you want to try these out, join #eggdrop on Libera and check your answers (an
      -Copyright (C) 2003 - 2023 Eggheads Development Team +Copyright (C) 2003 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/bans.rst b/doc/sphinx_source/using/bans.rst index 83431e390..6fcb4e5d2 100644 --- a/doc/sphinx_source/using/bans.rst +++ b/doc/sphinx_source/using/bans.rst @@ -73,4 +73,4 @@ Bans, Invites, and Exempts (defined in config file) or until the channel goes -i again, whichever happens last. - Copyright (C) 1999 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/botnet.rst b/doc/sphinx_source/using/botnet.rst index e58450369..53a11046e 100644 --- a/doc/sphinx_source/using/botnet.rst +++ b/doc/sphinx_source/using/botnet.rst @@ -322,4 +322,4 @@ Using certificates to authenticate Eggdrops ------------------------------------------- Eggdrops can use certificates to authenticate when linking to each other instead of a password. First, you must ensure you have set the appropriate certificates in the `ssl-privatekey` and `ssl-certificate` settings in the config file, and then enable the `ssl-cert-auth` setting. Next, add the certificate on the partyline by using `.fprint +` to add the fingerprint for the certificate currently in use, or `.fprint ` to manually add a fingerprint. Once the config file settings are set 0and fingerprints are added on the partyline, Eggdrops will attempt to use their certificates instead of passwords for authentication. -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/core.rst b/doc/sphinx_source/using/core.rst index 117cd935d..bf560b351 100644 --- a/doc/sphinx_source/using/core.rst +++ b/doc/sphinx_source/using/core.rst @@ -638,4 +638,4 @@ modules should be loaded and their variables should be set at this point. source scripts/alltools.tcl source scripts/action.fix.tcl -Copyright (C) 2000 - 2023 Eggheads Development Team +Copyright (C) 2000 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/features.rst b/doc/sphinx_source/using/features.rst index ebc511ad9..b28195c2b 100644 --- a/doc/sphinx_source/using/features.rst +++ b/doc/sphinx_source/using/features.rst @@ -52,4 +52,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/doc/sphinx_source/using/ipv6.rst b/doc/sphinx_source/using/ipv6.rst index 93d322f11..83891df2c 100644 --- a/doc/sphinx_source/using/ipv6.rst +++ b/doc/sphinx_source/using/ipv6.rst @@ -81,4 +81,4 @@ Other affected variables: nat-ip works with IPv4 as it used to. It has no meaning for IPv6 and is not queried for IPv6 connections. -Copyright (C) 2010 - 2023 Eggheads Development Team +Copyright (C) 2010 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/ircv3.rst b/doc/sphinx_source/using/ircv3.rst index 5f7b0e60b..c2fff5299 100644 --- a/doc/sphinx_source/using/ircv3.rst +++ b/doc/sphinx_source/using/ircv3.rst @@ -43,4 +43,4 @@ The following capabilities are supported by Eggdrop: * setname * +typing -Copyright (C) 2010 - 2023 Eggheads Development Team +Copyright (C) 2010 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/partyline.rst b/doc/sphinx_source/using/partyline.rst index 2bc477ac8..d0c7f80a6 100644 --- a/doc/sphinx_source/using/partyline.rst +++ b/doc/sphinx_source/using/partyline.rst @@ -36,4 +36,4 @@ prefixed with an apostrophe is sent to all users on the local bot only. You can change channels with the ".chat" command or even leave all channels with ".chat off". -Copyright (C) 2002 - 2023 Eggheads Development Team +Copyright (C) 2002 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/patch.rst b/doc/sphinx_source/using/patch.rst index 3a0f4c7ee..1dd4167e8 100644 --- a/doc/sphinx_source/using/patch.rst +++ b/doc/sphinx_source/using/patch.rst @@ -33,4 +33,4 @@ To create a patch via github: 7. Pour yourself a cold one and bask in the warm feeling of contributing to the open source community! Karma++! -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/pbkdf2info.rst b/doc/sphinx_source/using/pbkdf2info.rst index 3053e43dc..2888be9f0 100644 --- a/doc/sphinx_source/using/pbkdf2info.rst +++ b/doc/sphinx_source/using/pbkdf2info.rst @@ -90,4 +90,4 @@ The PBKDF2 module adds the 'encpass2' command to the Tcl library. This command t 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 diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst index 1f305c6a6..f18290c2b 100644 --- a/doc/sphinx_source/using/tcl-commands.rst +++ b/doc/sphinx_source/using/tcl-commands.rst @@ -3761,4 +3761,4 @@ are the four special characters: | | so a bind would have to use "\\*" or {\*} for a mask argument | +-----+--------------------------------------------------------------------------+ - Copyright (C) 1999 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/text-sub.rst b/doc/sphinx_source/using/text-sub.rst index dc81af3ee..98ab9042a 100644 --- a/doc/sphinx_source/using/text-sub.rst +++ b/doc/sphinx_source/using/text-sub.rst @@ -76,4 +76,4 @@ Other variables: | %{center} | center the following text (70 columns) | +-------------+---------------------------------------------------------+ - Copyright (C) 1999 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/tls.rst b/doc/sphinx_source/using/tls.rst index aff81637e..6d73e79bf 100644 --- a/doc/sphinx_source/using/tls.rst +++ b/doc/sphinx_source/using/tls.rst @@ -201,4 +201,4 @@ verification and authorization. Higher values enable specific exceptions like allowing self-signed or expired certificates. Details are documented in eggdrop.conf. -Copyright (C) 2010 - 2023 Eggheads Development Team +Copyright (C) 2010 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/tricks.rst b/doc/sphinx_source/using/tricks.rst index cafbaafbf..8d6ea6722 100644 --- a/doc/sphinx_source/using/tricks.rst +++ b/doc/sphinx_source/using/tricks.rst @@ -52,4 +52,4 @@ You can use variables in your config file, since it's really just a normal Tcl f set chanfile "$myvar.chan" -Copyright (C) 1999 - 2023 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/doc/sphinx_source/using/users.rst b/doc/sphinx_source/using/users.rst index ef462644e..e6adafa7b 100644 --- a/doc/sphinx_source/using/users.rst +++ b/doc/sphinx_source/using/users.rst @@ -79,4 +79,4 @@ Eggdrop does not have access levels like some bots. There are no meaningless num There are also 26 global user-defined flags and 26 channel user-defined flags (Capital letters A through Z). These are used by scripts, and their uses vary depending on the script that uses them. -Copyright (C) 2002 - 2023 Eggheads Development Team +Copyright (C) 2002 - 2024 Eggheads Development Team diff --git a/doc/tcl-commands.doc b/doc/tcl-commands.doc index 84136fd4b..bcbf842ee 100644 --- a/doc/tcl-commands.doc +++ b/doc/tcl-commands.doc @@ -4170,4 +4170,4 @@ the four special characters: well, so a bind would have to use "\*" or {*} for a mask argument ----- ----------------------------------------------------------------- - Copyright (C) 1999 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team diff --git a/logs/CONTENTS b/logs/CONTENTS index f09e3f3d1..57d32b6c6 100644 --- a/logs/CONTENTS +++ b/logs/CONTENTS @@ -8,4 +8,4 @@ Last revised: August 08, 2004 This is a good place to put your logfiles. _____________________________________________________________________ - Copyright (C) 2001 - 2023 Eggheads Development Team + Copyright (C) 2001 - 2024 Eggheads Development Team diff --git a/m4/python.m4 b/m4/python.m4 index 84dc338ba..5409d7b6b 100644 --- a/m4/python.m4 +++ b/m4/python.m4 @@ -1,6 +1,6 @@ dnl python.m4 -- Autoconf macros to compile python.mod dnl -dnl Copyright (c) 2022 - 2022 Eggheads Development Team +dnl Copyright (c) 2022 - 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 diff --git a/m4/tcl.m4 b/m4/tcl.m4 index d4a95c5e8..93320acf8 100644 --- a/m4/tcl.m4 +++ b/m4/tcl.m4 @@ -5,7 +5,7 @@ # # Copyright (c) 1999-2000 Ajuba Solutions. # Copyright (c) 2002-2005 ActiveState Corporation. -# Copyright (c) 2017 - 2023 Eggheads Development Team +# Copyright (c) 2017 - 2024 Eggheads Development Team # # Original Tcl/TEA license.terms information for this file: # This software is copyrighted by the Regents of the University of diff --git a/misc/genchanges b/misc/genchanges index 9e7432292..31fa8dc5e 100755 --- a/misc/genchanges +++ b/misc/genchanges @@ -2,7 +2,7 @@ # # genchanges - Generate changelog (doc/Changes and ChangeLog) files. # -# Copyright (C) 2017 - 2023 Eggheads Development Team +# Copyright (C) 2017 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/generatedocs b/misc/generatedocs index 0267d360b..b00e847ac 100755 --- a/misc/generatedocs +++ b/misc/generatedocs @@ -4,7 +4,7 @@ # reStructuredText format files. -Geo # # -# Copyright (C) 2004 - 2023 Eggheads Development Team +# Copyright (C) 2004 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/getcommit b/misc/getcommit index 433704ec3..a310aa8df 100755 --- a/misc/getcommit +++ b/misc/getcommit @@ -2,7 +2,7 @@ # # getcommit - get a descriptive commit name (git) # -# Copyright (C) 2015 - 2023 Eggheads Development Team +# Copyright (C) 2015 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/killwhitespace b/misc/killwhitespace index b1a96c330..bea3e450a 100755 --- a/misc/killwhitespace +++ b/misc/killwhitespace @@ -2,7 +2,7 @@ # # killwhitespace - removes trailing whitespace from source files # -# Copyright (C) 2005 - 2023 Eggheads Development Team +# Copyright (C) 2005 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/makedepend b/misc/makedepend index c355c6fcc..8dc7e9533 100755 --- a/misc/makedepend +++ b/misc/makedepend @@ -2,7 +2,7 @@ # # makedepend - updates Makefile dependencies throughout the tree # -# Copyright (C) 2004 - 2023 Eggheads Development Team +# Copyright (C) 2004 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/modconfig b/misc/modconfig index 78fdb1038..0fd07b063 100755 --- a/misc/modconfig +++ b/misc/modconfig @@ -2,7 +2,7 @@ # # modconfig # -# Copyright (C) 2000 - 2023 Eggheads Development Team +# Copyright (C) 2000 - 2024 Eggheads Development Team # Written by Fabian Knittel # # This program is free software; you can redistribute it and/or diff --git a/misc/newversion b/misc/newversion index f4e6c8aa8..5bb879d0c 100755 --- a/misc/newversion +++ b/misc/newversion @@ -2,7 +2,7 @@ # # newversion - prepares the tree for a new version number in git # -# Copyright (C) 2004 - 2023 Eggheads Development Team +# Copyright (C) 2004 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/releaseprep b/misc/releaseprep index 5c818f276..de3fc5612 100755 --- a/misc/releaseprep +++ b/misc/releaseprep @@ -2,7 +2,7 @@ # # releaseprep - prepares the tree for release # -# Copyright (C) 2004 - 2023 Eggheads Development Team +# Copyright (C) 2004 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/runautotools b/misc/runautotools index 48e9b93d5..cb16ab666 100755 --- a/misc/runautotools +++ b/misc/runautotools @@ -2,7 +2,7 @@ # # runautotools - # -# Copyright (C) 2004 - 2023 Eggheads Development Team +# Copyright (C) 2004 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/misc/setpatch b/misc/setpatch index 1e107e009..74620c560 100755 --- a/misc/setpatch +++ b/misc/setpatch @@ -2,7 +2,7 @@ # # addpatch - generates src/version.h # -# Copyright (C) 2002 - 2023 Eggheads Development Team +# Copyright (C) 2002 - 2024 Eggheads Development Team # Copyright (C) 2000 Fabian Knittel # # This file is free software; you can redistribute it and/or modify it @@ -88,7 +88,7 @@ cat < src/version.h */ /* * 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 diff --git a/misc/updatecopyright b/misc/updatecopyright index 1ba241fa3..a17b5edaf 100755 --- a/misc/updatecopyright +++ b/misc/updatecopyright @@ -2,7 +2,7 @@ # # updatecopyright - updates copyright in files # -# Copyright (C) 2005 - 2023 Eggheads Development Team +# Copyright (C) 2005 - 2024 Eggheads Development Team # # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by diff --git a/scripts/CONTENTS b/scripts/CONTENTS index 7e395fbf4..ec0813aff 100644 --- a/scripts/CONTENTS +++ b/scripts/CONTENTS @@ -68,4 +68,4 @@ Last revised: August 08, 2004 _____________________________________________________________________ - Copyright (C) 2001 - 2023 Eggheads Development Team + Copyright (C) 2001 - 2024 Eggheads Development Team diff --git a/scripts/action.fix.tcl b/scripts/action.fix.tcl index 13e13b4c8..b2cfb2bee 100644 --- a/scripts/action.fix.tcl +++ b/scripts/action.fix.tcl @@ -1,6 +1,6 @@ # action.fix.tcl # -# Copyright (C) 2002 - 2023 Eggheads Development Team +# Copyright (C) 2002 - 2024 Eggheads Development Team # # Tothwolf 25May1999: cleanup # Tothwolf 04Oct1999: changed proc names slightly diff --git a/scripts/autobotchk b/scripts/autobotchk index 9ad2b5b8b..f9f1e8b40 100755 --- a/scripts/autobotchk +++ b/scripts/autobotchk @@ -1,7 +1,7 @@ #! /bin/sh # # Copyright (C) 1999-2003 Jeff Fisher (guppy@eggheads.org) -# Copyright (C) 2004-2023 Eggheads Development Team +# Copyright (C) 2004-2024 Eggheads Development Team # # systemd formatting contributed by PeGaSuS # @@ -59,7 +59,7 @@ exec tclsh$lastver "$0" ${1+"$@"} # AutoBotchk - An eggdrop utility to autogenerate botchk/crontab entries # # Copyright (C) 1999-2003 Jeff Fisher (guppy@eggheads.org) -# Copyright (C) 2004-2023 Eggheads Development Team +# Copyright (C) 2004-2024 Eggheads Development Team # # How to use # ---------- @@ -330,7 +330,7 @@ puts $fd "#! /bin/sh # # Generated by AutoBotchk 1.11 # Copyright (C) 1999-2003 Jeff Fisher (guppy@eggheads.org) -# Copyright (C) 2004-2023 Eggheads Development Team +# Copyright (C) 2004-2024 Eggheads Development Team # # change this to the directory you run your bot from: diff --git a/scripts/compat.tcl b/scripts/compat.tcl index 0ce91fac4..6e1e0bb64 100644 --- a/scripts/compat.tcl +++ b/scripts/compat.tcl @@ -2,7 +2,7 @@ # This script just quickly maps old Tcl commands to the new ones. # Use this if you are too lazy to get off your butt and update your scripts :D # -# Copyright (C) 2002 - 2023 Eggheads Development Team +# Copyright (C) 2002 - 2024 Eggheads Development Team # # Wiktor 31Mar2000: added binds and chnick proc # Tothwolf 25May1999: cleanup diff --git a/scripts/ques5.tcl b/scripts/ques5.tcl index e554fa062..1a5028580 100644 --- a/scripts/ques5.tcl +++ b/scripts/ques5.tcl @@ -2,7 +2,7 @@ # ques5.tcl # # Copyright (C) 1995 - 1997 Robey Pointer -# Copyright (C) 1999 - 2023 Eggheads Development Team +# Copyright (C) 1999 - 2024 Eggheads Development Team # # v1 -- 20aug95 # v2 -- 2oct95 [improved it] diff --git a/src/bg.c b/src/bg.c index 3c8a712de..540dc60bd 100644 --- a/src/bg.c +++ b/src/bg.c @@ -5,7 +5,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 diff --git a/src/bg.h b/src/bg.h index f5e79d368..70f98ab6e 100644 --- a/src/bg.h +++ b/src/bg.h @@ -2,7 +2,7 @@ * bg.h */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/botcmd.c b/src/botcmd.c index e4fb59713..f3440f3c7 100644 --- a/src/botcmd.c +++ b/src/botcmd.c @@ -5,7 +5,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 diff --git a/src/botmsg.c b/src/botmsg.c index 2c00552d0..3a4cb37d5 100644 --- a/src/botmsg.c +++ b/src/botmsg.c @@ -7,7 +7,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 diff --git a/src/botnet.c b/src/botnet.c index 7d42e1187..88484235d 100644 --- a/src/botnet.c +++ b/src/botnet.c @@ -9,7 +9,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 diff --git a/src/chan.h b/src/chan.h index 33ba807d1..19a56e5a1 100644 --- a/src/chan.h +++ b/src/chan.h @@ -5,7 +5,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 diff --git a/src/chanprog.c b/src/chanprog.c index 6253fd474..c4b679c07 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -9,7 +9,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 diff --git a/src/cmds.c b/src/cmds.c index 47923b2ef..ceb7bca49 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -5,7 +5,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 diff --git a/src/cmdt.h b/src/cmdt.h index d5cea1fb4..e7f16815b 100644 --- a/src/cmdt.h +++ b/src/cmdt.h @@ -4,7 +4,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 diff --git a/src/compat/base64.c b/src/compat/base64.c index d3b7218d3..2e835d2e6 100644 --- a/src/compat/base64.c +++ b/src/compat/base64.c @@ -2,7 +2,7 @@ * base64.c -- provides b64_ntop() and b64_pton() if necessary */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/compat/base64.h b/src/compat/base64.h index 1925f7257..1f36e9dc6 100644 --- a/src/compat/base64.h +++ b/src/compat/base64.h @@ -3,7 +3,7 @@ * prototypes for base64.c */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/compat/compat.h b/src/compat/compat.h index 0346097b5..6294c6711 100644 --- a/src/compat/compat.h +++ b/src/compat/compat.h @@ -3,7 +3,7 @@ * wrap-around header for all compatibility functions. */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/compat/explicit_bzero.c b/src/compat/explicit_bzero.c index 862c491a9..b5c9553bb 100644 --- a/src/compat/explicit_bzero.c +++ b/src/compat/explicit_bzero.c @@ -2,7 +2,7 @@ * explicit_bzero.c -- provides explicit_bzero() if necessary */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/compat/explicit_bzero.h b/src/compat/explicit_bzero.h index a9a3f3b9c..f0b58697a 100644 --- a/src/compat/explicit_bzero.h +++ b/src/compat/explicit_bzero.h @@ -3,7 +3,7 @@ * prototypes for explicit_bzero.c */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/compat/in6.h b/src/compat/in6.h index ca84cd57d..bfb43d8e3 100644 --- a/src/compat/in6.h +++ b/src/compat/in6.h @@ -2,7 +2,7 @@ * in6.h -- various IPv6 related definitions and macros */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/compat/inet_aton.c b/src/compat/inet_aton.c index dc2c02d44..cb471b287 100644 --- a/src/compat/inet_aton.c +++ b/src/compat/inet_aton.c @@ -2,7 +2,7 @@ /* * inet_aton.c -- provides inet_aton() if necessary. * - * Portions Copyright (C) 2000 - 2023 Eggheads Development Team + * Portions Copyright (C) 2000 - 2024 Eggheads Development Team */ #include "main.h" diff --git a/src/compat/inet_aton.h b/src/compat/inet_aton.h index 97303653b..78acf4463 100644 --- a/src/compat/inet_aton.h +++ b/src/compat/inet_aton.h @@ -3,7 +3,7 @@ * prototypes for inet_aton.c */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/compat/snprintf.c b/src/compat/snprintf.c index 71a64e42d..1204b70f1 100644 --- a/src/compat/snprintf.c +++ b/src/compat/snprintf.c @@ -2,7 +2,7 @@ * snprintf.c - a portable implementation of snprintf and vsnprintf */ /* - * Portions Copyright (C) 2000 - 2023 Eggheads Development Team + * Portions Copyright (C) 2000 - 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 diff --git a/src/compat/snprintf.h b/src/compat/snprintf.h index d9d7ba791..293f6647d 100644 --- a/src/compat/snprintf.h +++ b/src/compat/snprintf.h @@ -3,7 +3,7 @@ * header file for snprintf.c */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/compat/strlcpy.c b/src/compat/strlcpy.c index f834d6ca5..f162bb149 100644 --- a/src/compat/strlcpy.c +++ b/src/compat/strlcpy.c @@ -2,7 +2,7 @@ * strlcpy.c -- provides strlcpy() if necessary */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/compat/strlcpy.h b/src/compat/strlcpy.h index 66d8e26d1..dbdc1d169 100644 --- a/src/compat/strlcpy.h +++ b/src/compat/strlcpy.h @@ -3,7 +3,7 @@ * prototypes for strlcpy.c */ /* - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/dcc.c b/src/dcc.c index 931c37d63..9030f1a02 100644 --- a/src/dcc.c +++ b/src/dcc.c @@ -6,7 +6,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 diff --git a/src/dccutil.c b/src/dccutil.c index ece4d895d..17b5054e9 100644 --- a/src/dccutil.c +++ b/src/dccutil.c @@ -8,7 +8,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 diff --git a/src/dns.c b/src/dns.c index afa407b07..ab1fdbeae 100644 --- a/src/dns.c +++ b/src/dns.c @@ -7,7 +7,7 @@ /* * Written by Fabian Knittel * - * 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 diff --git a/src/dns.h b/src/dns.h index 771798994..5bfe44031 100644 --- a/src/dns.h +++ b/src/dns.h @@ -5,7 +5,7 @@ /* * Written by Fabian Knittel * - * 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 diff --git a/src/eggdrop.h b/src/eggdrop.h index 964a63c28..a7774e294 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -6,7 +6,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 diff --git a/src/flags.c b/src/flags.c index c86627794..aea4ec9b2 100644 --- a/src/flags.c +++ b/src/flags.c @@ -4,7 +4,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 diff --git a/src/flags.h b/src/flags.h index 565709615..bfc868139 100644 --- a/src/flags.h +++ b/src/flags.h @@ -3,7 +3,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 diff --git a/src/lang.h b/src/lang.h index a130819b3..ff7f9b4eb 100644 --- a/src/lang.h +++ b/src/lang.h @@ -4,7 +4,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 diff --git a/src/language.c b/src/language.c index 7d2539159..7056311a2 100644 --- a/src/language.c +++ b/src/language.c @@ -4,7 +4,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 diff --git a/src/main.c b/src/main.c index b4324f7ac..74688099d 100644 --- a/src/main.c +++ b/src/main.c @@ -7,7 +7,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 @@ -989,13 +989,13 @@ int main(int arg_c, char **arg_v) egg_snprintf(egg_version, sizeof egg_version, "%s+%s %u", EGG_STRINGVER, EGG_PATCH, egg_numver); egg_snprintf(ver, sizeof ver, "eggdrop v%s+%s", EGG_STRINGVER, EGG_PATCH); egg_snprintf(version, sizeof version, - "Eggdrop v%s+%s (C) 1997 Robey Pointer (C) 1999-2023 Eggheads", + "Eggdrop v%s+%s (C) 1997 Robey Pointer (C) 2010-2024 Eggheads", EGG_STRINGVER, EGG_PATCH); #else egg_snprintf(egg_version, sizeof egg_version, "%s %u", EGG_STRINGVER, egg_numver); egg_snprintf(ver, sizeof ver, "eggdrop v%s", EGG_STRINGVER); egg_snprintf(version, sizeof version, - "Eggdrop v%s (C) 1997 Robey Pointer (C) 1999-2023 Eggheads", + "Eggdrop v%s (C) 1997 Robey Pointer (C) 2010-2024 Eggheads", EGG_STRINGVER); #endif diff --git a/src/main.h b/src/main.h index 3cba18fd3..d9c3cc50d 100644 --- a/src/main.h +++ b/src/main.h @@ -4,7 +4,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 diff --git a/src/mem.c b/src/mem.c index 4c92aa59a..949e6fee6 100644 --- a/src/mem.c +++ b/src/mem.c @@ -5,7 +5,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 diff --git a/src/misc.c b/src/misc.c index 990a3824a..2418157a5 100644 --- a/src/misc.c +++ b/src/misc.c @@ -9,7 +9,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 diff --git a/src/misc_file.c b/src/misc_file.c index 84110987b..7d279c4eb 100644 --- a/src/misc_file.c +++ b/src/misc_file.c @@ -3,7 +3,7 @@ * copyfile() movefile() file_readable() */ /* - * 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 diff --git a/src/misc_file.h b/src/misc_file.h index 07a7ca1b5..2de9445a9 100644 --- a/src/misc_file.h +++ b/src/misc_file.h @@ -3,7 +3,7 @@ * prototypes for misc_file.c */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/assoc.mod/assoc.c b/src/mod/assoc.mod/assoc.c index eb41e401f..48891a633 100644 --- a/src/mod/assoc.mod/assoc.c +++ b/src/mod/assoc.mod/assoc.c @@ -4,7 +4,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 diff --git a/src/mod/assoc.mod/assoc.h b/src/mod/assoc.mod/assoc.h index c0cc1e782..2c105124a 100644 --- a/src/mod/assoc.mod/assoc.h +++ b/src/mod/assoc.mod/assoc.h @@ -2,7 +2,7 @@ * assoc.h -- part of assoc.mod */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/blowfish.mod/bf_tab.h b/src/mod/blowfish.mod/bf_tab.h index a4e75c7aa..2e20e66c4 100644 --- a/src/mod/blowfish.mod/bf_tab.h +++ b/src/mod/blowfish.mod/bf_tab.h @@ -3,7 +3,7 @@ * Blowfish P-box and S-box tables */ /* - * 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 diff --git a/src/mod/blowfish.mod/blowfish.c b/src/mod/blowfish.mod/blowfish.c index f1621d378..caf27b026 100644 --- a/src/mod/blowfish.mod/blowfish.c +++ b/src/mod/blowfish.mod/blowfish.c @@ -4,7 +4,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 diff --git a/src/mod/blowfish.mod/blowfish.h b/src/mod/blowfish.mod/blowfish.h index dc57eb9a9..fa427fe6a 100644 --- a/src/mod/blowfish.mod/blowfish.h +++ b/src/mod/blowfish.mod/blowfish.h @@ -3,7 +3,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 diff --git a/src/mod/channels.mod/channels.c b/src/mod/channels.mod/channels.c index dc202dc22..95fed762b 100644 --- a/src/mod/channels.mod/channels.c +++ b/src/mod/channels.mod/channels.c @@ -4,7 +4,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 diff --git a/src/mod/channels.mod/channels.h b/src/mod/channels.mod/channels.h index a165e20be..38dbe0869 100644 --- a/src/mod/channels.mod/channels.h +++ b/src/mod/channels.mod/channels.h @@ -3,7 +3,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 diff --git a/src/mod/channels.mod/cmdschan.c b/src/mod/channels.mod/cmdschan.c index a267dfb08..4d96630a7 100644 --- a/src/mod/channels.mod/cmdschan.c +++ b/src/mod/channels.mod/cmdschan.c @@ -3,7 +3,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 diff --git a/src/mod/channels.mod/tclchan.c b/src/mod/channels.mod/tclchan.c index debfb1368..512702703 100644 --- a/src/mod/channels.mod/tclchan.c +++ b/src/mod/channels.mod/tclchan.c @@ -3,7 +3,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 diff --git a/src/mod/channels.mod/udefchan.c b/src/mod/channels.mod/udefchan.c index 72f645fa3..21518314a 100644 --- a/src/mod/channels.mod/udefchan.c +++ b/src/mod/channels.mod/udefchan.c @@ -3,7 +3,7 @@ * user definable channel flags/settings */ /* - * 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 diff --git a/src/mod/channels.mod/userchan.c b/src/mod/channels.mod/userchan.c index 9eb1794d8..4960b42fc 100644 --- a/src/mod/channels.mod/userchan.c +++ b/src/mod/channels.mod/userchan.c @@ -3,7 +3,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 diff --git a/src/mod/compress.mod/compress.c b/src/mod/compress.mod/compress.c index 97639d2d2..e94124fed 100644 --- a/src/mod/compress.mod/compress.c +++ b/src/mod/compress.mod/compress.c @@ -7,7 +7,7 @@ * by Jean-loup Gailly and Miguel Albrecht. */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/compress.mod/compress.h b/src/mod/compress.mod/compress.h index 3cabf141a..f2ba71135 100644 --- a/src/mod/compress.mod/compress.h +++ b/src/mod/compress.mod/compress.h @@ -3,7 +3,7 @@ * header file for the zlib compression module */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 3be5c671f..e95014b1d 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -13,7 +13,7 @@ # 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. ## ## -------------------- ## @@ -1410,7 +1410,7 @@ 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 diff --git a/src/mod/compress.mod/configure.ac b/src/mod/compress.mod/configure.ac index 8455c296e..1dcf19572 100644 --- a/src/mod/compress.mod/configure.ac +++ b/src/mod/compress.mod/configure.ac @@ -9,7 +9,7 @@ AC_INIT([Eggdrop Compress Module],[1.9.5],[bugs@eggheads.org]) AC_CONFIG_SRCDIR(compress.c) AC_CONFIG_AUX_DIR(../../../misc) -AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) +AC_COPYRIGHT([Copyright (C) 1999 - 2024 Eggheads Development Team]) AC_REVISION([m4_esyscmd([../../../misc/getcommit])]) AC_PROG_CC([gcc cc clang]) diff --git a/src/mod/compress.mod/tclcompress.c b/src/mod/compress.mod/tclcompress.c index 9e89538dd..c6c33f862 100644 --- a/src/mod/compress.mod/tclcompress.c +++ b/src/mod/compress.mod/tclcompress.c @@ -5,7 +5,7 @@ * Written by Fabian Knittel */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/console.mod/console.c b/src/mod/console.mod/console.c index 089c1e326..d54f93751 100644 --- a/src/mod/console.mod/console.c +++ b/src/mod/console.mod/console.c @@ -4,7 +4,7 @@ * by cmwagner/billyjoe/D. Senso */ /* - * 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 diff --git a/src/mod/console.mod/console.h b/src/mod/console.mod/console.h index f3155f201..d846d62df 100644 --- a/src/mod/console.mod/console.h +++ b/src/mod/console.mod/console.h @@ -2,7 +2,7 @@ * console.h -- part of console.mod */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/ctcp.mod/ctcp.c b/src/mod/ctcp.mod/ctcp.c index ace8c7289..ebe45c2fc 100644 --- a/src/mod/ctcp.mod/ctcp.c +++ b/src/mod/ctcp.mod/ctcp.c @@ -4,7 +4,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 diff --git a/src/mod/ctcp.mod/ctcp.h b/src/mod/ctcp.mod/ctcp.h index 63bdb890f..ff1bc36bc 100644 --- a/src/mod/ctcp.mod/ctcp.h +++ b/src/mod/ctcp.mod/ctcp.h @@ -4,7 +4,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 diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 12ea1bab8..894006d91 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -13,7 +13,7 @@ # 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. ## ## -------------------- ## @@ -1379,7 +1379,7 @@ 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 diff --git a/src/mod/dns.mod/configure.ac b/src/mod/dns.mod/configure.ac index aef8b6a5c..7ec02e33d 100644 --- a/src/mod/dns.mod/configure.ac +++ b/src/mod/dns.mod/configure.ac @@ -9,7 +9,7 @@ AC_INIT([Eggdrop DNS Module],[1.9.5],[bugs@eggheads.org]) AC_CONFIG_SRCDIR(coredns.c) AC_CONFIG_AUX_DIR(../../../misc) -AC_COPYRIGHT([Copyright (C) 1999 - 2023 Eggheads Development Team]) +AC_COPYRIGHT([Copyright (C) 1999 - 2024 Eggheads Development Team]) AC_REVISION([m4_esyscmd([../../../misc/getcommit])]) AC_PROG_CC([gcc cc clang]) diff --git a/src/mod/dns.mod/coredns.c b/src/mod/dns.mod/coredns.c index 6e01ceedc..f1f440770 100644 --- a/src/mod/dns.mod/coredns.c +++ b/src/mod/dns.mod/coredns.c @@ -8,7 +8,7 @@ * /etc/hosts support added by Michael Ortmann */ /* - * Portions Copyright (C) 1999 - 2023 Eggheads Development Team + * Portions 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 diff --git a/src/mod/dns.mod/dns.c b/src/mod/dns.mod/dns.c index e0b8cb59b..a25ee2be8 100644 --- a/src/mod/dns.mod/dns.c +++ b/src/mod/dns.mod/dns.c @@ -5,7 +5,7 @@ * Written by Fabian Knittel */ /* - * 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 diff --git a/src/mod/dns.mod/dns.h b/src/mod/dns.mod/dns.h index 508511ba8..5b8b30e2b 100644 --- a/src/mod/dns.mod/dns.h +++ b/src/mod/dns.mod/dns.h @@ -5,7 +5,7 @@ * Written by Fabian Knittel */ /* - * 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 diff --git a/src/mod/filesys.mod/dbcompat.c b/src/mod/filesys.mod/dbcompat.c index b4db2c091..e50550e4c 100644 --- a/src/mod/filesys.mod/dbcompat.c +++ b/src/mod/filesys.mod/dbcompat.c @@ -6,7 +6,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 diff --git a/src/mod/filesys.mod/dbcompat.h b/src/mod/filesys.mod/dbcompat.h index 341fe5e3a..c8af6c481 100644 --- a/src/mod/filesys.mod/dbcompat.h +++ b/src/mod/filesys.mod/dbcompat.h @@ -6,7 +6,7 @@ * Written for filedb3 by Fabian Knittel */ /* - * 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 diff --git a/src/mod/filesys.mod/filedb3.c b/src/mod/filesys.mod/filedb3.c index df2b41d81..37884c5c6 100644 --- a/src/mod/filesys.mod/filedb3.c +++ b/src/mod/filesys.mod/filedb3.c @@ -6,7 +6,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 diff --git a/src/mod/filesys.mod/filedb3.h b/src/mod/filesys.mod/filedb3.h index bdb28266e..08f15f8e0 100644 --- a/src/mod/filesys.mod/filedb3.h +++ b/src/mod/filesys.mod/filedb3.h @@ -5,7 +5,7 @@ * Written by Fabian Knittel */ /* - * 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 diff --git a/src/mod/filesys.mod/filelist.c b/src/mod/filesys.mod/filelist.c index 7342f6913..591dcaa54 100644 --- a/src/mod/filesys.mod/filelist.c +++ b/src/mod/filesys.mod/filelist.c @@ -5,7 +5,7 @@ * Written by Fabian Knittel */ /* - * 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 diff --git a/src/mod/filesys.mod/filelist.h b/src/mod/filesys.mod/filelist.h index 10868c43e..456e2fdd3 100644 --- a/src/mod/filesys.mod/filelist.h +++ b/src/mod/filesys.mod/filelist.h @@ -5,7 +5,7 @@ * Written by Fabian Knittel */ /* - * 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 diff --git a/src/mod/filesys.mod/files.c b/src/mod/filesys.mod/files.c index 186f5b12e..f6c26edfc 100644 --- a/src/mod/filesys.mod/files.c +++ b/src/mod/filesys.mod/files.c @@ -4,7 +4,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 diff --git a/src/mod/filesys.mod/files.h b/src/mod/filesys.mod/files.h index 36e419730..f374f2721 100644 --- a/src/mod/filesys.mod/files.h +++ b/src/mod/filesys.mod/files.h @@ -3,7 +3,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 diff --git a/src/mod/filesys.mod/filesys.c b/src/mod/filesys.mod/filesys.c index f5ef33533..2db7aec92 100644 --- a/src/mod/filesys.mod/filesys.c +++ b/src/mod/filesys.mod/filesys.c @@ -4,7 +4,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 diff --git a/src/mod/filesys.mod/filesys.h b/src/mod/filesys.mod/filesys.h index bf545286a..be566eb69 100644 --- a/src/mod/filesys.mod/filesys.h +++ b/src/mod/filesys.mod/filesys.h @@ -4,7 +4,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 diff --git a/src/mod/filesys.mod/tclfiles.c b/src/mod/filesys.mod/tclfiles.c index c4d4a7ccd..1da1b3049 100644 --- a/src/mod/filesys.mod/tclfiles.c +++ b/src/mod/filesys.mod/tclfiles.c @@ -4,7 +4,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 diff --git a/src/mod/ident.mod/ident.c b/src/mod/ident.mod/ident.c index e6ea5e7d0..6942d73ad 100644 --- a/src/mod/ident.mod/ident.c +++ b/src/mod/ident.mod/ident.c @@ -3,7 +3,7 @@ */ /* * Copyright (c) 2018 - 2019 Michael Ortmann MIT License - * Copyright (C) 2019 - 2023 Eggheads Development Team + * Copyright (C) 2019 - 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 diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index 94807f6e8..46aa48190 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -8,7 +8,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 diff --git a/src/mod/irc.mod/cmdsirc.c b/src/mod/irc.mod/cmdsirc.c index 6f878f983..2491b6731 100644 --- a/src/mod/irc.mod/cmdsirc.c +++ b/src/mod/irc.mod/cmdsirc.c @@ -4,7 +4,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 diff --git a/src/mod/irc.mod/irc.c b/src/mod/irc.mod/irc.c index 52518ce12..8cce81776 100644 --- a/src/mod/irc.mod/irc.c +++ b/src/mod/irc.mod/irc.c @@ -4,7 +4,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 diff --git a/src/mod/irc.mod/irc.h b/src/mod/irc.mod/irc.h index 2a030e023..2ea77db73 100644 --- a/src/mod/irc.mod/irc.h +++ b/src/mod/irc.mod/irc.h @@ -3,7 +3,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 diff --git a/src/mod/irc.mod/mode.c b/src/mod/irc.mod/mode.c index 93df97da9..327844c3b 100644 --- a/src/mod/irc.mod/mode.c +++ b/src/mod/irc.mod/mode.c @@ -6,7 +6,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 diff --git a/src/mod/irc.mod/msgcmds.c b/src/mod/irc.mod/msgcmds.c index 4f3d14756..e8baa831e 100644 --- a/src/mod/irc.mod/msgcmds.c +++ b/src/mod/irc.mod/msgcmds.c @@ -4,7 +4,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 diff --git a/src/mod/irc.mod/tclirc.c b/src/mod/irc.mod/tclirc.c index 1e1d688e5..52826b8e5 100644 --- a/src/mod/irc.mod/tclirc.c +++ b/src/mod/irc.mod/tclirc.c @@ -3,7 +3,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 diff --git a/src/mod/module.h b/src/mod/module.h index 594182a9f..951241adb 100644 --- a/src/mod/module.h +++ b/src/mod/module.h @@ -3,7 +3,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 diff --git a/src/mod/modvals.h b/src/mod/modvals.h index 5eda82948..9ec2a9e18 100644 --- a/src/mod/modvals.h +++ b/src/mod/modvals.h @@ -3,7 +3,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 diff --git a/src/mod/notes.mod/cmdsnote.c b/src/mod/notes.mod/cmdsnote.c index cb4dd489b..68f9ad494 100644 --- a/src/mod/notes.mod/cmdsnote.c +++ b/src/mod/notes.mod/cmdsnote.c @@ -4,7 +4,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 diff --git a/src/mod/notes.mod/notes.c b/src/mod/notes.mod/notes.c index 17d9fff31..5c5d47aa8 100644 --- a/src/mod/notes.mod/notes.c +++ b/src/mod/notes.mod/notes.c @@ -7,7 +7,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 diff --git a/src/mod/notes.mod/notes.h b/src/mod/notes.mod/notes.h index 02c5d123d..79c222702 100644 --- a/src/mod/notes.mod/notes.h +++ b/src/mod/notes.mod/notes.h @@ -3,7 +3,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 diff --git a/src/mod/pbkdf2.mod/pbkdf2.c b/src/mod/pbkdf2.mod/pbkdf2.c index 8210c5fd6..169d92bc8 100644 --- a/src/mod/pbkdf2.mod/pbkdf2.c +++ b/src/mod/pbkdf2.mod/pbkdf2.c @@ -4,7 +4,7 @@ * * Written by thommey and Michael Ortmann * - * Copyright (C) 2017 - 2023 Eggheads Development Team + * Copyright (C) 2017 - 2024 Eggheads Development Team */ #include "src/mod/module.h" diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index 40bd0c84a..532be77df 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -12,7 +12,7 @@ # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # -# Copyright (C) 1999 - 2022 Eggheads Development Team +# Copyright (C) 1999 - 2024 Eggheads Development Team ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## @@ -1346,7 +1346,7 @@ Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. -Copyright (C) 1999 - 2022 Eggheads Development Team +Copyright (C) 1999 - 2024 Eggheads Development Team _ACEOF exit fi diff --git a/src/mod/python.mod/configure.ac b/src/mod/python.mod/configure.ac index b52a686b3..249d5ca46 100644 --- a/src/mod/python.mod/configure.ac +++ b/src/mod/python.mod/configure.ac @@ -10,7 +10,7 @@ AC_INIT([Eggdrop Python Module],[1.9.3],[bugs@eggheads.org]) AC_CONFIG_SRCDIR(python.c) AC_CONFIG_AUX_DIR(../../../misc) -AC_COPYRIGHT([Copyright (C) 1999 - 2022 Eggheads Development Team]) +AC_COPYRIGHT([Copyright (C) 1999 - 2024 Eggheads Development Team]) AC_REVISION([m4_esyscmd([../../../misc/getcommit])]) AC_PROG_FGREP diff --git a/src/mod/python.mod/pycmds.c b/src/mod/python.mod/pycmds.c index 302dd82b5..051bf7844 100644 --- a/src/mod/python.mod/pycmds.c +++ b/src/mod/python.mod/pycmds.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2020 - 2021 Eggheads Development Team + * Copyright (C) 2020 - 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 diff --git a/src/mod/python.mod/python.c b/src/mod/python.mod/python.c index 4cb3b70d4..814fde8ec 100644 --- a/src/mod/python.mod/python.c +++ b/src/mod/python.mod/python.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 2020 - 2021 Eggheads Development Team + * Copyright (C) 2020 - 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 diff --git a/src/mod/python.mod/tclpython.c b/src/mod/python.mod/tclpython.c index 88a89b2d7..fed1f6386 100644 --- a/src/mod/python.mod/tclpython.c +++ b/src/mod/python.mod/tclpython.c @@ -2,7 +2,7 @@ * tclpython.c -- tcl functions for python.mod */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 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 diff --git a/src/mod/seen.mod/seen.c b/src/mod/seen.mod/seen.c index de3fc487d..41cea68d2 100644 --- a/src/mod/seen.mod/seen.c +++ b/src/mod/seen.mod/seen.c @@ -11,7 +11,7 @@ * 1.2a 1997-08-24 Minor fixes. [BB] */ /* - * 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 diff --git a/src/mod/server.mod/cmdsserv.c b/src/mod/server.mod/cmdsserv.c index 8f6302d45..ab580d208 100644 --- a/src/mod/server.mod/cmdsserv.c +++ b/src/mod/server.mod/cmdsserv.c @@ -4,7 +4,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 diff --git a/src/mod/server.mod/isupport.c b/src/mod/server.mod/isupport.c index d3d08ada7..61636fc26 100644 --- a/src/mod/server.mod/isupport.c +++ b/src/mod/server.mod/isupport.c @@ -4,7 +4,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 diff --git a/src/mod/server.mod/server.c b/src/mod/server.mod/server.c index a206b6810..907656c7f 100644 --- a/src/mod/server.mod/server.c +++ b/src/mod/server.mod/server.c @@ -4,7 +4,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 diff --git a/src/mod/server.mod/server.h b/src/mod/server.mod/server.h index f70d8db91..7764c6228 100644 --- a/src/mod/server.mod/server.h +++ b/src/mod/server.mod/server.h @@ -3,7 +3,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 diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index 956fdaf4c..85baed7cf 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -3,7 +3,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 diff --git a/src/mod/server.mod/tclisupport.c b/src/mod/server.mod/tclisupport.c index e59359e63..9dff94a65 100644 --- a/src/mod/server.mod/tclisupport.c +++ b/src/mod/server.mod/tclisupport.c @@ -4,7 +4,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 diff --git a/src/mod/server.mod/tclserv.c b/src/mod/server.mod/tclserv.c index b675cb392..c8a753bd6 100644 --- a/src/mod/server.mod/tclserv.c +++ b/src/mod/server.mod/tclserv.c @@ -2,7 +2,7 @@ * tclserv.c -- part of server.mod * * 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 diff --git a/src/mod/share.mod/share.c b/src/mod/share.mod/share.c index 9e7bc519a..9fc14891f 100644 --- a/src/mod/share.mod/share.c +++ b/src/mod/share.mod/share.c @@ -4,7 +4,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 diff --git a/src/mod/share.mod/share.h b/src/mod/share.mod/share.h index 603f76e2a..cf74f4048 100644 --- a/src/mod/share.mod/share.h +++ b/src/mod/share.mod/share.h @@ -3,7 +3,7 @@ * */ /* - * 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 diff --git a/src/mod/share.mod/uf_features.c b/src/mod/share.mod/uf_features.c index c8dec6603..9acd43069 100644 --- a/src/mod/share.mod/uf_features.c +++ b/src/mod/share.mod/uf_features.c @@ -3,7 +3,7 @@ * */ /* - * Copyright (C) 2000 - 2023 Eggheads Development Team + * Copyright (C) 2000 - 2024 Eggheads Development Team * Written by Fabian Knittel * * This program is free software; you can redistribute it and/or diff --git a/src/mod/transfer.mod/tcltransfer.c b/src/mod/transfer.mod/tcltransfer.c index 0456bf56a..e5cf6cd1a 100644 --- a/src/mod/transfer.mod/tcltransfer.c +++ b/src/mod/transfer.mod/tcltransfer.c @@ -1,7 +1,7 @@ /* * tcltransfer.c -- part of transfer.mod * - * Copyright (C) 2003 - 2023 Eggheads Development Team + * Copyright (C) 2003 - 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 diff --git a/src/mod/transfer.mod/transfer.c b/src/mod/transfer.mod/transfer.c index 0171b6fbc..9bfdbb1db 100644 --- a/src/mod/transfer.mod/transfer.c +++ b/src/mod/transfer.mod/transfer.c @@ -2,7 +2,7 @@ * transfer.c -- part of transfer.mod * * 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 diff --git a/src/mod/transfer.mod/transfer.h b/src/mod/transfer.mod/transfer.h index 163190355..dbbd145d2 100644 --- a/src/mod/transfer.mod/transfer.h +++ b/src/mod/transfer.mod/transfer.h @@ -3,7 +3,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 diff --git a/src/mod/transfer.mod/transferfstat.c b/src/mod/transfer.mod/transferfstat.c index fec601ae3..76cf57b94 100644 --- a/src/mod/transfer.mod/transferfstat.c +++ b/src/mod/transfer.mod/transferfstat.c @@ -1,7 +1,7 @@ /* * transferfstat.c -- part of transfer.mod * - * Copyright (C) 2003 - 2023 Eggheads Development Team + * Copyright (C) 2003 - 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 diff --git a/src/mod/transfer.mod/transferqueue.c b/src/mod/transfer.mod/transferqueue.c index 101bfa235..ab4de05c3 100644 --- a/src/mod/transfer.mod/transferqueue.c +++ b/src/mod/transfer.mod/transferqueue.c @@ -1,7 +1,7 @@ /* * transferqueue.c -- part of transfer.mod * - * Copyright (C) 2003 - 2023 Eggheads Development Team + * Copyright (C) 2003 - 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 diff --git a/src/mod/twitch.mod/twitch.c b/src/mod/twitch.mod/twitch.c index c6a90aac2..1ef9e7e60 100644 --- a/src/mod/twitch.mod/twitch.c +++ b/src/mod/twitch.mod/twitch.c @@ -18,7 +18,7 @@ */ /* - * Copyright (C) 2020 - 2023 Eggheads Development Team + * Copyright (C) 2020 - 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 diff --git a/src/mod/twitch.mod/twitch.h b/src/mod/twitch.mod/twitch.h index f063d90d2..97b39e938 100644 --- a/src/mod/twitch.mod/twitch.h +++ b/src/mod/twitch.mod/twitch.h @@ -3,7 +3,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 diff --git a/src/mod/uptime.mod/uptime.c b/src/mod/uptime.mod/uptime.c index 0e222cdba..de75b2c21 100644 --- a/src/mod/uptime.mod/uptime.c +++ b/src/mod/uptime.mod/uptime.c @@ -11,7 +11,7 @@ */ /* * Copyright (C) 2001 proton - * Copyright (C) 2001 - 2023 Eggheads Development Team + * Copyright (C) 2001 - 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 diff --git a/src/mod/uptime.mod/uptime.h b/src/mod/uptime.mod/uptime.h index f2cd360b1..4468c6156 100644 --- a/src/mod/uptime.mod/uptime.h +++ b/src/mod/uptime.mod/uptime.h @@ -3,7 +3,7 @@ */ /* * Copyright (C) 2001 proton - * Copyright (C) 2001 - 2023 Eggheads Development Team + * Copyright (C) 2001 - 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 diff --git a/src/mod/woobie.mod/woobie.c b/src/mod/woobie.mod/woobie.c index 71e49f948..d0a6e19de 100644 --- a/src/mod/woobie.mod/woobie.c +++ b/src/mod/woobie.mod/woobie.c @@ -6,7 +6,7 @@ * Comments by Fabian Knittel 29 December 1999 */ /* - * 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 diff --git a/src/modules.c b/src/modules.c index d85a09742..afb614221 100644 --- a/src/modules.c +++ b/src/modules.c @@ -6,7 +6,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 diff --git a/src/modules.h b/src/modules.h index 8e28878ef..839d5e87f 100644 --- a/src/modules.h +++ b/src/modules.h @@ -6,7 +6,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 diff --git a/src/net.c b/src/net.c index 85f353d7e..9ea150019 100644 --- a/src/net.c +++ b/src/net.c @@ -8,7 +8,7 @@ * * Changes after Feb 23, 1999 Copyright Eggheads Development Team * - * 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 diff --git a/src/proto.h b/src/proto.h index 9183dfa32..e1e0868ac 100644 --- a/src/proto.h +++ b/src/proto.h @@ -9,7 +9,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 diff --git a/src/rfc1459.c b/src/rfc1459.c index c7756db7d..631d7e62b 100644 --- a/src/rfc1459.c +++ b/src/rfc1459.c @@ -3,7 +3,7 @@ */ /* * Copyright (C) 1990 Jarkko Oikarinen - * Copyright (C) 1999 - 2023 Eggheads Development Team + * Copyright (C) 1999 - 2024 Eggheads Development Team * * This code was more or less cloned from the ircd-hybrid 5.3 source. * The original code was written by Otto Harkoonen and even though it diff --git a/src/stat.h b/src/stat.h index 4b7d54fff..5802a0549 100644 --- a/src/stat.h +++ b/src/stat.h @@ -3,7 +3,7 @@ * file attributes */ /* - * 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 diff --git a/src/tandem.h b/src/tandem.h index 97cf1df73..2d41f12d6 100644 --- a/src/tandem.h +++ b/src/tandem.h @@ -3,7 +3,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 diff --git a/src/tcl.c b/src/tcl.c index 6557645d5..db0d50d71 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -6,7 +6,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 diff --git a/src/tcldcc.c b/src/tcldcc.c index 6a704de87..601714ba2 100644 --- a/src/tcldcc.c +++ b/src/tcldcc.c @@ -4,7 +4,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 diff --git a/src/tclegg.h b/src/tclegg.h index caea8283e..d5e868d41 100644 --- a/src/tclegg.h +++ b/src/tclegg.h @@ -4,7 +4,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 diff --git a/src/tclhash.c b/src/tclhash.c index 7f905e816..86bd17633 100644 --- a/src/tclhash.c +++ b/src/tclhash.c @@ -9,7 +9,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 diff --git a/src/tclhash.h b/src/tclhash.h index c7ebb50b3..5fb0b5f44 100644 --- a/src/tclhash.h +++ b/src/tclhash.h @@ -3,7 +3,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 diff --git a/src/tclmisc.c b/src/tclmisc.c index cfa6d5420..ad9406809 100644 --- a/src/tclmisc.c +++ b/src/tclmisc.c @@ -4,7 +4,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 diff --git a/src/tcluser.c b/src/tcluser.c index 8cd52dc95..d8e51a48b 100644 --- a/src/tcluser.c +++ b/src/tcluser.c @@ -4,7 +4,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 diff --git a/src/tls.c b/src/tls.c index d9500b799..c3297f3ab 100644 --- a/src/tls.c +++ b/src/tls.c @@ -7,7 +7,7 @@ /* * Written by Rumen Stoyanov * - * Copyright (C) 2010 - 2023 Eggheads Development Team + * Copyright (C) 2010 - 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 diff --git a/src/userent.c b/src/userent.c index ce92dd590..3fde1f20a 100644 --- a/src/userent.c +++ b/src/userent.c @@ -4,7 +4,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 diff --git a/src/userrec.c b/src/userrec.c index 4fd8eaef3..487fd79a8 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -6,7 +6,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 diff --git a/src/users.c b/src/users.c index 2e8f5ff5c..703e344b1 100644 --- a/src/users.c +++ b/src/users.c @@ -12,7 +12,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 diff --git a/src/users.h b/src/users.h index a97d123cf..49f20853b 100644 --- a/src/users.h +++ b/src/users.h @@ -4,7 +4,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 diff --git a/src/version.h b/src/version.h index 0bf3573cd..0aec1d28b 100644 --- a/src/version.h +++ b/src/version.h @@ -9,7 +9,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 diff --git a/text/CONTENTS b/text/CONTENTS index f012103d5..2e55fba95 100644 --- a/text/CONTENTS +++ b/text/CONTENTS @@ -15,4 +15,4 @@ Last revised: December 02, 2003 _____________________________________________________________________ - Copyright (C) 2003 - 2023 Eggheads Development Team + Copyright (C) 2003 - 2024 Eggheads Development Team diff --git a/text/banner b/text/banner index cce1f61bd..fe5959b99 100644 --- a/text/banner +++ b/text/banner @@ -5,4 +5,4 @@ |___/ |___/ |_| Copyright (C) 1997 Robey Pointer - Copyright (C) 1999 - 2023 Eggheads Development Team + Copyright (C) 1999 - 2024 Eggheads Development Team From d11609c9fa2fedfb7355ae551878379971e56792 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 14 Jan 2024 16:10:46 -0500 Subject: [PATCH 234/320] update patchlevel --- src/version.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/version.h b/src/version.h index 0aec1d28b..63e9d3316 100644 --- a/src/version.h +++ b/src/version.h @@ -27,5 +27,5 @@ */ #define EGG_STRINGVER "1.9.5" -#define EGG_NUMVER 1090504 -#define EGG_PATCH "needtls" +#define EGG_NUMVER 1090505 +#define EGG_PATCH "python" From 40f93b8a313f465dc6914f4baaf5e1921ba1e01a Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 14 Jan 2024 22:20:19 +0100 Subject: [PATCH 235/320] remove quick-logs option Found by: michaelortmann Patch by: michaelortmann Fixes: #1449 Line-buffer instead --- doc/sphinx_source/tutorials/setup.rst | 2 +- doc/sphinx_source/using/core.rst | 7 ----- eggdrop.conf | 6 ---- help/core.help | 1 - help/set/cmds1.help | 7 ----- src/main.c | 16 ++-------- src/misc.c | 45 +++------------------------ src/proto.h | 1 - src/tcl.c | 2 -- 9 files changed, 9 insertions(+), 78 deletions(-) diff --git a/doc/sphinx_source/tutorials/setup.rst b/doc/sphinx_source/tutorials/setup.rst index 364287924..a50d4de9c 100644 --- a/doc/sphinx_source/tutorials/setup.rst +++ b/doc/sphinx_source/tutorials/setup.rst @@ -158,7 +158,7 @@ Now that your Eggdrop is on IRC and you've introduced yourself as owner, it's ti 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. +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"). 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. diff --git a/doc/sphinx_source/using/core.rst b/doc/sphinx_source/using/core.rst index bf560b351..f192c3cac 100644 --- a/doc/sphinx_source/using/core.rst +++ b/doc/sphinx_source/using/core.rst @@ -107,13 +107,6 @@ the logfile of the next day. reaches the size of 550 kilobytes. Note that this only works if you have keep-all-logs set to 0 (OFF). - set quick-logs 0 - This could be good if you have had a problem with logfiles filling - your quota/hard disk or if you log +p and publish it to the web, and - you need more up-to-date info. Note that this setting might increase - the CPU usage of your bot (on the other hand it will decrease your RAM - usage). - set raw-log 0 This setting allows you the logging of raw incoming server traffic via console/log flag 'r', raw outgoing server traffic via console/log mode diff --git a/eggdrop.conf b/eggdrop.conf index fedb6d919..86ac99e64 100755 --- a/eggdrop.conf +++ b/eggdrop.conf @@ -157,12 +157,6 @@ set max-logs 20 # have keep-all-logs 0 (OFF). set max-logsize 0 -# This could be good if you have had problem with the logfile filling -# your quota/hard disk or if you log +p and publish it to the web and -# need more up-to-date info. Note that this setting might increase the -# CPU usage of your bot (on the other hand it will decrease your mem usage). -set quick-logs 0 - # This setting allows you the logging of raw incoming server traffic via # console/log flag 'r', raw outgoing server traffic via console/log mode 'v', # raw incoming botnet traffic via console/log mode 't', raw outgoing botnet diff --git a/help/core.help b/help/core.help index 2f957cc9f..2c8d9d7bc 100644 --- a/help/core.help +++ b/help/core.help @@ -183,7 +183,6 @@ default-flags log-time timestamp-format max-logsize -quick-logs logfile-suffix quiet-save remote-boots diff --git a/help/set/cmds1.help b/help/set/cmds1.help index f6fead459..5d25fbbda 100644 --- a/help/set/cmds1.help +++ b/help/set/cmds1.help @@ -199,13 +199,6 @@ This value is in kilobytes, so '550' would mean cycle logs when it reaches the size of 550 kilobytes. Note that this only works if you have keep-all-logs 0 (OFF). -%{help=set quick-logs}%{+n} -### %bset quick-logs%b <0/1> - This could be good if you have had problem with the logfile - filling your quota/hard disk or if you log +p and publish it to - the web and need more up-to-date info. Note that this setting - might increase the CPU usage of your bot (on the other hand it will - decrease your mem usage). %{help=set logfile-suffix}%{+n} ### %bset logfile-suffix%b If keep-all-logs is 1, this setting will define the suffix of the diff --git a/src/main.c b/src/main.c index 74688099d..f698606a0 100644 --- a/src/main.c +++ b/src/main.c @@ -83,8 +83,7 @@ #endif extern char origbotname[], botnetnick[]; -extern int dcc_total, conmask, cache_hit, cache_miss, max_logs, quick_logs, - quiet_save; +extern int dcc_total, conmask, cache_hit, cache_miss, max_logs, quiet_save; extern struct dcc_t *dcc; extern struct userrec *userlist; extern struct chanset_t *chanset; @@ -179,7 +178,6 @@ void fatal(const char *s, int recoverable) int i; putlog(LOG_MISC, "*", "* %s", s); - flushlogs(); for (i = 0; i < dcc_total; i++) if (dcc[i].sock >= 0) killsock(dcc[i].sock); @@ -589,7 +587,6 @@ static void core_secondly() if (nowmins > lastmin) { memcpy(&nowtm, localtime(&now), sizeof(struct tm)); i = 0; - /* Once a minute */ ++lastmin; call_hook(HOOK_MINUTELY); @@ -610,10 +607,7 @@ static void core_secondly() if (((int) (nowtm.tm_min / 5) * 5) == (nowtm.tm_min)) { /* 5 min */ call_hook(HOOK_5MINUTELY); check_botnet_pings(); - if (!quick_logs) { - flushlogs(); - check_logsize(); - } + if (!miltime) { /* At midnight */ char s[25]; int j; @@ -661,10 +655,7 @@ static void core_minutely() { check_tcl_time_and_cron(&nowtm); do_check_timers(&timer); - if (quick_logs != 0) { - flushlogs(); - check_logsize(); - } + check_logsize(); } static void core_hourly() @@ -901,7 +892,6 @@ static void mainloop(int toplevel) putlog(LOG_MISC, "*", "%s", MOD_STAGNANT); } - flushlogs(); kill_tcl(); init_tcl(argc, argv); init_language(0); diff --git a/src/misc.c b/src/misc.c index 2418157a5..ee7ffc3d6 100644 --- a/src/misc.c +++ b/src/misc.c @@ -43,8 +43,7 @@ extern struct chanset_t *chanset; extern char helpdir[], version[], origbotname[], botname[], admin[], network[], motdfile[], ver[], botnetnick[], bannerfile[], textdir[]; -extern int backgrd, con_chan, term_z, use_stderr, dcc_total, keep_all_logs, - quick_logs; +extern int backgrd, con_chan, term_z, use_stderr, dcc_total, keep_all_logs; extern time_t now; extern Tcl_Interp *interp; @@ -579,9 +578,10 @@ void putlog (int type, char *chname, const char *format, ...) /* Open this logfile */ if (keep_all_logs) { snprintf(path, sizeof path, "%s%s", logs[i].filename, ct); - logs[i].f = fopen(path, "a"); - } else - logs[i].f = fopen(logs[i].filename, "a"); + if ((logs[i].f = fopen(path, "a"))) + setvbuf(logs[i].f, NULL, _IOLBF, 0); /* line buffered */ + } else if ((logs[i].f = fopen(logs[i].filename, "a"))) + setvbuf(logs[i].f, NULL, _IOLBF, 0); /* line buffered */ } if (logs[i].f != NULL) { /* Check if this is the same as the last line added to @@ -653,7 +653,6 @@ void logsuffix_change(char *s) } for (i = 0; i < max_logs; i++) { if (logs[i].f) { - fflush(logs[i].f); fclose(logs[i].f); logs[i].f = NULL; } @@ -678,7 +677,6 @@ void check_logsize() if (logs[i].f) { /* write to the log before closing it huh.. */ putlog(LOG_MISC, "*", MISC_CLOGS, logs[i].filename, ss.st_size); - fflush(logs[i].f); fclose(logs[i].f); logs[i].f = NULL; } @@ -693,39 +691,6 @@ void check_logsize() } } -/* Flush the logfiles to disk - */ -void flushlogs() -{ - int i; - - /* Logs may not be initialised yet. */ - if (!logs) - return; - - /* Now also checks to see if there's a repeat message and - * displays the 'last message repeated...' stuff too - */ - for (i = 0; i < max_logs; i++) { - if (logs[i].f != NULL) { - if ((logs[i].repeats > 0) && quick_logs) { - /* Repeat.. if quicklogs used then display 'last message - * repeated x times' and reset repeats. - */ - char stamp[33]; - - strftime(stamp, sizeof(stamp) - 1, log_ts, localtime(&now)); - fprintf(logs[i].f, "%s ", stamp); - fprintf(logs[i].f, MISC_LOGREPEAT, logs[i].repeats); - /* Reset repeats */ - logs[i].repeats = 0; - } - fflush(logs[i].f); - } - } -} - - /* * String substitution functions */ diff --git a/src/proto.h b/src/proto.h index e1e0868ac..463a087d6 100644 --- a/src/proto.h +++ b/src/proto.h @@ -228,7 +228,6 @@ void debug_mem_to_dcc(int); int egg_strcatn(char *, const char *, size_t); int my_strcpy(char *, char *); void putlog(int type, char *chname, const char *format, ...) ATTRIBUTE_FORMAT(printf,3,4); -void flushlogs(void); void check_logsize(void); void splitc(char *, char *, char); void splitcn(char *, char *, char, size_t); diff --git a/src/tcl.c b/src/tcl.c index db0d50d71..fe9b7eedf 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -87,7 +87,6 @@ int allow_dk_cmds = 1; int must_be_owner = 1; int quiet_reject = 1; int max_socks = 100; -int quick_logs = 0; int par_telnet_flood = 1; int quiet_save = 0; int strtot = 0; @@ -480,7 +479,6 @@ static tcl_ints def_tcl_ints[] = { {"max-socks", &max_socks, 0}, {"max-logs", &max_logs, 0}, {"max-logsize", &max_logsize, 0}, - {"quick-logs", &quick_logs, 0}, {"raw-log", &raw_log, 1}, {"protect-telnet", &protect_telnet, 0}, {"dcc-sanitycheck", &dcc_sanitycheck, 0}, From 9fc0ae9e6e9fe971ead30c85f79d7a9251e39bc2 Mon Sep 17 00:00:00 2001 From: Geo Date: Mon, 15 Jan 2024 09:34:55 -0500 Subject: [PATCH 236/320] change py init from Isolated to Python --- src/mod/python.mod/python.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/python.mod/python.c b/src/mod/python.mod/python.c index 814fde8ec..60b3a052f 100644 --- a/src/mod/python.mod/python.c +++ b/src/mod/python.mod/python.c @@ -63,7 +63,7 @@ static void init_python() { putlog(LOG_MISC, "*", "Python: Python version %d is lower than 3.8, not loading Python module", PY_VERSION_HEX); return; } - PyConfig_InitIsolatedConfig(&config); + PyConfig_InitPythonConfig(&config); config.install_signal_handlers = 0; config.parse_argv = 0; status = PyConfig_SetBytesString(&config, &config.program_name, argv0); @@ -160,4 +160,4 @@ char *python_start(Function *global_funcs) add_builtins(H_dcc, mydcc); add_tcl_commands(my_tcl_cmds); return NULL; -} \ No newline at end of file +} From 8751ce59532a349591df6282fe0d225673c1f9fa Mon Sep 17 00:00:00 2001 From: Geo Date: Wed, 17 Jan 2024 19:56:15 -0500 Subject: [PATCH 237/320] Switch autoscripts to GitHub --- scripts/autoscripts.tcl | 47 +++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/scripts/autoscripts.tcl b/scripts/autoscripts.tcl index 2c0e8306d..ef6e4bc9d 100644 --- a/scripts/autoscripts.tcl +++ b/scripts/autoscripts.tcl @@ -78,7 +78,7 @@ proc send_http {url type} { catch {set req [http::geturl $url -binary 1 -channel $fs]} error close $fs } else { - catch {set req [http::geturl $url -timeout 10000]} error + catch {set req [http::geturl $url -headers [dict create "User-Agent" "Mozilla/5.0"] -timeout 10000]} error } set status [http::status $req] if {$status != "ok"} { @@ -334,14 +334,18 @@ proc egg_set {idx script setting value} { # For future eggheads- 100 is the maximum WP supports without doing pagination proc egg_remote {idx} { global cmdtxt + global eggdir putdcc $idx "* Retrieving script list, please wait..." - set jsondata [send_http "https://www.eggheads.org/wp-json/wp/v2/media?mime_type=application\/x-gzip&orderby=slug&per_page=100&order=asc" 0] + send_http "https://raw.githubusercontent.com/eggheads/autoscripts/master/manifest" 1 + set fp [open $eggdir/manifest r] + set jsondata [read $fp] + close $fp set datadict [json::json2dict $jsondata] putdcc $idx "Scripts available for download:" putdcc $idx "-------------------------------" foreach scriptentry $datadict { - regsub -all {<[^>]+>} [dict get $scriptentry caption rendered] "" scriptcap - putdcc $idx "* [format "%-16s %s" [dict get $scriptentry slug] [string trim $scriptcap "\n"]]" +# regsub -all {<[^>]+>} [dict get $scriptentry caption rendered] "" scriptcap + putdcc $idx "* [format "%-16s %s" [dict get $scriptentry name] [dict get $scriptentry description]]" } putdcc $idx "\n" putdcc $idx "* Type 'fetch ' to download a script" @@ -369,15 +373,14 @@ proc egg_update {idx tgtscript} { set found 0 readjsonfile - set jsondata [send_http "https://www.eggheads.org/wp-json/wp/v2/media?mime_type=application\/x-gzip&orderby=slug&per_page=100&order=asc" 0] - set jsondata [send_http "https://www.eggheads.org/wp-content/uploads/2023/05/asman.json" 0] + set jsondata [send_http "https://raw.githubusercontent.com/eggheads/autoscripts/master/manifest" 0] set datadict [json::json2dict $jsondata] foreach localscript $jsondict { foreach remotescript $datadict { if {[string equal -nocase [dict get $remotescript name] [dict get $localscript name]]} { - if { ([dict get $remotescript minor] > [dict get $localscript version_minor] && - [dict get $remotescript major] >= [dict get $localscript version_major]) || - ([dict get $remotescript major] > [dict get $localscript version_major]) } { + if { ([dict get $remotescript version_minor] > [dict get $localscript version_minor] && + [dict get $remotescript version_major] >= [dict get $localscript version_major]) || + ([dict get $remotescript version_major] > [dict get $localscript version_major]) } { ## If we're looking for a specific script, suppress other found messages if {[string equal -nocase $tgtscript ""]} { putdcc $idx "* [dict get $localscript name] has an update available." @@ -452,24 +455,28 @@ proc egg_fetch {idx script} { putidx $idx "$cmdtxt" return } -### CHECK IF IT IS ON SITE FIRST putdcc $idx "* Downloading, please wait..." - set jsondata [send_http "https://www.eggheads.org/wp-json/wp/v2/media?mime_type=application\/x-gzip" 0] + set jsondata [send_http "https://api.github.com/repos/eggheads/autoscripts/contents/packages" 0] set datadict [json::json2dict $jsondata] foreach scriptentry $datadict { - if {[string match $script [dict get $scriptentry slug]]} { - send_http [dict get $scriptentry source_url] 1 - file mkdir $eggdir/[dict get $scriptentry slug] - exec tar -zxf $eggdir/[dict get $scriptentry slug].tgz -C $eggdir/[dict get $scriptentry slug] - file delete $eggdir/[dict get $scriptentry slug].tgz - putdcc $idx "* [dict get $scriptentry slug] downloaded." - putdcc $idx "* Use 'config [dict get $scriptentry slug]' to configure and then 'load [dict get $scriptentry slug]' to load." - putidx $idx "$cmdtxt" - readjsonfile + if {[string match ${script}.tgz [dict get $scriptentry name]]} { + send_http "[dict get $scriptentry download_url]" 1 + putdcc $idx "* [dict get $scriptentry name] downloaded." + exec tar -zxf $eggdir/[dict get $scriptentry name] -C $eggdir + if {[file exists $eggdir/$script]} { + file delete $eggdir/[dict get $scriptentry name] + putdcc $idx "* [dict get $scriptentry name] extracted." + putdcc $idx "* Use 'config $script' to configure and then 'load $script' to load." + putidx $idx "$cmdtxt" + readjsonfile + } else { + putdcc $idx "* ERROR: [dict get $scriptentry name] not found. Cannot continue." + } } } } + proc egg_clean {idx script} { global cmdtxt global eggdir From c0f9afe8470dbff9cf303b717ad2fe6294e9a567 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 20 Jan 2024 10:01:08 -0500 Subject: [PATCH 238/320] Add internal bind values to docs Fixes: #1446 --- doc/html/tutorials/module.html | 80 ++++++++++++- doc/sphinx_source/modules/internals.rst | 147 +++++++++++++++++------- doc/sphinx_source/tutorials/module.rst | 6 +- 3 files changed, 185 insertions(+), 48 deletions(-) diff --git a/doc/html/tutorials/module.html b/doc/html/tutorials/module.html index 097ce753d..89463216a 100644 --- a/doc/html/tutorials/module.html +++ b/doc/html/tutorials/module.html @@ -234,10 +234,9 @@

      Adding a Tcl Commandreturn TCL_ERROR; } } - -A few notes on this example. BADARGS is a macro that checks the input provided to the Tcl command. The first argument BADARGS accepts is the minimum number of parameters the Tcl command must accept (including the command itself). The second argument is the maximum number of parameters that BADARGS will accept. The third argument is the help text that will be displayed if these boundaries are exceeded. For example, BADARGS(2, 4, " name ?date? ?place?") requires at least one argument to be passed, and a maximum of three arguments. Eggdrop code style is to enclose optional arguments between qusetion marks in the help text.

      +

      A few notes on this example. BADARGS is a macro that checks the input provided to the Tcl command. The first argument BADARGS accepts is the minimum number of parameters the Tcl command must accept (including the command itself). The second argument is the maximum number of parameters that BADARGS will accept. The third argument is the help text that will be displayed if these boundaries are exceeded. For example, BADARGS(2, 4, “ name ?date? ?place?”) requires at least one argument to be passed, and a maximum of three arguments. Eggdrop code style is to enclose optional arguments between qusetion marks in the help text.

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

      static tcl_cmds mytcl[] = {
         {"echome",           tcl_echome},
      @@ -302,7 +301,7 @@ 

      Defining bind 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:

      +

      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,7 +320,80 @@ 

      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 (?)

      +
      diff --git a/doc/sphinx_source/modules/internals.rst b/doc/sphinx_source/modules/internals.rst index 5e026a391..2d7d7c16a 100644 --- a/doc/sphinx_source/modules/internals.rst +++ b/doc/sphinx_source/modules/internals.rst @@ -9,10 +9,19 @@ It already exists and is suitable to illustrate the details of bind handling in Note: All code snippets are altered for brevity and simplicity, see original source code for the full and current versions. -Bind Table Creation -------------------- +General Workflow To Create a New Bind +------------------------------------- + +To create a new type of bind, there are generally three steps. First, you must add the new bind type to the `Bind Table`_. Once you have registered the bind type with the bind table, you must create a `C Function`_ that will be called to perform the functionality you wish to occur when the bind is triggered. Finally, once the C code supporting the new bind has been finished, the new `Tcl Binding`_ is ready to be used in a Tcl script. + +.. _Bind Table: -The bind table is added by calling, either at module initialization or startup:: +Adding a New Bind Type to the Bind Table +---------------------------------------- + +The bind is added to the bind table is by calling, either at module initialization or startup + +.. code-block:: C /* Global symbol, available to other C files with * extern p_tcl_bind_list H_dcc; @@ -31,40 +40,28 @@ What the :code:`C handler` does is explained later, because a lot happens before :code:`H_dcc` can be exported from core and imported into modules as any other variable or function. That should be explained in a separate document. +.. _HT_STACKABLE: + Stackable Binds: HT_STACKABLE ------------------------------ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -:code:`HT_STACKABLE` means that multiple binds can exist for the same mask. -:: +:code:`HT_STACKABLE` means that multiple binds can exist for the same mask. An example of what happens when NOT using this flag shown in the code block below. + +.. code-block:: Tcl bind dcc - test proc1; # not stackable bind dcc - test proc2; # overwrites the first one, only proc2 will be called -It does not automatically call multiple binds that match, see later in the `Triggering any Bind`_ section for details. - -Tcl Binding ------------ - -After the bind table is created with :code:`add_bind_table`, Tcl procs can already be registered to this bind by calling:: - - bind dcc -|- test myproc - proc myproc {args} { - putlog "myproc was called, argument list: '[join $args ',']'" - return 0 - } +To enable this feature, you must set the second argument to ``add_bind_table()`` with ``HT_STACKABLE``. Using ``HT_STACKABLE`` does not automatically call all the binds that match, see the bind flags listed in `Triggering any Bind`_ section for details on the partner flags ``BIND_STACKABLE`` and ``BIND_WANTRET`` used in ``check_tcl_bind()``. -Of course it is not clear so far: +.. _C Function: -* If flags :code:`-|-` matter for this bind at all and what they are checked against -* If channel flags have a meaning or global/bot only -* What :code:`test` is matched against to see if the bind should trigger -* Which arguments :code:`myproc` receives, the example just accepts all arguments +Adding Bind Functionality +------------------------- -Triggering the Bind -------------------- +A C function must created that will be called when the bind is triggered. Importantly, the function is designed to accept specific arguments passed by Tcl. -To trigger the bind and call it with the desired arguments, a function is created. -:: +.. code-block:: C 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 }; @@ -92,10 +89,34 @@ This shows which arguments the callbacks in Tcl get: The call to :code:`check_tcl_dcc` can be found in the DCC parsing in `src/dcc.c`. +Using the Bind in Tcl +--------------------- + +After the bind table is created with :code:`add_bind_table`, Tcl procs can already be registered to this bind by calling + +.. code-block:: Tcl + + bind dcc -|- test myproc + proc myproc {args} { + putlog "myproc was called, argument list: '[join $args ',']'" + return 0 + } + +Of course it is not clear so far: + +* If flags :code:`-|-` matter for this bind at all and what they are checked against +* If channel flags have a meaning or global/bot only +* What :code:`test` is matched against to see if the bind should trigger +* Which arguments :code:`myproc` receives, the example just accepts all arguments + +.. _triggering_any_bind: + Triggering any Bind ------------------- -`check_tcl_bind` is used by all binds and does the following:: +`check_tcl_bind` is used by all binds and does the following + +.. code-block:: C /* Generic function to call one/all matching binds * @param[in] tcl_bind_list_t *tl Bind table (e.g. H_dcc) @@ -125,15 +146,54 @@ Triggering any Bind return x; } -The supplied flags to :code:`check_tcl_bind` in `check_tcl_dcc` are what defines how matching is performed. - -In the case of a DCC bind we had: - -* Matchtype :code:`MATCH_PARTIAL`: Prefix-Matching if the command can be uniquely identified (e.g. dcc .help calls .help) -* Additional flag :code:`BIND_USE_ATTR`: Flags are checked -* Additional flag :code:`BIND_HAS_BUILTINS`: Something with flag matching, unsure - -For details on the available match types (wildcard matching, exact matching, etc.) see :code:`src/tclegg.h`. Additional flags are also described there as well as the return codes of :code:`check_tcl_bind` (e.g. :code:`BIND_NOMATCH`). +Bind Flags +^^^^^^^^^^ + +The last argument to :code:`check_tcl_bind` in `check_tcl_dcc` sets additional configurations for the bind. These are the allowed 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 matched against the triggering value as a wildcarded value | ++-------------------+-------------------------------------------------------------------------------------------------------------------------------+ +| MATCH_MODE | Check if the triggering value matches 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 5 " 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 one mask to be re-used to call multiple Tcl proc. Must be used with HT_STACKABLE_ | ++-------------------+-------------------------------------------------------------------------------------------------------------------------------+ +| 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 Return Values +^^^^^^^^^^^^^^^^^^ +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. + ++----------------+--------------------------------------------------------------------------------------------------------------+ +| **Value** | **Description** | ++----------------+--------------------------------------------------------------------------------------------------------------+ +| BIND_NOMATCH | The bind was not triggered due to not meeting the criteria set for the bind | ++----------------+--------------------------------------------------------------------------------------------------------------+ +| BIND_AMBIGUOUS | The triggering action matched multiple non-stackable binds | ++----------------+--------------------------------------------------------------------------------------------------------------+ +| 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 (?) | ++----------------+--------------------------------------------------------------------------------------------------------------+ Note: For a bind type to be stackable it needs to be registered with :code:`HT_STACKABLE` AND :code:`check_tcl_bind` must be called with :code:`BIND_STACKABLE`. @@ -141,7 +201,8 @@ C Binding --------- To create a C function that is called by the bind, Eggdrop provides the :code:`add_builtins` function. -:: + +.. code-block:: C /* Add a list of C function callbacks to a bind * @param[in] tcl_bind_list_t * the bind type (e.g. H_dcc) @@ -178,7 +239,9 @@ Now we can actually look at the C function handler for dcc as an example and wha C Handler --------- -The example handler for DCC looks as follows:: +The example handler for DCC looks as follows + +.. code-block:: C /* 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[]) { @@ -209,13 +272,15 @@ The example handler for DCC looks as follows:: This is finally the part where we see the arguments a C function gets for a DCC bind as opposed to a Tcl proc. -code:`F(dcc[idx].user, idx, argv[3])`: +:code:`F(dcc[idx].user, idx, argv[3])`: * User information as struct userrec * * IDX as int * The 3rd string argument from the Tcl call to \*dcc:cmd_boot, which was :code:`$_dcc3` which was :code:`args` to :code:`check_tcl_dcc` which was everything after the dcc command -So this is how we register C callbacks for binds with the correct arguments:: +So this is how we register C callbacks for binds with the correct arguments + +.. code-block:: C /* We know the return value is ignored because the return value of F * in builtin_dcc is ignored, so it can be void, but for other binds diff --git a/doc/sphinx_source/tutorials/module.rst b/doc/sphinx_source/tutorials/module.rst index 532b70d16..42c30b76d 100644 --- a/doc/sphinx_source/tutorials/module.rst +++ b/doc/sphinx_source/tutorials/module.rst @@ -138,7 +138,7 @@ Eggdrop uses the Tcl C API library to interact with the Tcl interpreter. Learnin } } - 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. +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:: @@ -208,7 +208,7 @@ Like before, BADARGS still checks that the number of arguments passed is correct 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:: +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); @@ -227,7 +227,7 @@ To call the bind, Eggdrop coding style it to name that function "check_tcl_bindn return (x == BIND_EXEC_LOG); } -Now that we have encountered a condition that triggers the bind, we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with check_tcl_bind(), called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options. +Now that we have encountered a condition that triggers the bind type (in code by calling ``check_tcl_woobie()`` ), we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with ``check_tcl_bind()``, called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options. We can configure how we want to check the triggering action against the bind, and we can further use the return value from ``check_tcl_bind()`` to take additional action by Eggdrop. You can read more about the specific calues used in ``check_tcl_bind`` in :ref:`triggering_any_bind` Exporting the Bind ------------------ From 26aa8cb68cd23f9c3d0b23cb7459d781f163edd1 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 20 Jan 2024 10:03:31 -0500 Subject: [PATCH 239/320] Properly report channel bans in .bans Found by: @wilkowy Patch by: Geo Fixes: #1297 Prior to this patch, .bans was inconsistent. With a console of '*', Eggdrop only reported channels bans of the first channel in the channel record, and .bans #channel didn't report the bans on the requested channel. --- src/mod/channels.mod/userchan.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/mod/channels.mod/userchan.c b/src/mod/channels.mod/userchan.c index 4960b42fc..12d5c3202 100644 --- a/src/mod/channels.mod/userchan.c +++ b/src/mod/channels.mod/userchan.c @@ -752,7 +752,7 @@ static void display_invite(int idx, int number, maskrec *invite, static void tell_bans(int idx, int show_inact, char *match) { int k = 1; - char *chname; + char *chname = NULL; struct chanset_t *chan = NULL; maskrec *u; @@ -788,7 +788,16 @@ static void tell_bans(int idx, int show_inact, char *match) } else display_ban(idx, k++, u, chan, show_inact); } - if (chan) { + for (chan = chanset; chan; chan = chan->next) { + /* Show a channel's bans if: + * - the console is set to * + * - the console is set to this channel + * - we're matching a mask + * - this channel was specifically requested in .bans + */ + if ( (!strcmp(dcc[idx].u.chat->con_chan, "*")) || + (!strcmp(dcc[idx].u.chat->con_chan, chan->dname) && (!chname || match[0])) || + (chname && !strcasecmp(chname, chan->dname)) ) { if (show_inact) dprintf(idx, "%s %s: (! = %s, * = %s)\n", BANS_BYCHANNEL, chan->dname, MODES_NOTACTIVE2, MODES_NOTBYBOT); @@ -801,6 +810,9 @@ static void tell_bans(int idx, int show_inact, char *match) (wild_match(match, u->desc)) || (wild_match(match, u->user))) display_ban(idx, k, u, chan, 1); k++; + } else if (chname && !strcasecmp(chname, chan->dname)) { + display_ban(idx, k, u, chan, 0); + k++; } else display_ban(idx, k++, u, chan, show_inact); } @@ -831,6 +843,7 @@ static void tell_bans(int idx, int show_inact, char *match) } } } + } } if (k == 1) dprintf(idx, "(There are no bans, permanent or otherwise.)\n"); From 05377ac00e8c8e2e1f0e41d3b0e723999d9f8884 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 20 Jan 2024 10:08:01 -0500 Subject: [PATCH 240/320] Add userhost-in-names capability (#1374) Patch by: Geo Fixes #1188 This updates channel records with hostmasks received from the userhost-in-names capability, and nothing more. It also adds the isupport_get_prefixchars() function to get valid prefixchars from the 005 message, which we can use in other areas of the codebase now. --- doc/sphinx_source/using/ircv3.rst | 10 ++++- src/mod/irc.mod/chan.c | 62 ++++++++++++++++++++++++++++++- src/mod/server.mod/isupport.c | 12 ++++++ src/mod/server.mod/server.c | 3 +- src/mod/server.mod/server.h | 5 +++ 5 files changed, 89 insertions(+), 3 deletions(-) diff --git a/doc/sphinx_source/using/ircv3.rst b/doc/sphinx_source/using/ircv3.rst index c2fff5299..8ed8e5afa 100644 --- a/doc/sphinx_source/using/ircv3.rst +++ b/doc/sphinx_source/using/ircv3.rst @@ -41,6 +41,14 @@ The following capabilities are supported by Eggdrop: * Monitor * server-time * setname + * userhost-in-names * +typing -Copyright (C) 2010 - 2024 Eggheads Development Team +------ +Errata +------ + +* Enabling echo-message will cause Eggdrop to trigger PUB/PUBM binds on its own messages (because now it can actually see them). This may cause unintentional functionality with some scripts +* Enabling userhost-in-names will cause Eggdrop's internal mechanisms to mark a channel's userlist as synch'd upon receiving the NAMES list after a join, instead of waiting for a full WHO listing. This is done because the assumption is that userhost-in-names was enabled as a response to WHO queries being disabled on a server, which prevents Eggdrop from populating its userlist. To avoid unintended functionality, it is suggested that this capability only be enabled on servers that disable WHO queries. + +Copyright (C) 2010 - 2024 Eggheads Development Team \ No newline at end of file diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index 46aa48190..dda2fe2d8 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -1214,7 +1214,7 @@ static int got354(char *from, char *msg) } return 0; } - + /* React to IRCv3 CHGHOST command. CHGHOST changes the hostname and/or * ident of the user. Format: * :geo!awesome@eggdrop.com CHGHOST tehgeo foo.io @@ -1251,6 +1251,65 @@ static int gotchghost(char *from, char *msg){ return 0; } +/* got 353: NAMES + * 353 :[+/@]nick [+/@]nick .... + * + * if userhost-in-names is enabled, nick is nick@userhost.com + * this function is added solely to handle userhost-in-names stuff, and will + * update hostnames for nicks received + */ +static int got353(char *from, char *msg) +{ + char prefixchars[64]; + char *nameptr, *chname, *uhost, *nick, *p, *host; + struct chanset_t *chan; + int i; + + if (find_capability("userhost-in-names")) { + strlcpy(prefixchars, isupport_get_prefixchars(), sizeof prefixchars); + newsplit(&msg); + newsplit(&msg); /* Get rid of =, @, or * symbol */ + chname = newsplit(&msg); + nameptr = newsplit(&msg); + fixcolon(nameptr); + while ((uhost = newsplit(&nameptr))) { + if (!strcmp(uhost, "")) { + break; + } + fixcolon(uhost); + nick = splitnick(&uhost); + /* Strip @, +, etc chars prefixed to nicks in NAMES */ + for (i = 0; prefixchars[i]; i++) { + if(nick[0] == prefixchars[i]) { + nick=nick+1; + } + } + if ((nick[0] == '+') || (nick[0] == '%')) { + nick=nick+1; + } + p = strchr(uhost, '@'); + if (p) { + *p = 0; + host = p+1; + } + chan = findchan(chname); /* See if I'm on channel */ + if (chan && host) { + /* Pretend we got a WHO and pass the info we got from NAMES */ + got352or4(chan, uhost, host, nick, "", NULL); + } + } + /* The assumption here is the user enabled userhost-in-names because WHO + * is disabled. We remove the pending flag here because we'll never get a + * a WHO to do it + */ + if (chan) { + chan->status |= CHAN_ACTIVE; + chan->status &= ~CHAN_PEND; + } + } + return 0; +} + /* React to 396 numeric (HOSTHIDDEN), sent when user mode +x (hostmasking) was * successfully set. Format: * :barjavel.freenode.net 396 BeerBot unaffiliated/geo/bot/beerbot :is now your hidden host (set by services.) @@ -2820,6 +2879,7 @@ static int gotrawt(char *from, char *msg, Tcl_Obj *tags) { static cmd_t irc_raw[] = { {"324", "", (IntFunc) got324, "irc:324"}, {"352", "", (IntFunc) got352, "irc:352"}, + {"353", "", (IntFunc) got353, "irc:353"}, {"354", "", (IntFunc) got354, "irc:354"}, {"315", "", (IntFunc) got315, "irc:315"}, {"366", "", (IntFunc) gottwitch366, "irc:t366"}, diff --git a/src/mod/server.mod/isupport.c b/src/mod/server.mod/isupport.c index 61636fc26..0ad50614f 100644 --- a/src/mod/server.mod/isupport.c +++ b/src/mod/server.mod/isupport.c @@ -509,3 +509,15 @@ void isupport_report(int idx, const char *prefix, int details) } } +static const char *isupport_get_prefixchars(void) +{ + const char *str = isupport_get("PREFIX", strlen("PREFIX")); + + if (str) { + str = strchr(str, ')'); + if (str && str[1]) { + return str + 1; + } + } + return "+%@&~"; +} diff --git a/src/mod/server.mod/server.c b/src/mod/server.mod/server.c index 907656c7f..80d0ad5f1 100644 --- a/src/mod/server.mod/server.c +++ b/src/mod/server.mod/server.c @@ -2385,7 +2385,8 @@ static Function server_table[] = { (Function) & find_capability, (Function) encode_msgtags, /* 52 - 55 */ - (Function) & H_monitor + (Function) & H_monitor, + (Function) isupport_get_prefixchars }; char *server_start(Function *global_funcs) diff --git a/src/mod/server.mod/server.h b/src/mod/server.mod/server.h index 7764c6228..ac81a5422 100644 --- a/src/mod/server.mod/server.h +++ b/src/mod/server.mod/server.h @@ -98,6 +98,11 @@ /* #define check_tcl_account NULL */ #define find_capability ((struct capability *(*)(char *))(server_funcs[50])) #define encode_msgtags ((char *(*)(Tcl_Obj *))(server_funcs[51])) +/* 52 - 55 */ +#define H_monitor (*(p_tcl_bind_list *)(server_funcs[52])) +#define isupport_get_prefixchars ((const char *(*)(void))server_funcs[53]) + + #endif /* MAKING_SERVER */ struct server_list { From 2fe13ed88d555083c73de9582d125107325ef5c3 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 20 Jan 2024 10:16:51 -0500 Subject: [PATCH 241/320] Additional internals doc tweaks --- doc/sphinx_source/modules/internals.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/sphinx_source/modules/internals.rst b/doc/sphinx_source/modules/internals.rst index 2d7d7c16a..256f96fdc 100644 --- a/doc/sphinx_source/modules/internals.rst +++ b/doc/sphinx_source/modules/internals.rst @@ -162,7 +162,8 @@ The last argument to :code:`check_tcl_bind` in `check_tcl_dcc` sets additional c +-------------------+-------------------------------------------------------------------------------------------------------------------------------+ | MATCH_MASK | Check if the bind mask is matched against the triggering value as a wildcarded value | +-------------------+-------------------------------------------------------------------------------------------------------------------------------+ -| MATCH_MODE | Check if the triggering value matches the bind mask as a wildcarded value | +| MATCH_MODE | Special mode for `bind mode` similar to `MATCH_MASK`. This uses case-insensitive matching before the first space in the mask, | +| | (the channel), and then case sensitive after the first space (the modes) | +-------------------+-------------------------------------------------------------------------------------------------------------------------------+ | MATCH_CRON | Check the triggering value against a bind mask formatted as a cron entry, ie "30 7 6 7 5 " triggers a mask for "30 7 * * * " | +-------------------+-------------------------------------------------------------------------------------------------------------------------------+ @@ -192,7 +193,8 @@ The value returned by the bind is often matched against a desired value to retur +----------------+--------------------------------------------------------------------------------------------------------------+ | 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 (?) | +| BIND_QUIT | Sentinel value to signal that quit was triggered by the target leaving the partyline or filesys area. | +| | (Virtual bind to CMD_LEAVE) | +----------------+--------------------------------------------------------------------------------------------------------------+ Note: For a bind type to be stackable it needs to be registered with :code:`HT_STACKABLE` AND :code:`check_tcl_bind` must be called with :code:`BIND_STACKABLE`. From bd2d900a4fbb885bb802b506d15a7b857d9d2e09 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 21 Jan 2024 16:24:13 +0100 Subject: [PATCH 242/320] Fix SSL_get_server_tmp_key not available Found by: Jobe --- src/tls.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tls.c b/src/tls.c index c3297f3ab..180af6b37 100644 --- a/src/tls.c +++ b/src/tls.c @@ -740,7 +740,6 @@ static void ssl_info(const SSL *ssl, int where, int ret) #endif SSL_CIPHER *cipher; int secret, processed, i; - EVP_PKEY *key; if (!(data = (ssl_appdata *) SSL_get_app_data(ssl))) return; @@ -783,11 +782,14 @@ static void ssl_info(const SSL *ssl, int where, int ret) buf[i - 1] = 0; debug1("TLS: cipher details: %s", buf); +#if OPENSSL_VERSION_NUMBER >= 0x10002000L /* 1.0.2 */ + EVP_PKEY *key; if (SSL_get_server_tmp_key((SSL *) ssl, &key)) { putlog(LOG_DEBUG, "*", "TLS: diffie–hellman ephemeral key used: %s, bits %d", OBJ_nid2sn(EVP_PKEY_id(key)), EVP_PKEY_bits(key)); EVP_PKEY_free(key); } +#endif } else if (where & SSL_CB_ALERT) { if (strcmp(SSL_alert_type_string(ret), "W") || strcmp(SSL_alert_desc_string(ret), "CN")) { From 9e0f3f1f3cf46905b334291657707dd59acd09e3 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 28 Jan 2024 09:49:17 -0500 Subject: [PATCH 243/320] any user can use .-account --- src/cmds.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmds.c b/src/cmds.c index ceb7bca49..708f5fde2 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -3317,7 +3317,7 @@ cmd_t C_dcc[] = { {"+host", "t|m", (IntFunc) cmd_pls_host, NULL}, {"+ignore", "m", (IntFunc) cmd_pls_ignore, NULL}, {"+user", "m", (IntFunc) cmd_pls_user, NULL}, - {"-account", "t|m", (IntFunc) cmd_mns_account,NULL}, + {"-account", "", (IntFunc) cmd_mns_account,NULL}, {"-bot", "t", (IntFunc) cmd_mns_user, NULL}, {"-host", "", (IntFunc) cmd_mns_host, NULL}, {"-ignore", "m", (IntFunc) cmd_mns_ignore, NULL}, From eaf2435ecd8091611f7537e3927f051a84281706 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 28 Jan 2024 09:50:15 -0500 Subject: [PATCH 244/320] Update core.help with current commands --- help/core.help | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/help/core.help b/help/core.help index 2c8d9d7bc..33b05c3db 100644 --- a/help/core.help +++ b/help/core.help @@ -7,15 +7,17 @@ DCC commands for %B, %V: %bwhoami echo strip su%b %btrace fixcodes bottree vbottree%b %bbotinfo relay -host fprint%b - %bchfinger%b + %bchfinger back note -account%b %{o|o} For ops: %baddlog console match whois%b + %bresetconsole%b %{+t} For botnet masters: %b+bot botattr chhandle chpass%b %b+host -bot link chaddr%b %bboot unlink banner dccstat%b + %b+account%b %{+m|m} For channel masters: %bchattr save backup reload%b From afbd429fb8ad593b7f453d6730de3a4668a8b6da Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 28 Jan 2024 09:53:31 -0500 Subject: [PATCH 245/320] update gendocs to create mod.python file --- misc/generatedocs | 1 + 1 file changed, 1 insertion(+) diff --git a/misc/generatedocs b/misc/generatedocs index b00e847ac..563118d3e 100755 --- a/misc/generatedocs +++ b/misc/generatedocs @@ -120,6 +120,7 @@ mv tmpdocs/ident.txt $BASEDIR/../doc/modules/mod.ident mv tmpdocs/irc.txt $BASEDIR/../doc/modules/mod.irc mv tmpdocs/notes.txt $BASEDIR/../doc/modules/mod.notes mv tmpdocs/pbkdf2.txt $BASEDIR/../doc/modules/mod.pbkdf2 +mv tmpdocs/python.txt $BASEDIR/../doc/modules/mod.python mv tmpdocs/seen.txt $BASEDIR/../doc/modules/mod.seen mv tmpdocs/server.txt $BASEDIR/../doc/modules/mod.server mv tmpdocs/share.txt $BASEDIR/../doc/modules/mod.share From b314c1e817fd8275dc6caff11f1c05a1e5bbc498 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 28 Jan 2024 10:07:57 -0500 Subject: [PATCH 246/320] initialize vars --- src/mod/irc.mod/chan.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index dda2fe2d8..0a80927e9 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -1261,8 +1261,8 @@ static int gotchghost(char *from, char *msg){ static int got353(char *from, char *msg) { char prefixchars[64]; - char *nameptr, *chname, *uhost, *nick, *p, *host; - struct chanset_t *chan; + char *nameptr, *chname, *uhost, *nick, *p, *host = NULL; + struct chanset_t *chan = NULL; int i; if (find_capability("userhost-in-names")) { From d604d82c3c2572790df91672ce0935811ec97e65 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 28 Jan 2024 10:17:10 -0500 Subject: [PATCH 247/320] doc typos --- doc/sphinx_source/modules/mod/python.rst | 4 ++-- doc/sphinx_source/tutorials/module.rst | 7 +------ 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/doc/sphinx_source/modules/mod/python.rst b/doc/sphinx_source/modules/mod/python.rst index 97500493c..55307eb6f 100644 --- a/doc/sphinx_source/modules/mod/python.rst +++ b/doc/sphinx_source/modules/mod/python.rst @@ -49,7 +49,7 @@ Tcl Commands pysource ^^^^^^^^^^^^^^^^^^^^^^^ -The ``pysource`` command is analgous to the Tcl ``source`` command, except that it loads a Python script into Eggdrop instead of a Tcl script. +The ``pysource`` command is analogous to the Tcl ``source`` command, except that it loads a Python script into Eggdrop instead of a Tcl script. ----------------------- Eggdrop Python Commands @@ -124,7 +124,7 @@ You can view examples of Python scripts in the exampleScripts folder included wi 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. + 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 usable 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. diff --git a/doc/sphinx_source/tutorials/module.rst b/doc/sphinx_source/tutorials/module.rst index 42c30b76d..efd0e6160 100644 --- a/doc/sphinx_source/tutorials/module.rst +++ b/doc/sphinx_source/tutorials/module.rst @@ -227,9 +227,4 @@ To call the bind, Eggdrop coding style is to name that function "check_tcl_bindn return (x == BIND_EXEC_LOG); } -Now that we have encountered a condition that triggers the bind type (in code by calling ``check_tcl_woobie()`` ), we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with ``check_tcl_bind()``, called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options. We can configure how we want to check the triggering action against the bind, and we can further use the return value from ``check_tcl_bind()`` to take additional action by Eggdrop. You can read more about the specific calues used in ``check_tcl_bind`` in :ref:`triggering_any_bind` - -Exporting the Bind ------------------- - -Do we need to do this? +Now that we have encountered a condition that triggers the bind type (in code by calling ``check_tcl_woobie()`` ), we need to check it against the binds the user has loaded in scripts and see if it matches those conditions. This is done with ``check_tcl_bind()``, called with the bind type, the userhost of the user, the flag record of the user if it exists, the bind arguments, and bind options. We can configure how we want to check the triggering action against the bind, and we can further use the return value from ``check_tcl_bind()`` to take additional action by Eggdrop. You can read more about the specific values used in ``check_tcl_bind`` in :ref:`triggering_any_bind` From c2b1f07ee33a55b8066a9b79f9cd2eaae14322e7 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sat, 3 Feb 2024 12:25:29 +0100 Subject: [PATCH 248/320] allow python.mod static builds --- src/mod/python.mod/Makefile.in | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/python.mod/Makefile.in b/src/mod/python.mod/Makefile.in index 6b6c4ad5d..e5b251ee9 100644 --- a/src/mod/python.mod/Makefile.in +++ b/src/mod/python.mod/Makefile.in @@ -11,6 +11,7 @@ doofus: cd ../../../ && $(MAKE) static: ../python.o + @echo "$(PYTHON_LDFLAGS)" >> ../mod.xlibs modules: ../../../python.$(MOD_EXT) From 39ade54fc4931c76cecb025a50e651783ddd5494 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 3 Feb 2024 14:21:26 -0500 Subject: [PATCH 249/320] fix sasl-mechanism name --- doc/sphinx_source/tutorials/firststeps.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/sphinx_source/tutorials/firststeps.rst b/doc/sphinx_source/tutorials/firststeps.rst index 71330a631..0d67d92fc 100644 --- a/doc/sphinx_source/tutorials/firststeps.rst +++ b/doc/sphinx_source/tutorials/firststeps.rst @@ -150,7 +150,7 @@ Simple Authentication and Security Layer (SASL) is becoming a prevalant method o * **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. -* **ECDSA-NIST256P-CHALLENGE**: To use this method, set sasl-method to 1. This method uses a public/private keypair to authenticate, so no username/password is required. Not all servers support this method. If your server does support this, you you must generate a certificate pair using:: +* **ECDSA-NIST256P-CHALLENGE**: To use this method, set sasl-mechanism to 1. This method uses a public/private keypair to authenticate, so no username/password is required. Not all servers support this method. If your server does support this, you you must generate a certificate pair using:: openssl ecparam -genkey -name prime256v1 -out eggdrop-ecdsa.pem @@ -162,7 +162,7 @@ Simple Authentication and Security Layer (SASL) is becoming a prevalant method o /msg NickServ set pubkey -* **EXTERNAL**: To use this method, set sasl-method to 2. This method allows you to use other TLS certificates to connect to the IRC server, if the IRC server supports it. An EXTERNAL authentication method usually requires you to connect to the IRC server using SSL/TLS. There are many ways to generate certificates; one such way is generating your own certificate using:: +* **EXTERNAL**: To use this method, set sasl-mechanism to 2. This method allows you to use other TLS certificates to connect to the IRC server, if the IRC server supports it. An EXTERNAL authentication method usually requires you to connect to the IRC server using SSL/TLS. There are many ways to generate certificates; one such way is generating your own certificate using:: openssl req -new -x509 -nodes -keyout eggdrop.key -out eggdrop.crt From 8c72bd35d2ec6fd7316b0be32c7ec706a4edfbda Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 3 Feb 2024 14:21:39 -0500 Subject: [PATCH 250/320] Don't load autoscripts if packages missing --- scripts/autoscripts.tcl | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/scripts/autoscripts.tcl b/scripts/autoscripts.tcl index ef6e4bc9d..43e49236e 100644 --- a/scripts/autoscripts.tcl +++ b/scripts/autoscripts.tcl @@ -1,8 +1,12 @@ -package require json -package require json::write -package require http -package require tls - +set pkgs {"json" "json::write" "http" "tls"} +foreach pkg $pkgs { + if {[catch {package require $pkg}]} { + putlog "$pkg is not installed. Autoscripts cannot load" + putlog "$pkg can be installed via your host's command line package manager" + return 1 + } +} + set asidx 0 set eggdir "autoscripts" set cmdtxt "\nEnter your command (done to exit):" From 6792f143335d8bf72411429aba241ac4bdaa2da2 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 3 Feb 2024 14:22:26 -0500 Subject: [PATCH 251/320] update UPGRADING --- doc/sphinx_source/install/upgrading.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/sphinx_source/install/upgrading.rst b/doc/sphinx_source/install/upgrading.rst index 0c1c53810..aa610ff48 100644 --- a/doc/sphinx_source/install/upgrading.rst +++ b/doc/sphinx_source/install/upgrading.rst @@ -14,15 +14,15 @@ How to Upgrade Then, simply follow the same steps you followed to install Eggdrop previously. Download the source, unzip/untar it, and run the './configure', 'make config', 'make', and 'make install' commands. Restart your Eggdrop and you will be up and running with the latest version of Eggdrop. -Must-read changes for Eggdrop v1.9 ----------------------------------- +Must-read changes for Eggdrop v1.10 +----------------------------------- 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 ^^^^^^^^^^^^^^^^^^^ -To migrate from a 1.8 to a 1.9 Eggdrop, some changes are suggested to be made in your configuration file: +To migrate from a 1.8 to a |majversion| 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. @@ -44,17 +44,17 @@ To migrate from a 1.8 to a 1.9 Eggdrop, some changes are suggested to be made in 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 ``_ +While most 3rd party modules that worked on older Eggdrop versions should still work with Eggdrop |majversion|, 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 ``_ Scripts ^^^^^^^ -All 3rd party Tcl scripts that work with Eggdrop v1.6/v1.8 should fully work with Eggdrop v1.9. +All 3rd party Tcl scripts that worked with Eggdrop versions as early as v1.6 should still fully work with Eggdrop |majversion|. 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 '+'. +In Eggdrop v1.8, Eggdrop bots would automatically attempt to upgrade any botnet link to an SSL/TLS connection. Since 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 ^^^^^^^^^^^^ From 03da52a02a2611b2e49a72ed6f3d3d8b90952d98 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 4 Feb 2024 23:24:22 -0500 Subject: [PATCH 252/320] fix autoscript filt bind --- scripts/autoscripts.tcl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/autoscripts.tcl b/scripts/autoscripts.tcl index 43e49236e..caf45fce0 100644 --- a/scripts/autoscripts.tcl +++ b/scripts/autoscripts.tcl @@ -9,7 +9,7 @@ foreach pkg $pkgs { set asidx 0 set eggdir "autoscripts" -set cmdtxt "\nEnter your command (done to exit):" +set cmdtxt "\nEnter your command ('done' to return to partyline):" set jsondict [dict create] set asmajor 1 set asminor 0 @@ -128,7 +128,7 @@ proc parse_egg {idx text} { # Check if this is the user who triggered the console if {$idx != $asidx} { - return + return $text } set args [split $text] set args [lassign $args subcmd arg1 arg2] @@ -173,6 +173,9 @@ proc egg_list {idx} { readjsonfile putdcc $idx "\nThe following scripts are available for configuration:" putdcc $idx "-------------------------------------------------------" + if {[dict size $jsondict] == 0} { + putdcc $idx "* No scripts have been downloaded" + } foreach script $jsondict { set loaded [expr {[dict get $script config loaded] == 1 ? "\[X\]" : "\[ \]"}] putdcc $idx "* $loaded [dict get $script name] (v[dict get $script version_major].[dict get $script version_minor]) - [dict get $script description]" From f29429541c121fe86a24ffed54be89168b9c07a8 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 11 Feb 2024 10:03:08 -0500 Subject: [PATCH 253/320] add check for isidentified Found by: @crazycatdevs Patch by: Geo Fixes: #1533 --- src/mod/server.mod/tclserv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/server.mod/tclserv.c b/src/mod/server.mod/tclserv.c index c8a753bd6..f54796b77 100644 --- a/src/mod/server.mod/tclserv.c +++ b/src/mod/server.mod/tclserv.c @@ -210,7 +210,7 @@ static int tcl_isidentified STDVAR { } while (chan && (thechan == NULL || thechan == chan)) { if ((m = ismember(chan, argv[1]))) { - if (strcmp(m->account, "")) { + if (strcmp(m->account, "*") && strcmp(m->account, "")) { Tcl_AppendResult(irp, "1", NULL); return TCL_OK; } From 488f07b31415e2e24053d4b584fb84eeec51c920 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 17 Feb 2024 21:04:05 -0500 Subject: [PATCH 254/320] Update FILT bind doc --- doc/sphinx_source/using/tcl-commands.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst index f18290c2b..7953dccbd 100644 --- a/doc/sphinx_source/using/tcl-commands.rst +++ b/doc/sphinx_source/using/tcl-commands.rst @@ -3282,7 +3282,7 @@ The following is a list of bind types and how they work. Below each bind type is procname - Description: party line and file system users have their text sent through filt before being processed. If the proc returns a blank string, the text is considered parsed. Otherwise, the bot will use the text returned from the proc and continue parsing that + Description: party line and file system users have their text sent through filt before being processed. 'mask' is a text mask that can contain wildcards and is used for matching text sent on the partyline. If the proc returns a blank string, the partyline texr is continued to be parsed as-is. Otherwise, the bot will instead use the text returned from the proc for continued parsing. Module: core From 36be9cd13fc77279521bd88864ab9e2ecfce7255 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 18 Feb 2024 14:54:30 +0100 Subject: [PATCH 255/320] Fix b64_ntop -lresolv detection for -fsanitize=address Found by: michaelortmann Patch by: michaelortmann --- aclocal.m4 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aclocal.m4 b/aclocal.m4 index d0924793f..ff8a0c158 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -316,7 +316,7 @@ 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_LINK_IFELSE([AC_LANG_PROGRAM([[ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include @@ -328,7 +328,7 @@ AC_DEFUN([EGG_FUNC_B64_NTOP], AC_MSG_CHECKING(for b64_ntop with -lresolv) OLD_LIBS="$LIBS" LIBS="$LIBS -lresolv" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include @@ -341,7 +341,7 @@ AC_DEFUN([EGG_FUNC_B64_NTOP], AC_MSG_CHECKING(for b64_ntop with -lnetwork) OLD_LIBS="$LIBS" LIBS="-lnetwork" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include #include #include From 5aabf4de2484b1a65bad989f89cb8bd7c9383b45 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 18 Feb 2024 14:55:28 +0100 Subject: [PATCH 256/320] Fix format string Found by: michaelortmann Patch by: michaelortmann --- src/tclhash.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tclhash.c b/src/tclhash.c index 86bd17633..5128821ba 100644 --- a/src/tclhash.c +++ b/src/tclhash.c @@ -738,7 +738,7 @@ static int trigger_bind(const char *proc, const char *param, char *mask) if(proc && proc[0] != '*') { /* proc[0] != '*' excludes internal binds */ #ifdef DEBUG_CONTEXT - snprintf(last_bind_called, sizeof last_bind_called, proc); + strlcpy(last_bind_called, proc, sizeof last_bind_called); #endif debug1("triggering bind %s", proc); r = getrusage(RUSAGE_SELF, &ru1); From 1c5ea7050352dcced69d728c2a222c72f3511be1 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 18 Feb 2024 15:00:35 +0100 Subject: [PATCH 257/320] refix format string Found by: michaelortmann Patch by: michaelortmann --- src/botmsg.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/botmsg.c b/src/botmsg.c index 3a4cb37d5..5096ec41c 100644 --- a/src/botmsg.c +++ b/src/botmsg.c @@ -755,7 +755,7 @@ int add_note(char *to, char *from, char *msg, int idx, int echo) { #define FROMLEN 40 int status, i, iaway, sock; - char *p, botf[FROMLEN + 1 + HANDLEN + 1], ss[81], ssf[81]; + char *p, botf[FROMLEN + 1 + HANDLEN + 1], ss[81], ssf[20 + 1 + sizeof botf]; struct userrec *u; /* Notes have a length limit. Note + PRIVMSG header + nick + date must @@ -786,7 +786,7 @@ int add_note(char *to, char *from, char *msg, int idx, int echo) if (strchr(from, '@')) { strcpy(botf, from); } else - sprintf(botf, "%s@%s", from, botnetnick); + snprintf(botf, sizeof botf, "%s@%s", from, botnetnick); } else strcpy(botf, botnetnick); @@ -803,7 +803,7 @@ int add_note(char *to, char *from, char *msg, int idx, int echo) dprintf(idx, "-> %s@%s: %s\n", x, p, msg); if (idx >= 0) { - sprintf(ssf, "%lu:%s", dcc[idx].sock, botf); + snprintf(ssf, sizeof ssf, "%lu:%s", dcc[idx].sock, botf); botnet_send_priv(i, ssf, x, p, "%s", msg); } else botnet_send_priv(i, botf, x, p, "%s", msg); From afef79bee7eb86e7f395fc2b38f9e6cf9a4fc269 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 18 Feb 2024 15:07:12 +0100 Subject: [PATCH 258/320] Join threads instead of detach Found by: michaelortmann Patch by: michaelortmann --- src/dns.c | 18 ++---------------- src/eggdrop.h | 1 + src/net.c | 3 +++ 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/dns.c b/src/dns.c index ab1fdbeae..2e5035b88 100644 --- a/src/dns.c +++ b/src/dns.c @@ -568,7 +568,6 @@ void *thread_dns_ipbyhost(void *arg) void core_dns_hostbyip(sockname_t *addr) { struct dns_thread_node *dtn = nmalloc(sizeof(struct dns_thread_node)); - pthread_t thread; /* only used by pthread_create(), no need to save */ pthread_attr_t attr; if (pthread_attr_init(&attr)) { @@ -577,12 +576,6 @@ void core_dns_hostbyip(sockname_t *addr) nfree(dtn); return; } - if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) { - putlog(LOG_MISC, "*", "core_dns_hostbyip(): pthread_attr_setdetachstate(): error = %s", strerror(errno)); - call_hostbyip(addr, iptostr(&addr->addr.sa), 0); - nfree(dtn); - return; - } if (pthread_mutex_init(&dtn->mutex, NULL)) fatal("ERROR: core_dns_hostbyip(): pthread_mutex_init() failed", 0); if (pipe(dtn->fildes) < 0) { @@ -592,7 +585,7 @@ void core_dns_hostbyip(sockname_t *addr) return; } memcpy(&dtn->addr, addr, sizeof *addr); - if (pthread_create(&thread, &attr, thread_dns_hostbyip, (void *) dtn)) { + if (pthread_create(&(dtn->thread_id), &attr, thread_dns_hostbyip, (void *) dtn)) { putlog(LOG_MISC, "*", "core_dns_hostbyip(): pthread_create(): error = %s", strerror(errno)); call_hostbyip(addr, iptostr(&addr->addr.sa), 0); close(dtn->fildes[0]); @@ -609,7 +602,6 @@ void core_dns_ipbyhost(char *host) { sockname_t addr; struct dns_thread_node *dtn; - pthread_t thread; /* only used by pthread_create(), no need to save */ pthread_attr_t attr; /* if addr is ip instead of host */ @@ -624,12 +616,6 @@ void core_dns_ipbyhost(char *host) nfree(dtn); return; } - if (pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED)) { - putlog(LOG_MISC, "*", "core_dns_ipbyhost(): pthread_attr_setdetachstate(): error = %s", strerror(errno)); - call_ipbyhost(host, &addr, 0); - nfree(dtn); - return; - } if (pthread_mutex_init(&dtn->mutex, NULL)) fatal("ERROR: core_dns_ipbyhost(): pthread_mutex_init() failed", 0); if (pipe(dtn->fildes) < 0) { @@ -641,7 +627,7 @@ void core_dns_ipbyhost(char *host) dtn->next = dns_thread_head->next; dns_thread_head->next = dtn; strlcpy(dtn->host, host, sizeof dtn->host); - if (pthread_create(&thread, &attr, thread_dns_ipbyhost, (void *) dtn)) { + if (pthread_create(&(dtn->thread_id), &attr, thread_dns_ipbyhost, (void *) dtn)) { putlog(LOG_MISC, "*", "core_dns_ipbyhost(): pthread_create(): error = %s", strerror(errno)); call_ipbyhost(host, &addr, 0); close(dtn->fildes[0]); diff --git a/src/eggdrop.h b/src/eggdrop.h index a7774e294..076a16252 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -751,6 +751,7 @@ enum { /* linked list instead of array because of multi threading */ struct dns_thread_node { + pthread_t thread_id; pthread_mutex_t mutex; int fildes[2]; int type; diff --git a/src/net.c b/src/net.c index 9ea150019..c8aa62cd5 100644 --- a/src/net.c +++ b/src/net.c @@ -899,6 +899,7 @@ int sockread(char *s, int *len, sock_list *slist, int slistmax, int tclonly) #ifdef EGG_TDNS int fd; struct dns_thread_node *dtn, *dtn_prev; + void *res; #endif maxfd_r = preparefdset(&fdr, slist, slistmax, tclonly, TCL_READABLE); @@ -1065,6 +1066,8 @@ int sockread(char *s, int *len, sock_list *slist, int slistmax, int tclonly) pthread_mutex_unlock(&dtn->mutex); } close(dtn->fildes[0]); + if (pthread_join(dtn->thread_id, &res)) + putlog(LOG_MISC, "*", "sockread(): pthread_join(): error = %s", strerror(errno)); dtn_prev->next = dtn->next; nfree(dtn); dtn = dtn_prev; From edd0e77d7ae3b3023cd036f9cb96e91d48e28756 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 25 Feb 2024 13:49:41 -0500 Subject: [PATCH 259/320] fix autoscript requires logic --- scripts/autoscripts.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/autoscripts.tcl b/scripts/autoscripts.tcl index caf45fce0..0e38208bd 100644 --- a/scripts/autoscripts.tcl +++ b/scripts/autoscripts.tcl @@ -173,7 +173,7 @@ proc egg_list {idx} { readjsonfile putdcc $idx "\nThe following scripts are available for configuration:" putdcc $idx "-------------------------------------------------------" - if {[dict size $jsondict] == 0} { + if {[llength $jsondict] == 0} { putdcc $idx "* No scripts have been downloaded" } foreach script $jsondict { @@ -182,7 +182,7 @@ proc egg_list {idx} { if {[dict exists $script config requires] && [string length [dict get $script config requires]]} { foreach pkg [dict get $script config requires] { if {![string equal $pkg "null"]} { - if {![lsearch -exact [package names] $pkg]} { + if {[lsearch -exact [package names] $pkg] == -1} { putdcc $idx " ( ^ Must install Tcl $pkg package on host before loading)" } } From 7b212635c574cf332d45dd4e4c78fdd39a5020f3 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 25 Feb 2024 16:40:30 -0500 Subject: [PATCH 260/320] hide autoscript manifest entry --- scripts/autoscripts.tcl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/autoscripts.tcl b/scripts/autoscripts.tcl index 0e38208bd..6bddf555e 100644 --- a/scripts/autoscripts.tcl +++ b/scripts/autoscripts.tcl @@ -352,7 +352,9 @@ proc egg_remote {idx} { putdcc $idx "-------------------------------" foreach scriptentry $datadict { # regsub -all {<[^>]+>} [dict get $scriptentry caption rendered] "" scriptcap - putdcc $idx "* [format "%-16s %s" [dict get $scriptentry name] [dict get $scriptentry description]]" + if {![string equal -nocase [dict get $scriptentry name] "autoscripts"]} { + putdcc $idx "* [format "%-16s %s" [dict get $scriptentry name] [dict get $scriptentry description]]" + } } putdcc $idx "\n" putdcc $idx "* Type 'fetch ' to download a script" From b2ca96991eb98ce910b6f6efb19e9dc5c7e736e5 Mon Sep 17 00:00:00 2001 From: Geo Date: Thu, 29 Feb 2024 21:47:46 -0500 Subject: [PATCH 261/320] uniqueify console procname Found by: DasBrain --- scripts/autoscripts.tcl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/autoscripts.tcl b/scripts/autoscripts.tcl index 6bddf555e..71bfcca2e 100644 --- a/scripts/autoscripts.tcl +++ b/scripts/autoscripts.tcl @@ -14,9 +14,9 @@ set jsondict [dict create] set asmajor 1 set asminor 0 -bind DCC n autoscript console +bind DCC n autoscript asconsole -proc console {hand idx arg} { +proc asconsole {hand idx arg} { global echostatus global oldchan global asidx From fd2662f68f510ff40697ef03d687bce04928a1f2 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 2 Mar 2024 12:36:34 -0500 Subject: [PATCH 262/320] Add userfile sharing tutorial --- doc/sphinx_source/index.rst | 3 +- .../tutorials/userfilesharing.rst | 50 +++++++++++++++++++ doc/sphinx_source/using/botnet.rst | 17 ++++--- 3 files changed, 63 insertions(+), 7 deletions(-) create mode 100644 doc/sphinx_source/tutorials/userfilesharing.rst diff --git a/doc/sphinx_source/index.rst b/doc/sphinx_source/index.rst index 44f020898..08946d5a6 100644 --- a/doc/sphinx_source/index.rst +++ b/doc/sphinx_source/index.rst @@ -78,8 +78,9 @@ The Eggheads development team can be found lurking on #eggdrop on the Libera net tutorials/setup tutorials/firststeps tutorials/tlssetup + tutorials/userfilesharing tutorials/firstscript - tutorials/module.rst + tutorials/module .. toctree:: :caption: Eggdrop Modules diff --git a/doc/sphinx_source/tutorials/userfilesharing.rst b/doc/sphinx_source/tutorials/userfilesharing.rst new file mode 100644 index 000000000..ed40c46f5 --- /dev/null +++ b/doc/sphinx_source/tutorials/userfilesharing.rst @@ -0,0 +1,50 @@ +Sharing Userfiles +================= + +One of the great features of Eggdrop is bot linking, allowing you to create your own 'botnet'. A botnet can consist of two linked bots to as many as hundreds of linked bots. If you're using an Eggdrop for channel management, the most important feature of linked bots is userfile sharing. With userfile sharing, the bots can keep their user lists, ban lists, and ignore lists in sync with one another. A botnet also has many other possible capabilities, such as allowing bots to op one another securely, and making all bots join a channel with one command. + +Linking bots can be a confusing process for first timers, but it's quite simple if you know how. The first thing you need to do is chose a hub bot. The hub is the main bot which all the other bots on the botnet (which will become leaf bots) connect to. Even if you are only using two bots, it's best to use one as a hub bot, and the other as a leaf. The hub bot should be the most reliable bot on your botnet, running on a fast, stable, and secure shell - so keep that in mind when deciding which bot will be the hub. + +Once you've decided on the hub, it's time to set up the linking. + +How to share userfiles- the super-short version +----------------------------------------------- + +(This example steps assume Eggdrop has been compiled with TLS support, and you are sharing all channels) + +On the Hub Bot +^^^^^^^^^^^^^^ + +# Ensure you know what ports your bot is listening on, this is set in the config and those ports will be used in the example below. For this example, our config looks like:: + + listen +3333/+4444 all + +# On the hub (for this example, the Hub is called Hubalicious), add the leaf bot (for this example, the Leaf is called LeifErikson) with `.+bot LeifErikson +4444/+3333 `. + +# On the hub, give the leaf bot the appropriate leaf sharing flags with `.botattr LiefErikson +gs`. + +On the Leaf Bot +^^^^^^^^^^^^^^^ + +# Ensure you know what ports your bot is listening on, this is set in the config and those ports will be used in the example below. For this example, our config looks like:: + + listen +5555/+6666 all + +# Now on the leaf, add the hub bot with `.+bot Hubalicious +6666/+5555 `. + +# On the leaf, give the hub bot the appropriate hub and sharing flags with `.botattr Hubalicious +ghp`. + +At this point, the leaf bot should attempt to connect to the hub bot within the next minute, or you can force the link connection with `.link Hubalicious`. You can also use .bottree to see your botnet structure. + +Explaining the Linking/Sharing Process +-------------------------------------- + +Eggdrop bots can talk to each other for a variety of reasons. In order for an Eggdrop to talk to another Eggdrop for anything, they must link. This is done by adding a bot record the remote bot on the hub bot (In our example above, using `.+bot LeifErikson` on Hubalicious, and using `.+bot Hubalicious` on LiefErikson). Once the bot records are added, bots can be manually connected using the `.link` command. + +In the example above, we add the +s bot flag to LiefErikson's bot record on Hubalicious to tell Hubalicious that LiefErikson is not only allowed to connect, but is authorized to download the userfiles from Hubalicious. Similarly, we add the +p bot flag to Hubalicious's bot record on LiefErikson to tell LiefErikson that Hubalicous is authorized to send userfiles to LiefErikson. The +h bot flag is added to Hubalicious's bot record on LiefErikson so tell LiefErikson that Hubalicious is the hub, and it should always try to automatically connect to Hubalicious. + +Lastly, the +g flag is used on both bot records to indicate that Hubalicious is authorized to send userfiles for all channels. This is a shortcut method to sharing all channels instead of setting the `+shared` channel setting on the hub for each channel userfile you wish the hub to share (set via .chanset), and using the `|+s #channel` bot flag for each channel userfile that the leaf is authorized to receive userfiles from the hub. As an example of channel-specific userfile sharing, you would use `.botattr LiefErikson |+s #theforest` on Hubalicious to set #theforest as a channel authorized to be shared to LiefErikson, and `chanset #theforest +shared` to tell LiefErikson to accept the channel userfile for #theforest. + +One more commonly used flag is the `+a` flag. This flag specifies an alternate hub to connect to incase the primary hub goes down. The alternate hub should be linked to hub and maintain all channel userfiles the hub maintains to ensure there is no desynchronization while the hub bot is down. Should the hub bot go down, and assuming the `+h` flag is set for the hub on a leaf, the leafbost will automatically try to reconnect to the hub every minute, even if it makes a connection with the alternate hub in the meantime. An alternate hub is added the same as a hub, except swapping out the `h` for the `a`: `.botattr AltRock +agp`. + +Now that you have a hub and leaf bot successfully connected and sharing userfiles, you can repeat the `On the Leaf Bot`_ section to add additional leafs to your hub. diff --git a/doc/sphinx_source/using/botnet.rst b/doc/sphinx_source/using/botnet.rst index 53a11046e..9ac8f7812 100644 --- a/doc/sphinx_source/using/botnet.rst +++ b/doc/sphinx_source/using/botnet.rst @@ -69,17 +69,22 @@ The following are some common terms used in this document: **Port** The telnet port is used by the bot to communicate with other bots and/or users. Note that you can define separate ports for user and bot connections. -Example bottree ---------------- +Example bottrees +---------------- :: BotA |-+BotB - `-+BotC - -BotB is linked to a master sharebot, BotA, and a slave sharebot, BotC. BotB shares passively with [receives from] BotA and shares aggressively with [sends to] BotC. - + |==BotC + |=+BotD + `--BotC + +Legend: +* -- means the bots are linked, but not sharing userfiles +* -+ means the bots are sharing userfiles +* == means the bots have an encrypted link between them, and are not sharing userfiles +* =+ means the bots have an encrypted link between them, and are sharing userfiles Bot Flags --------- From 30442cb0386afc0cc834b578b5a4189ffef0de82 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 2 Mar 2024 13:00:18 -0500 Subject: [PATCH 263/320] Check python version at compile --- m4/ax_compare_version.m4 | 177 ++++++++++++++++++++++++++++++++ m4/python.m4 | 26 +---- src/mod/python.mod/configure.ac | 41 ++++++-- 3 files changed, 217 insertions(+), 27 deletions(-) create mode 100644 m4/ax_compare_version.m4 diff --git a/m4/ax_compare_version.m4 b/m4/ax_compare_version.m4 new file mode 100644 index 000000000..ffb4997e8 --- /dev/null +++ b/m4/ax_compare_version.m4 @@ -0,0 +1,177 @@ +# =========================================================================== +# https://www.gnu.org/software/autoconf-archive/ax_compare_version.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_COMPARE_VERSION(VERSION_A, OP, VERSION_B, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# +# DESCRIPTION +# +# This macro compares two version strings. Due to the various number of +# minor-version numbers that can exist, and the fact that string +# comparisons are not compatible with numeric comparisons, this is not +# necessarily trivial to do in a autoconf script. This macro makes doing +# these comparisons easy. +# +# The six basic comparisons are available, as well as checking equality +# limited to a certain number of minor-version levels. +# +# The operator OP determines what type of comparison to do, and can be one +# of: +# +# eq - equal (test A == B) +# ne - not equal (test A != B) +# le - less than or equal (test A <= B) +# ge - greater than or equal (test A >= B) +# lt - less than (test A < B) +# gt - greater than (test A > B) +# +# Additionally, the eq and ne operator can have a number after it to limit +# the test to that number of minor versions. +# +# eq0 - equal up to the length of the shorter version +# ne0 - not equal up to the length of the shorter version +# eqN - equal up to N sub-version levels +# neN - not equal up to N sub-version levels +# +# When the condition is true, shell commands ACTION-IF-TRUE are run, +# otherwise shell commands ACTION-IF-FALSE are run. The environment +# variable 'ax_compare_version' is always set to either 'true' or 'false' +# as well. +# +# Examples: +# +# AX_COMPARE_VERSION([3.15.7],[lt],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[lt],[3.15.8]) +# +# would both be true. +# +# AX_COMPARE_VERSION([3.15.7],[eq],[3.15.8]) +# AX_COMPARE_VERSION([3.15],[gt],[3.15.8]) +# +# would both be false. +# +# AX_COMPARE_VERSION([3.15.7],[eq2],[3.15.8]) +# +# would be true because it is only comparing two minor versions. +# +# AX_COMPARE_VERSION([3.15.7],[eq0],[3.15]) +# +# would be true because it is only comparing the lesser number of minor +# versions of the two values. +# +# Note: The characters that separate the version numbers do not matter. An +# empty string is the same as version 0. OP is evaluated by autoconf, not +# configure, so must be a string, not a variable. +# +# The author would like to acknowledge Guido Draheim whose advice about +# the m4_case and m4_ifvaln functions make this macro only include the +# portions necessary to perform the specific comparison specified by the +# OP argument in the final configure script. +# +# LICENSE +# +# Copyright (c) 2008 Tim Toolan +# +# Copying and distribution of this file, with or without modification, are +# permitted in any medium without royalty provided the copyright notice +# and this notice are preserved. This file is offered as-is, without any +# warranty. + +#serial 13 + +dnl ######################################################################### +AC_DEFUN([AX_COMPARE_VERSION], [ + AC_REQUIRE([AC_PROG_AWK]) + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + AS_VAR_PUSHDEF([A],[ax_compare_version_A]) + A=`echo "$1" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + AS_VAR_PUSHDEF([B],[ax_compare_version_B]) + B=`echo "$3" | sed -e 's/\([[0-9]]*\)/Z\1Z/g' \ + -e 's/Z\([[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/Z\([[0-9]][[0-9]][[0-9]]\)Z/Z0\1Z/g' \ + -e 's/[[^0-9]]//g'` + + dnl # In the case of le, ge, lt, and gt, the strings are sorted as necessary + dnl # then the first line is used to determine if the condition is true. + dnl # The sed right after the echo is to remove any indented white space. + m4_case(m4_tolower($2), + [lt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [gt],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/false/;s/x${B}/true/;1q"` + ], + [le],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ], + [ge],[ + ax_compare_version=`echo "x$A +x$B" | sed 's/^ *//' | sort -r | sed "s/x${A}/true/;s/x${B}/false/;1q"` + ],[ + dnl Split the operator from the subversion count if present. + m4_bmatch(m4_substr($2,2), + [0],[ + # A count of zero means use the length of the shorter version. + # Determine the number of characters in A and B. + ax_compare_version_len_A=`echo "$A" | $AWK '{print(length)}'` + ax_compare_version_len_B=`echo "$B" | $AWK '{print(length)}'` + + # Set A to no more than B's length and B to no more than A's length. + A=`echo "$A" | sed "s/\(.\{$ax_compare_version_len_B\}\).*/\1/"` + B=`echo "$B" | sed "s/\(.\{$ax_compare_version_len_A\}\).*/\1/"` + ], + [[0-9]+],[ + # A count greater than zero means use only that many subversions + A=`echo "$A" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + B=`echo "$B" | sed "s/\(\([[0-9]]\{4\}\)\{m4_substr($2,2)\}\).*/\1/"` + ], + [.+],[ + AC_WARNING( + [invalid OP numeric parameter: $2]) + ],[]) + + # Pad zeros at end of numbers to make same length. + ax_compare_version_tmp_A="$A`echo $B | sed 's/./0/g'`" + B="$B`echo $A | sed 's/./0/g'`" + A="$ax_compare_version_tmp_A" + + # Check for equality or inequality as necessary. + m4_case(m4_tolower(m4_substr($2,0,2)), + [eq],[ + test "x$A" = "x$B" && ax_compare_version=true + ], + [ne],[ + test "x$A" != "x$B" && ax_compare_version=true + ],[ + AC_WARNING([invalid OP parameter: $2]) + ]) + ]) + + AS_VAR_POPDEF([A])dnl + AS_VAR_POPDEF([B])dnl + + dnl # Execute ACTION-IF-TRUE / ACTION-IF-FALSE. + if test "$ax_compare_version" = "true" ; then + m4_ifvaln([$4],[$4],[:])dnl + m4_ifvaln([$5],[else $5])dnl + fi +]) dnl AX_COMPARE_VERSION diff --git a/m4/python.m4 b/m4/python.m4 index 5409d7b6b..6b7b32359 100644 --- a/m4/python.m4 +++ b/m4/python.m4 @@ -19,33 +19,17 @@ dnl dnl EGG_PYTHON_ENABLE dnl -AC_DEFUN([EGG_PYTHON_ENABLE], -[ - AC_MSG_CHECKING([whether to compile the Python module]) - AC_ARG_ENABLE(python, - [ --enable-python enable Python support (autodetect)], - [egg_enable_python="$enableval"]) - AC_ARG_ENABLE(python, - [ --disable-python disable Python support], [egg_enable_python="$enableval"], - [egg_enable_python="autodetect"]) - - AC_MSG_RESULT([$egg_enable_python]) - AC_SUBST(egg_enable_python) -]) - dnl EGG_PYTHON_WITHCONFIG dnl AC_DEFUN(EGG_PYTHON_WITHCONFIG, [ AC_ARG_WITH(python-config, [ --with-python-config=PATH Path to python-config], [ - if test "x$enable_python" != "xno"; then - if test -d "$withval" || test -x "$withval"; then - egg_with_python_config="$withval" - else - egg_with_python_config="no" - AC_MSG_WARN([Invalid path to python-config. $withval is not a directory and not an executable.]) - fi + if test -d "$withval" || test -x "$withval"; then + egg_with_python_config="$withval" + else + egg_with_python_config="no" + AC_MSG_WARN([Invalid path to python-config. $withval is not a directory and not an executable.]) fi ]) AC_SUBST(egg_with_python_config) diff --git a/src/mod/python.mod/configure.ac b/src/mod/python.mod/configure.ac index 249d5ca46..dba914235 100644 --- a/src/mod/python.mod/configure.ac +++ b/src/mod/python.mod/configure.ac @@ -4,8 +4,9 @@ AC_PREREQ(2.69) sinclude(../eggmod.m4) builtin(include,../../../m4/python.m4) +builtin(include,../../../m4/ax_compare_version.m4) -AC_INIT([Eggdrop Python Module],[1.9.3],[bugs@eggheads.org]) +AC_INIT([Eggdrop Python Module],[1.10.0],[bugs@eggheads.org]) AC_CONFIG_SRCDIR(python.c) AC_CONFIG_AUX_DIR(../../../misc) @@ -14,7 +15,6 @@ AC_COPYRIGHT([Copyright (C) 1999 - 2024 Eggheads Development Team]) AC_REVISION([m4_esyscmd([../../../misc/getcommit])]) AC_PROG_FGREP -EGG_PYTHON_ENABLE EGG_PYTHON_WITHCONFIG python_avail="false" @@ -60,14 +60,43 @@ if test "x$python_config_bin" != "x"; then python_avail="true" fi +# Check python path +AC_ARG_VAR([PYTHON_VERSION],[The installed Python +version to use, for example '2.3'. This string +will be appended to the Python interpreter +canonical name.]) + +AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) + if test -z "$PYTHON"; then + AC_MSG_WARN([Cannot find python$PYTHON_VERSION in your system path]) + if ! $ax_python_devel_optional; then + AC_MSG_ERROR([Giving up, python development not available]) + fi + ax_python_devel_found=no + PYTHON_VERSION="" +fi + +# Check for python version + python_ver=`$PYTHON -c "import sys; \ + print(sys.version.split ()[[0]])"` + AX_COMPARE_VERSION([$python_ver],[ge],[3.8.0], [ax_check_ver="yes"], [ax_check_ver="no"]) + AC_MSG_CHECKING([$PYTHON version is >= 3.8.0]) + if test "x$ax_check_ver" = x"no"; then + python_avail="false" + AC_MSG_RESULT([no ($python_ver)]) + AC_MSG_WARN([Eggdrop requires python version 3.8.0 or higher]) + else + AC_MSG_RESULT([yes ($python_ver)]) + fi + # Disable the module if test "x$python_avail" = "xfalse"; then if test "x$egg_enable_python" != "xno"; then cat >&2 < Date: Sun, 3 Mar 2024 14:30:45 -0500 Subject: [PATCH 264/320] Update releaseprep for 1.10 --- misc/releaseprep | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/misc/releaseprep b/misc/releaseprep index de3fc5612..f51689fb3 100755 --- a/misc/releaseprep +++ b/misc/releaseprep @@ -81,8 +81,8 @@ regenerate_changelog() { if git rev-parse -q --verify release/${TRIMVERSION} > /dev/null; then INCLUDE="${INCLUDE} -i ./release/${TRIMVERSION}" fi - echo "misc/genchanges -l -e v1.8.4 $INCLUDE -v ${EGGVERSION}${EGG_RC} -r origin short > doc/Changes1.9" - misc/genchanges -l -e v1.8.4 $INCLUDE -v ${EGGVERSION}${EGG_RC} -r origin short > doc/Changes1.9 + echo "misc/genchanges -l -e v1.8.4 -e v1.9.5 $INCLUDE -v ${EGGVERSION}${EGG_RC} -r origin short > doc/Changes1.10" + misc/genchanges -l -e v1.8.4 -e v1.9.5 $INCLUDE -v ${EGGVERSION}${EGG_RC} -r origin short > doc/Changes1.10 git commit -m "Generate ChangeLog/Changes files for ${EGGVERSION}" > /dev/null if test -f ChangeLog.gz; then @@ -99,8 +99,8 @@ regenerate_changelog() { exit 1 fi git add ChangeLog.gz - git add doc/Changes1.8 - git commit -m "Generate ChangeLog/Changes files for ${EGGVERSION}${EGG_RC}" > /dev/null + git add doc/Changes1.10 + git commit -m "Generate ChangeLog/Changes files for ${EGGVERSION}${EGG_RC}" > /dev/null } change_default_make() { From 426f33f7a93ff665c9e19bb172d570224c5f3671 Mon Sep 17 00:00:00 2001 From: "ZarTek @ CREOLE" Date: Sun, 14 Apr 2024 03:33:08 +0200 Subject: [PATCH 265/320] Fix typo Patch by: ZarTek-Creole --- src/mod/python.mod/scripts/urlTitle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/python.mod/scripts/urlTitle.py b/src/mod/python.mod/scripts/urlTitle.py index 60dc6ae00..f8b498226 100644 --- a/src/mod/python.mod/scripts/urlTitle.py +++ b/src/mod/python.mod/scripts/urlTitle.py @@ -24,4 +24,4 @@ def pubGetTitle(nick, host, handle, channel, text, **kwargs): # Call binds at the end of the script, not the top- the functions must be defined! bind("pub", "*", "!title", pubGetTitle) -print('Loaded example.py') +print('Loaded urlTitle.py') From 77f8c1f6a17535faab60b56affe230352cab58ed Mon Sep 17 00:00:00 2001 From: TehPeGaSuS <25697531+TehPeGaSuS@users.noreply.github.com> Date: Sun, 5 May 2024 16:24:25 +0200 Subject: [PATCH 266/320] Update core.portuguese.lang Patch by: @TehPeGaSuS --- language/core.portuguese.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/core.portuguese.lang b/language/core.portuguese.lang index e1dd8958a..c1f9afbb6 100644 --- a/language/core.portuguese.lang +++ b/language/core.portuguese.lang @@ -431,4 +431,4 @@ Entre em ligação telnet com o bot e digite 'NEW' como o seu nick. 0xe34,Timeout em ligação de identificação 0xe35,Por favor, remova o #comentário na configuração de listen e tente novamente 0xe36,Esta porta é apenas para bots -0xe37,Esta porta é apenas para utilizadores (sem bots) +0xe37,Esta porta é apenas para utilizadores (não bots) From e9870badc4f3316cf0da44ac702cf0f22fa34684 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 16:58:31 +0200 Subject: [PATCH 267/320] Un-hardcode buffer size Co-authored-by: Michael Ortmann --- src/chanprog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chanprog.c b/src/chanprog.c index c4b679c07..6fca64736 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -407,7 +407,7 @@ void tell_settings(int idx) void reaffirm_owners() { - char *p, *q, s[121]; + char *p, *q, s[sizeof owner]; struct userrec *u; /* Please stop breaking this function. */ From 82e24bbf56cb90ca4c81a7dbf867b4bf2baab986 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:00:34 +0200 Subject: [PATCH 268/320] Fix timer drift log (#1556) Found by: SergioR Patch by: michaelortmann Broken in eggdrop 1.9.4 commit faec900 --- src/main.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index f698606a0..5a4782ef6 100644 --- a/src/main.c +++ b/src/main.c @@ -565,6 +565,7 @@ static void core_secondly() int miltime; time_t nowmins; int i; + uint64_t drift_mins; do_check_timers(&utimer); /* Secondly timers */ cnt++; @@ -595,14 +596,14 @@ static void core_secondly() /* In case for some reason more than 1 min has passed: */ while (nowmins != lastmin) { /* Timer drift, dammit */ - debug1("timer: drift (%" PRId64 " seconds)", (int64_t) (nowmins - lastmin)); + drift_mins = nowmins - lastmin; + debug2("timer: drift (%" PRId64 " minute%s)", drift_mins, drift_mins == 1 ? "" : "s"); i++; ++lastmin; call_hook(HOOK_MINUTELY); } - if (i > 1) - putlog(LOG_MISC, "*", "(!) timer drift -- spun %" PRId64 " minutes", - ((int64_t) (nowmins - lastmin)) / 60); + if (i) + putlog(LOG_MISC, "*", "(!) timer drift -- spun %i minute%s", i, i == 1 ? "" : "s"); miltime = (nowtm.tm_hour * 100) + (nowtm.tm_min); if (((int) (nowtm.tm_min / 5) * 5) == (nowtm.tm_min)) { /* 5 min */ call_hook(HOOK_5MINUTELY); From a7ba4f89924bed0d104c7040a142c9fe96d03dd2 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:01:57 +0200 Subject: [PATCH 269/320] Fix autoconf of tls action-if-not-given Found by: ZarTek-Creole Patch by: michaelortmann Fixes: #1554 --- aclocal.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aclocal.m4 b/aclocal.m4 index ff8a0c158..748fb2969 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1520,7 +1520,7 @@ AC_DEFUN([EGG_TLS_ENABLE], AC_MSG_CHECKING([whether to enable TLS support]) AC_ARG_ENABLE(tls, [ --disable-tls disable TLS support ], [tls_enabled="$enableval"], - [tls_enabled="$enableval"]) + [tls_enabled="yes"]) AC_MSG_RESULT([$tls_enabled]) ]) From c1394b8af39a8486ff254ed877b3c6005922adcc Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:42:47 +0200 Subject: [PATCH 270/320] strncpy() -> strlcpy() Patch by: michaelortmann --- src/botnet.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/botnet.c b/src/botnet.c index 88484235d..bb6b4aad3 100644 --- a/src/botnet.c +++ b/src/botnet.c @@ -174,10 +174,8 @@ int addparty(char *bot, char *nick, int chan, char flag, int sock, party = nrealloc(party, party_size * sizeof(party_t)); debug1("botnet: party size doubled to %i.", party_size); } - strncpy(party[parties].nick, nick, HANDLEN); - party[parties].nick[HANDLEN] = 0; - strncpy(party[parties].bot, bot, HANDLEN); - party[parties].bot[HANDLEN] = 0; + strlcpy(party[parties].nick, nick, HANDLEN + 1); + strlcpy(party[parties].bot, bot, HANDLEN + 1); party[parties].chan = chan; party[parties].sock = sock; party[parties].status = 0; From 34c98084889ab80c9ef967d9b479995873daaf1c Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:43:57 +0200 Subject: [PATCH 271/320] Cleanup console.mod Patch by: michaelortmann --- src/mod/console.mod/console.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/mod/console.mod/console.c b/src/mod/console.mod/console.c index d54f93751..95fa4a78b 100644 --- a/src/mod/console.mod/console.c +++ b/src/mod/console.mod/console.c @@ -25,7 +25,6 @@ #define MAKING_CONSOLE #include "src/mod/module.h" -#include #include "console.h" static Function *global = NULL; @@ -134,13 +133,12 @@ static int console_set(struct userrec *u, struct user_entry *e, void *buf) return 1; } -static int console_tcl_format(char *work, struct console_info *i) +static void console_tcl_format(char *work, struct console_info *i) { simple_sprintf(work, "%s %s %s %d %d %d", i->channel, masktype(i->conflags), stripmasktype(i->stripflags), i->echoflags, i->page, i->conchan); - return 0; } static int console_tcl_get(Tcl_Interp *irp, struct userrec *u, From f726ba8e87e3cd87d99fcf583207e40faf5fd244 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:44:22 +0200 Subject: [PATCH 272/320] Tcl_AppendResult() -> Tcl_SetResult() (#1571) Patch by: michaelortmann --- src/dns.c | 2 +- src/flags.c | 2 +- src/language.c | 6 +++--- src/mod/console.mod/console.c | 2 +- src/mod/irc.mod/tclirc.c | 2 +- src/mod/python.mod/pycmds.c | 2 +- src/mod/server.mod/tclisupport.c | 4 ++-- src/tcl.c | 6 +++--- 8 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/dns.c b/src/dns.c index 2e5035b88..d1b8042ef 100644 --- a/src/dns.c +++ b/src/dns.c @@ -726,7 +726,7 @@ static int tcl_dnslookup STDVAR tcl_dnshostbyip(&addr, argv[2], Tcl_DStringValue(¶s)); else { if (strlen(argv[1]) > 255) { - Tcl_AppendResult(irp, "hostname too long. max 255 chars.", NULL); + Tcl_SetResult(irp, "hostname too long. max 255 chars.", TCL_STATIC); return TCL_ERROR; } tcl_dnsipbyhost(argv[1], argv[2], Tcl_DStringValue(¶s)); diff --git a/src/flags.c b/src/flags.c index aea4ec9b2..b7bb0bd86 100644 --- a/src/flags.c +++ b/src/flags.c @@ -1419,7 +1419,7 @@ static int botfl_tcl_get(Tcl_Interp *interp, struct userrec *u, fr.bot = e->u.ulong; build_flags(x, &fr, NULL); - Tcl_AppendResult(interp, x, NULL); + Tcl_SetResult(interp, x, TCL_STATIC); return TCL_OK; } diff --git a/src/language.c b/src/language.c index 7056311a2..534aace7b 100644 --- a/src/language.c +++ b/src/language.c @@ -649,7 +649,7 @@ static int tcl_language STDVAR strcpy(buf, argv[1]); if (!split_lang(buf, &lang, §ion)) { - Tcl_AppendResult(irp, "Invalid parameter", NULL); + Tcl_SetResult(irp, "Invalid parameter", TCL_STATIC); nfree(buf); return TCL_ERROR; } @@ -677,7 +677,7 @@ static int tcl_mnslang STDVAR BADARGS(2, 2, " language"); if (!del_lang(argv[1])) { - Tcl_AppendResult(irp, "Language not found.", NULL); + Tcl_SetResult(irp, "Language not found.", TCL_STATIC); return TCL_ERROR; } recheck_lang_sections(); @@ -698,7 +698,7 @@ static int tcl_dellangsection STDVAR BADARGS(2, 2, " section"); if (!del_lang_section(argv[1])) { - Tcl_AppendResult(irp, "Section not found", NULL); + Tcl_SetResult(irp, "Section not found", TCL_STATIC); return TCL_ERROR; } return TCL_OK; diff --git a/src/mod/console.mod/console.c b/src/mod/console.mod/console.c index 95fa4a78b..c91d11e59 100644 --- a/src/mod/console.mod/console.c +++ b/src/mod/console.mod/console.c @@ -147,7 +147,7 @@ static int console_tcl_get(Tcl_Interp *irp, struct userrec *u, char work[1024]; console_tcl_format(work, e->u.extra); - Tcl_AppendResult(irp, work, NULL); + Tcl_SetResult(irp, work, TCL_STATIC); return TCL_OK; } diff --git a/src/mod/irc.mod/tclirc.c b/src/mod/irc.mod/tclirc.c index 52826b8e5..8f60e7f0f 100644 --- a/src/mod/irc.mod/tclirc.c +++ b/src/mod/irc.mod/tclirc.c @@ -511,7 +511,7 @@ static int tcl_accounttracking STDVAR if (current->enabled) { acctnotify = 1; } - Tcl_SetResult(irp, use_354 && extjoin && acctnotify ? "1" : "0", NULL); + Tcl_SetResult(irp, use_354 && extjoin && acctnotify ? "1" : "0", TCL_STATIC); return TCL_OK; } diff --git a/src/mod/python.mod/pycmds.c b/src/mod/python.mod/pycmds.c index 051bf7844..1e55088c4 100644 --- a/src/mod/python.mod/pycmds.c +++ b/src/mod/python.mod/pycmds.c @@ -149,7 +149,7 @@ static int tcl_call_python(ClientData cd, Tcl_Interp *irp, int objc, Tcl_Obj *co } if (!PyObject_Call(bindinfo->callback, args, NULL)) { PyErr_Print(); - Tcl_SetResult(irp, "Error calling python code", NULL); + Tcl_SetResult(irp, "Error calling python code", TCL_STATIC); return TCL_ERROR; } return TCL_OK; diff --git a/src/mod/server.mod/tclisupport.c b/src/mod/server.mod/tclisupport.c index 9dff94a65..6ac22d7b3 100644 --- a/src/mod/server.mod/tclisupport.c +++ b/src/mod/server.mod/tclisupport.c @@ -101,7 +101,7 @@ static int tcl_isupport_isset STDOBJVAR BADOBJARGS(3, 3, 2, "setting"); key = Tcl_GetStringFromObj(objv[2], &keylen); value = isupport_get(key, keylen); - Tcl_SetResult(interp, value ? "1" : "0", NULL); + Tcl_SetResult(interp, value ? "1" : "0", TCL_STATIC); return TCL_OK; } @@ -138,7 +138,7 @@ static int tcl_isupport_unset STDOBJVAR TCL_ERR_NOTSET(irp, objv[2]); } if (!data->value) { - Tcl_SetResult(interp, "no server value set, cannot unset default values, change 'set isupport-default' instead", NULL); + Tcl_SetResult(interp, "no server value set, cannot unset default values, change 'set isupport-default' instead", TCL_STATIC); return TCL_ERROR; } isupport_unset(key, keylen); diff --git a/src/tcl.c b/src/tcl.c index fe9b7eedf..9b069347f 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -1242,17 +1242,17 @@ time_t get_expire_time(Tcl_Interp * irp, const char *s) { long expire_foo = strtol(s, &endptr, 10); if (*endptr) { - Tcl_AppendResult(irp, "bogus expire time", NULL); + Tcl_SetResult(irp, "bogus expire time", TCL_STATIC); return -1; } if (expire_foo < 0) { - Tcl_AppendResult(irp, "expire time must be 0 (perm) or greater than 0 days", NULL); + Tcl_SetResult(irp, "expire time must be 0 (perm) or greater than 0 days", TCL_STATIC); return -1; } if (expire_foo == 0) return 0; if (expire_foo > (60 * 24 * 2000)) { - Tcl_AppendResult(irp, "expire time must be equal to or less than 2000 days", NULL); + Tcl_SetResult(irp, "expire time must be equal to or less than 2000 days", TCL_STATIC); return -1; } return now + 60 * expire_foo; From 7c0df73734ee7876a7676c7e99551ffba415fd3c Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:45:59 +0200 Subject: [PATCH 273/320] Add logging of user/sys times for evaluated .tcl --- src/cmds.c | 12 +++++++++++- src/tclhash.c | 15 ++++++--------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/cmds.c b/src/cmds.c index 708f5fde2..e1730507a 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -22,6 +22,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include "main.h" #include "tandem.h" #include "modules.h" @@ -2834,6 +2835,8 @@ static void cmd_page(struct userrec *u, int idx, char *par) */ static void cmd_tcl(struct userrec *u, int idx, char *msg) { + struct rusage ru1, ru2; + int r = 0; int code; char *result; Tcl_DString dstr; @@ -2842,8 +2845,15 @@ static void cmd_tcl(struct userrec *u, int idx, char *msg) dprintf(idx, "%s", MISC_NOSUCHCMD); return; } - debug1("tcl: evaluate (.tcl): %s", msg); + debug1("tcl: evaluating .tcl %s", msg); + r = getrusage(RUSAGE_SELF, &ru1); code = Tcl_GlobalEval(interp, msg); + if (!r && !getrusage(RUSAGE_SELF, &ru2)) + debug3("tcl: evaluated .tcl %s, user %.3fms sys %.3fms", msg, + (double) (ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec) / 1000 + + (double) (ru2.ru_utime.tv_sec - ru1.ru_utime.tv_sec ) * 1000, + (double) (ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec) / 1000 + + (double) (ru2.ru_stime.tv_sec - ru1.ru_stime.tv_sec ) * 1000); /* properly convert string to system encoding. */ Tcl_DStringInit(&dstr); diff --git a/src/tclhash.c b/src/tclhash.c index 5128821ba..76d170af8 100644 --- a/src/tclhash.c +++ b/src/tclhash.c @@ -744,15 +744,12 @@ static int trigger_bind(const char *proc, const char *param, char *mask) r = getrusage(RUSAGE_SELF, &ru1); } x = Tcl_VarEval(interp, proc, param, NULL); - if (proc && proc[0] != '*' && !r) { - if (!getrusage(RUSAGE_SELF, &ru2)) { - debug3("triggered bind %s, user %.3fms sys %.3fms", proc, - (double) (ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec) / 1000 + - (double) (ru2.ru_utime.tv_sec - ru1.ru_utime.tv_sec ) * 1000, - (double) (ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec) / 1000 + - (double) (ru2.ru_stime.tv_sec - ru1.ru_stime.tv_sec ) * 1000); - } - } + if (proc && proc[0] != '*' && !r && !getrusage(RUSAGE_SELF, &ru2)) + debug3("triggered bind %s, user %.3fms sys %.3fms", proc, + (double) (ru2.ru_utime.tv_usec - ru1.ru_utime.tv_usec) / 1000 + + (double) (ru2.ru_utime.tv_sec - ru1.ru_utime.tv_sec ) * 1000, + (double) (ru2.ru_stime.tv_usec - ru1.ru_stime.tv_usec) / 1000 + + (double) (ru2.ru_stime.tv_sec - ru1.ru_stime.tv_sec ) * 1000); if (x == TCL_ERROR) { /* FIXME: we really should be able to log longer errors */ From 7a11f22ada8fed47ce0747891b82e7394d2923dd Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:47:06 +0200 Subject: [PATCH 274/320] Do not call modules restart() function if null pointer Patch by: michaelortmann --- src/main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index 5a4782ef6..2b1f059d7 100644 --- a/src/main.c +++ b/src/main.c @@ -901,7 +901,10 @@ static void mainloop(int toplevel) for (p = module_list; p; p = p->next) { if (p->funcs) { startfunc = p->funcs[MODCALL_START]; - startfunc(NULL); + if (startfunc) + startfunc(NULL); + else + debug2("module: %s: %s", p->name, MOD_NOSTARTDEF); } } From 093cc36cf99582b9c57f338b2a7c695db179e82a Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:47:32 +0200 Subject: [PATCH 275/320] Enhance module status report for zlib and python (#1563) Patch by: michaelortmann --- src/main.c | 4 ++-- src/mod/compress.mod/compress.c | 2 +- src/mod/python.mod/python.c | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main.c b/src/main.c index 2b1f059d7..ae7257645 100644 --- a/src/main.c +++ b/src/main.c @@ -303,10 +303,10 @@ static void write_debug() tcl_resultstring() : "*unknown*"); /* info tclversion/patchlevel */ - dprintf(-x, "Tcl version: %s (header version %s)\n", + dprintf(-x, "Tcl version: %s (header version " TCL_PATCH_LEVEL ")\n", ((interp) && (Tcl_Eval(interp, "info patchlevel") == TCL_OK)) ? tcl_resultstring() : (Tcl_Eval(interp, "info tclversion") == TCL_OK) ? - tcl_resultstring() : "*unknown*", TCL_PATCH_LEVEL); + tcl_resultstring() : "*unknown*"); if (tcl_threaded()) dprintf(-x, "Tcl is threaded\n"); diff --git a/src/mod/compress.mod/compress.c b/src/mod/compress.mod/compress.c index e94124fed..c4a86fb76 100644 --- a/src/mod/compress.mod/compress.c +++ b/src/mod/compress.mod/compress.c @@ -396,7 +396,7 @@ static int compress_report(int idx, int details) if (details) { int size = compress_expmem(); - dprintf(idx, " zlib version %s\n", ZLIB_VERSION); + dprintf(idx, " zlib version: %s (header version " ZLIB_VERSION ")\n", zlibVersion()); dprintf(idx, " %u file%s compressed\n", compressed_files, (compressed_files != 1) ? "s" : ""); dprintf(idx, " %u file%s uncompressed\n", uncompressed_files, diff --git a/src/mod/python.mod/python.c b/src/mod/python.mod/python.c index 60b3a052f..7a4ed7fce 100644 --- a/src/mod/python.mod/python.c +++ b/src/mod/python.mod/python.c @@ -112,7 +112,8 @@ static void kill_python() { static void python_report(int idx, int details) { - // TODO + if (details) + dprintf(idx, " python version: %s (header version " PY_VERSION ")\n", Py_GetVersion()); } static char *python_close() From d7d3c0c2b0dc04a4fa31c56c6daff8ad3f37ed78 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:47:51 +0200 Subject: [PATCH 276/320] Enhance auto detection of python-config Patch by: michaelortmann --- src/mod/python.mod/configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mod/python.mod/configure.ac b/src/mod/python.mod/configure.ac index dba914235..d91c6e503 100644 --- a/src/mod/python.mod/configure.ac +++ b/src/mod/python.mod/configure.ac @@ -21,7 +21,7 @@ python_avail="false" if test "x$egg_enable_python" != "xno"; then if test "x$egg_with_python_config" = "x"; then - AC_PATH_PROGS([python_config_bin], [python3-config python-config]) + AC_PATH_PROGS([python_config_bin], [python3-config python-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config]) else if test -d "$egg_with_python_config"; then AC_MSG_NOTICE([Checking for python-config binaries in $egg_with_python_config]) From d0d075491ee0838dac6ea250f0d2263fd57a0225 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:48:27 +0200 Subject: [PATCH 277/320] Fix possible memleak from dns threads to main Patch by: michaelortmann --- src/dns.c | 22 +++++++++++++++------- src/eggdrop.h | 2 +- src/net.c | 6 ++++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/dns.c b/src/dns.c index d1b8042ef..69b3a03e5 100644 --- a/src/dns.c +++ b/src/dns.c @@ -492,6 +492,8 @@ void call_ipbyhost(char *hostn, sockname_t *ip, int ok) * is closed and the thread is ended by return. The other end will make * eggdrops mainloop select() return, read the result from the dns_thread_node * and call call_hostbyip() or call_ipbyhost(). No signal or tcl thread problem. + * + * defer debug() / putlog() from dns threads to main thread via dtn.strerror */ void *thread_dns_hostbyip(void *arg) @@ -502,8 +504,10 @@ void *thread_dns_hostbyip(void *arg) i = getnameinfo((const struct sockaddr *) &addr->addr.sa, addr->addrlen, dtn->host, sizeof dtn->host, NULL, 0, 0); - if (i) { - debug1("dns: thread_dns_hostbyip(): getnameinfo(): error = %s", gai_strerror(i)); + if (!i) + *dtn->strerror = 0; + else { + snprintf(dtn->strerror, sizeof dtn->strerror, "dns: thread_dns_hostbyip(): getnameinfo(): %s", gai_strerror(i)); #ifdef IPV6 if (addr->family == AF_INET6) inet_ntop(AF_INET6, &addr->addr.s6.sin6_addr, dtn->host, sizeof dtn->host); @@ -512,7 +516,6 @@ void *thread_dns_hostbyip(void *arg) inet_ntop(AF_INET, &addr->addr.s4.sin_addr.s_addr, dtn->host, sizeof dtn->host); } pthread_mutex_lock(&dtn->mutex); - dtn->ok = !i; close(dtn->fildes[1]); pthread_mutex_unlock(&dtn->mutex); return NULL; @@ -528,6 +531,7 @@ void *thread_dns_ipbyhost(void *arg) error = getaddrinfo(dtn->host, NULL, NULL, &res0); memset(addr, 0, sizeof *addr); if (!error) { + *dtn->strerror = 0; #ifdef IPV6 for (res = res0; res; res = res->ai_next) { if (res == res0 || res->ai_family == (pref_af ? AF_INET6 : AF_INET)) { @@ -545,21 +549,25 @@ void *thread_dns_ipbyhost(void *arg) addr->family = res->ai_family; addr->addrlen = res->ai_addrlen; memcpy(&addr->addr.sa, res->ai_addr, res->ai_addrlen); - error = 0; + error = 0; + *dtn->strerror = 0; break; } } + if (error) + snprintf(dtn->strerror, sizeof dtn->strerror, "dns: thread_dns_ipbyhost(): no ipv4"); #endif if (res0) /* The behavior of freeadrinfo(NULL) is left unspecified by RFCs * 2553 and 3493. Avoid to be compatible with all OSes. */ freeaddrinfo(res0); } else if (error == EAI_NONAME) - debug1("dns: thread_dns_ipbyhost(): getaddrinfo(): hostname %s not known", dtn->host); + snprintf(dtn->strerror, sizeof dtn->strerror, "dns: thread_dns_ipbyhost(): getaddrinfo(): not known"); + else if (error == EAI_SYSTEM) + snprintf(dtn->strerror, sizeof dtn->strerror, "dns: thread_dns_ipbyhost(): getaddrinfo(): %s: %s", gai_strerror(error), strerror(errno)); else - debug1("dns: thread_dns_ipbyhost(): getaddrinfo(): error = %s", gai_strerror(error)); + snprintf(dtn->strerror, sizeof dtn->strerror, "dns: thread_dns_ipbyhost(): getaddrinfo(): %s", gai_strerror(error)); pthread_mutex_lock(&dtn->mutex); - dtn->ok = !error; close(dtn->fildes[1]); pthread_mutex_unlock(&dtn->mutex); return NULL; diff --git a/src/eggdrop.h b/src/eggdrop.h index 076a16252..04296062d 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -757,7 +757,7 @@ struct dns_thread_node { int type; sockname_t addr; char host[256]; - int ok; + char strerror[3 * 64]; /* msg + gai_strerror() + strerror() */ struct dns_thread_node *next; }; diff --git a/src/net.c b/src/net.c index c8aa62cd5..8196d2b6e 100644 --- a/src/net.c +++ b/src/net.c @@ -1053,16 +1053,18 @@ int sockread(char *s, int *len, sock_list *slist, int slistmax, int tclonly) #ifdef EGG_TDNS dtn_prev = dns_thread_head; for (dtn = dtn_prev->next; dtn; dtn = dtn->next) { + if (*dtn->strerror) + debug2("%s: hostname %s", dtn->strerror, dtn->host); fd = dtn->fildes[0]; if (FD_ISSET(fd, &fdr)) { if (dtn->type == DTN_TYPE_HOSTBYIP) { pthread_mutex_lock(&dtn->mutex); - call_hostbyip(&dtn->addr, dtn->host, dtn->ok); + call_hostbyip(&dtn->addr, dtn->host, !*dtn->strerror); pthread_mutex_unlock(&dtn->mutex); } else { pthread_mutex_lock(&dtn->mutex); - call_ipbyhost(dtn->host, &dtn->addr, dtn->ok); + call_ipbyhost(dtn->host, &dtn->addr, !*dtn->strerror); pthread_mutex_unlock(&dtn->mutex); } close(dtn->fildes[0]); From f4eb285a41474209daeca3a4df5e084998c54807 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:49:05 +0200 Subject: [PATCH 278/320] Enhance verification of userfile perm Patch by: michaelortmann --- src/misc.c | 1 + src/tcl.c | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/misc.c b/src/misc.c index ee7ffc3d6..1c521475e 100644 --- a/src/misc.c +++ b/src/misc.c @@ -1422,6 +1422,7 @@ void make_rand_str(char *s, const int len) /* Convert an octal string into a decimal integer value. If the string * is empty or contains non-octal characters, -1 is returned. + * Deprecated, use strtol() instead. */ int oatoi(const char *octal) { diff --git a/src/tcl.c b/src/tcl.c index 9b069347f..5015fd5b5 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -183,9 +183,10 @@ static char *tcl_eggint(ClientData cdata, Tcl_Interp *irp, EGG_CONST char *name1, EGG_CONST char *name2, int flags) { - char *s, s1[40]; + char *s, s1[40], *endptr; long l; intinfo *ii = (intinfo *) cdata; + int p; if (flags & (TCL_TRACE_READS | TCL_TRACE_UNSETS)) { /* Special cases */ @@ -223,10 +224,9 @@ static char *tcl_eggint(ClientData cdata, Tcl_Interp *irp, default_uflags = fr.udef_global; } else if ((int *) ii->var == &userfile_perm) { - int p = oatoi(s); - - if (p <= 0) - return "Invalid userfile permissions"; + p = strtol(s, &endptr, 8); + if ((p < 01) || (p > 0777) || (*endptr)) + return "Invalid userfile permissions, must be octal between 01 and 0777"; userfile_perm = p; } else if ((ii->ro == 2) || ((ii->ro == 1) && protect_readonly)) return "Read-only variable"; From 077eb4ee0901970b4dcf131077c4607a4e70c2a4 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:49:28 +0200 Subject: [PATCH 279/320] Fix SERVER_NICKLEN off-by-one error Patch by: michaelortmann --- src/mod/filesys.mod/files.c | 12 ++++++------ src/mod/modvals.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/mod/filesys.mod/files.c b/src/mod/filesys.mod/files.c index f6c26edfc..edc491e3d 100644 --- a/src/mod/filesys.mod/files.c +++ b/src/mod/filesys.mod/files.c @@ -425,6 +425,12 @@ static void cmd_reget_get(int idx, char *par, int resend) long where = 0; int nicklen = NICKLEN; + if (!par[0]) { + dprintf(idx, "%s: %sget [nickname]\n", MISC_USAGE, + resend ? "re" : ""); + return; + } + what = newsplit(&par); /* Get the nick length if necessary. */ if (NICKLEN > 9) { module_entry *me = module_find("server", 1, 1); @@ -432,12 +438,6 @@ static void cmd_reget_get(int idx, char *par, int resend) if (me && me->funcs) nicklen = (*(int *)me->funcs[SERVER_NICKLEN]); } - if (!par[0]) { - dprintf(idx, "%s: %sget [nickname]\n", MISC_USAGE, - resend ? "re" : ""); - return; - } - what = newsplit(&par); if (strlen(par) > nicklen) { dprintf(idx, "%s", FILES_BADNICK); return; diff --git a/src/mod/modvals.h b/src/mod/modvals.h index 9ec2a9e18..6b955cad3 100644 --- a/src/mod/modvals.h +++ b/src/mod/modvals.h @@ -72,7 +72,7 @@ /* Server */ #define SERVER_BOTNAME 4 #define SERVER_BOTUSERHOST 5 -#define SERVER_NICKLEN 38 +#define SERVER_NICKLEN 37 /* IRC */ #define IRC_RECHECK_CHANNEL 15 #define IRC_RECHECK_CHANNEL_MODES 17 From 9ab2446f1ffa1712a7431ec135746af5d016a3af Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:49:44 +0200 Subject: [PATCH 280/320] Fix strcpy-param-overlap Patch by: michaelortmann --- src/mod/filesys.mod/filesys.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/mod/filesys.mod/filesys.c b/src/mod/filesys.mod/filesys.c index 2db7aec92..1c12721ba 100644 --- a/src/mod/filesys.mod/filesys.c +++ b/src/mod/filesys.mod/filesys.c @@ -212,11 +212,14 @@ static void dcc_files_pass(int idx, char *buf, int x) */ static int got_files_cmd(int idx, char *msg) { + const char *filt; char *code; - strcpy(msg, check_tcl_filt(idx, msg)); - if (!msg[0]) + filt = check_tcl_filt(idx, msg); + if (!filt[0]) return 1; + if (filt != msg) + strcpy(msg, filt); if (msg[0] == '.') msg++; code = newsplit(&msg); @@ -225,13 +228,17 @@ static int got_files_cmd(int idx, char *msg) static void dcc_files(int idx, char *buf, int i) { + const char*filt; + if (buf[0] && detect_dcc_flood(&dcc[idx].timeval, dcc[idx].u.file->chat, idx)) return; dcc[idx].timeval = now; - strcpy(buf, check_tcl_filt(idx, buf)); - if (!buf[0]) + filt = check_tcl_filt(idx, buf); + if (!filt[0]) return; + if (filt != buf) + strcpy(buf, filt); touch_laston(dcc[idx].user, "filearea", now); if (buf[0] == ',') { for (i = 0; i < dcc_total; i++) { From 0a389c350addd215303f811b2f2020b2f69c8413 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:50:07 +0200 Subject: [PATCH 281/320] Cleanup includes --- src/botcmd.c | 2 -- src/dcc.c | 1 - src/dccutil.c | 3 --- src/main.c | 1 - src/tclmisc.c | 1 - src/tcluser.c | 3 --- src/userrec.c | 2 -- src/users.c | 2 -- 8 files changed, 15 deletions(-) diff --git a/src/botcmd.c b/src/botcmd.c index f3440f3c7..1e14d0999 100644 --- a/src/botcmd.c +++ b/src/botcmd.c @@ -24,8 +24,6 @@ #include "main.h" #include "tandem.h" -#include "users.h" -#include "chan.h" #include "modules.h" extern char botnetnick[], ver[], admin[], network[], motdfile[]; diff --git a/src/dcc.c b/src/dcc.c index 9030f1a02..8079b84c5 100644 --- a/src/dcc.c +++ b/src/dcc.c @@ -25,7 +25,6 @@ #include "main.h" #include -#include "modules.h" #include "tandem.h" /* Includes for botnet md5 challenge/response code */ diff --git a/src/dccutil.c b/src/dccutil.c index 17b5054e9..24cb43cfd 100644 --- a/src/dccutil.c +++ b/src/dccutil.c @@ -27,9 +27,6 @@ #include #include "main.h" -#include -#include "chan.h" -#include "modules.h" #include "tandem.h" extern struct dcc_t *dcc; diff --git a/src/main.c b/src/main.c index ae7257645..8d2874f62 100644 --- a/src/main.c +++ b/src/main.c @@ -67,7 +67,6 @@ #include "version.h" #include "chan.h" #include "modules.h" -#include "tandem.h" #include "bg.h" #ifdef DEBUG /* For debug compile */ diff --git a/src/tclmisc.c b/src/tclmisc.c index ad9406809..c5db7090c 100644 --- a/src/tclmisc.c +++ b/src/tclmisc.c @@ -24,7 +24,6 @@ #include #include "main.h" #include "modules.h" -#include "tandem.h" #include "md5/md5.h" #ifdef HAVE_SYS_TIME_H diff --git a/src/tcluser.c b/src/tcluser.c index d8e51a48b..383de67f7 100644 --- a/src/tcluser.c +++ b/src/tcluser.c @@ -22,9 +22,6 @@ */ #include "main.h" -#include "users.h" -#include "chan.h" -#include "tandem.h" #include "modules.h" #include "string.h" diff --git a/src/userrec.c b/src/userrec.c index 487fd79a8..549d3ecf7 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -25,8 +25,6 @@ #include #include "main.h" -#include "users.h" -#include "chan.h" #include "modules.h" #include "tandem.h" diff --git a/src/users.c b/src/users.c index 703e344b1..2e35feb02 100644 --- a/src/users.c +++ b/src/users.c @@ -30,8 +30,6 @@ */ #include "main.h" -#include "users.h" -#include "chan.h" #include "modules.h" #include "tandem.h" From 31b43128a3e35ad9f872818dd53aac964ce09c12 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:50:42 +0200 Subject: [PATCH 282/320] Cleanup get_user_by_handle() Patch by: michaelortmann --- src/chanprog.c | 14 -------------- src/proto.h | 1 - src/userrec.c | 19 +++++++++++++++++-- src/users.h | 1 - 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/chanprog.c b/src/chanprog.c index 6fca64736..e8205f17b 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -140,20 +140,6 @@ struct userrec *check_chanlist(const char *host) return NULL; } -/* Shortcut for get_user_by_handle -- might have user record in channels - */ -struct userrec *check_chanlist_hand(const char *hand) -{ - struct chanset_t *chan; - memberlist *m; - - for (chan = chanset; chan; chan = chan->next) - for (m = chan->channel.member; m && m->nick[0]; m = m->next) - if (m->user && !strcasecmp(m->user->handle, hand)) - return m->user; - return NULL; -} - /* Clear the user pointers in the chanlists. * * Necessary when a hostmask is added/removed, a user is added or a new diff --git a/src/proto.h b/src/proto.h index 463a087d6..0d95ae488 100644 --- a/src/proto.h +++ b/src/proto.h @@ -338,7 +338,6 @@ void correct_handle(char *); int write_user(struct userrec *, FILE *, int); int write_ignores(FILE *f, int); void write_userfile(int); -struct userrec *check_dcclist_hand(char *); void touch_laston(struct userrec *, char *, time_t); void user_del_chan(char *); int check_conflags(struct flag_record *fr, int md); diff --git a/src/userrec.c b/src/userrec.c index 549d3ecf7..da5da6b42 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -159,7 +159,9 @@ int count_users(struct userrec *bu) return tot; } -struct userrec *check_dcclist_hand(char *handle) +/* Shortcut for get_user_by_handle -- might have user record in dccs + */ +static struct userrec *check_dcclist_hand(char *handle) { int i; @@ -169,6 +171,20 @@ struct userrec *check_dcclist_hand(char *handle) return NULL; } +/* Shortcut for get_user_by_handle -- might have user record in channels + */ +static struct userrec *check_chanlist_hand(const char *hand) +{ + struct chanset_t *chan; + memberlist *m; + + for (chan = chanset; chan; chan = chan->next) + for (m = chan->channel.member; m && m->nick[0]; m = m->next) + if (m->user && !strcasecmp(m->user->handle, hand)) + return m->user; + return NULL; +} + /* Search userlist for a provided account name * Returns: userrecord for user containing the account */ @@ -190,7 +206,6 @@ struct userrec *get_user_by_account(char *acct) return NULL; } - struct userrec *get_user_by_handle(struct userrec *bu, char *handle) { struct userrec *u, *ret; diff --git a/src/users.h b/src/users.h index 49f20853b..e9a451418 100644 --- a/src/users.h +++ b/src/users.h @@ -185,7 +185,6 @@ struct userrec *get_user_by_host(char *); struct userrec *get_user_by_account(char *); struct userrec *get_user_by_nick(char *); struct userrec *check_chanlist(const char *); -struct userrec *check_chanlist_hand(const char *); /* All the default userentry stuff, for code re-use */ From 0b6d61bb4ffafb33d74cf58fb5773460418bf137 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:50:58 +0200 Subject: [PATCH 283/320] Fix strcmp handle Patch by: michaelortmann --- src/mod/irc.mod/cmdsirc.c | 8 ++++---- src/mod/irc.mod/msgcmds.c | 2 +- src/mod/irc.mod/tclirc.c | 6 +++--- src/users.c | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/mod/irc.mod/cmdsirc.c b/src/mod/irc.mod/cmdsirc.c index 2491b6731..1caefe53e 100644 --- a/src/mod/irc.mod/cmdsirc.c +++ b/src/mod/irc.mod/cmdsirc.c @@ -389,7 +389,7 @@ static void cmd_halfop(struct userrec *u, int idx, char *par) egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); u2 = m->user ? m->user : get_user_by_host(s); - if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) && + if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) { dprintf(idx, "You are not a channel op on %s.\n", chan->dname); return; @@ -455,7 +455,7 @@ static void cmd_dehalfop(struct userrec *u, int idx, char *par) egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); u2 = m->user ? m->user : get_user_by_host(s); - if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) && + if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) { dprintf(idx, "You are not a channel op on %s.\n", chan->dname); return; @@ -536,7 +536,7 @@ static void cmd_voice(struct userrec *u, int idx, char *par) egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); u2 = m->user ? m->user : get_user_by_host(s); - if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) && + if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) && (!glob_voice(user) || chan_quiet(user)))) { dprintf(idx, "You are not a channel op or halfop on %s.\n", chan->dname); return; @@ -589,7 +589,7 @@ static void cmd_devoice(struct userrec *u, int idx, char *par) egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); u2 = m->user ? m->user : get_user_by_host(s); - if (!u2 || strcmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) && + if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) && (!glob_voice(user) || chan_quiet(user)))) { dprintf(idx, "You are not a channel op or halfop on %s.\n", chan->dname); return; diff --git a/src/mod/irc.mod/msgcmds.c b/src/mod/irc.mod/msgcmds.c index e8baa831e..d179ceac9 100644 --- a/src/mod/irc.mod/msgcmds.c +++ b/src/mod/irc.mod/msgcmds.c @@ -226,7 +226,7 @@ static int msg_addhost(char *nick, char *host, struct userrec *u, char *par) if (!par[0]) { if (!quiet_reject) dprintf(DP_HELP, "NOTICE %s :You must supply a hostmask\n", nick); - } else if (rfc_casecmp(u->handle, origbotname)) { + } else if (strcasecmp(u->handle, origbotname)) { /* This could be used as detection... */ if (u_pass_match(u, "-")) { if (!quiet_reject) diff --git a/src/mod/irc.mod/tclirc.c b/src/mod/irc.mod/tclirc.c index 8f60e7f0f..36b485a2a 100644 --- a/src/mod/irc.mod/tclirc.c +++ b/src/mod/irc.mod/tclirc.c @@ -369,7 +369,7 @@ static int tcl_handonchan STDVAR egg_snprintf(nuh, sizeof nuh, "%s!%s", m->nick, m->userhost); m->user = get_user_by_host(nuh); } - if (m->user && !rfc_casecmp(m->user->handle, argv[1])) { + if (m->user && !strcasecmp(m->user->handle, argv[1])) { Tcl_AppendResult(irp, "1", NULL); return TCL_OK; } @@ -1056,7 +1056,7 @@ static int tcl_hand2nicks STDVAR m->tried_getuser = 1; m->user = get_user_by_host(nuh); } - if (m->user && !rfc_casecmp(m->user->handle, argv[1])) { + if (m->user && !strcasecmp(m->user->handle, argv[1])) { /* Is the nick of the user already in the list? */ Tcl_ListObjGetElements(irp, nicks, &nicksc, &nicksv); for (i = 0; i < nicksc; i++) { @@ -1101,7 +1101,7 @@ static int tcl_hand2nick STDVAR m->tried_getuser = 1; m->user = get_user_by_host(nuh); } - if (m->user && !rfc_casecmp(m->user->handle, argv[1])) { + if (m->user && !strcasecmp(m->user->handle, argv[1])) { Tcl_AppendResult(irp, m->nick, NULL); return TCL_OK; } diff --git a/src/users.c b/src/users.c index 2e35feb02..d5c48f234 100644 --- a/src/users.c +++ b/src/users.c @@ -1031,7 +1031,7 @@ void autolink_cycle(char *start) } /* new run through the user list */ while (u && !autc) { while (u && !autc) { - if (u->flags & USER_BOT && strcmp(u->handle, botnetnick)) { /* ignore our own user record */ + if (u->flags & USER_BOT && strcasecmp(u->handle, botnetnick)) { /* ignore our own user record */ bfl = bot_flags(u); if (bfl & (BOT_HUB | BOT_ALT)) { linked = 0; From 77f36579ba320484d277b393b99b6e9904ad93f2 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:52:52 +0200 Subject: [PATCH 284/320] TCL_INTERP_DESTROYED -> Tcl_InterpDeleted() Patch by: michaelortmann --- src/net.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/net.c b/src/net.c index 8196d2b6e..3e23acb97 100644 --- a/src/net.c +++ b/src/net.c @@ -1710,8 +1710,9 @@ char *traced_myiphostname(ClientData cd, Tcl_Interp *irp, EGG_CONST char *name1, { const char *value; - if (flags & TCL_INTERP_DESTROYED) + if (Tcl_InterpDeleted(irp)) return NULL; + /* Recover trace in case of unset. */ if (flags & TCL_TRACE_DESTROYED) { Tcl_TraceVar2(irp, name1, name2, TCL_GLOBAL_ONLY|TCL_TRACE_WRITES|TCL_TRACE_UNSETS, traced_myiphostname, cd); From a9770041f147f78abe90a641f5d3ebb38f23b64f Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 5 May 2024 17:53:27 +0200 Subject: [PATCH 285/320] Cleanup includes Patch by: michaelortmann --- src/eggdrop.h | 7 ------- src/main.h | 7 +------ 2 files changed, 1 insertion(+), 13 deletions(-) diff --git a/src/eggdrop.h b/src/eggdrop.h index 04296062d..cca60c09a 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -89,13 +89,6 @@ #define PASSWORDMAX 30 /* highest value compatible to older eggdrop */ #define PASSWORDLEN PASSWORDMAX + 1 - -/* We have to generate compiler errors in a weird way since not all compilers - * support the #error preprocessor directive. */ -#ifndef STDC_HEADERS -# include "Error: Your system must have standard ANSI C headers." -#endif - #ifdef HAVE_UNISTD_H # include #endif diff --git a/src/main.h b/src/main.h index d9c3cc50d..f8f2b5032 100644 --- a/src/main.h +++ b/src/main.h @@ -57,12 +57,7 @@ # define TCL_CONST86 #endif -#ifdef HAVE_STDARG_H -# include -#else -# error "Must have stdarg.h" -#endif - +#include #include #include #include From cf3f1fbd5e6931c423269b8b4893d9aa3a092cbb Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 5 May 2024 13:33:46 -0400 Subject: [PATCH 286/320] Fix pbkdf2 bot linking Found by: @michaelortmann Patch by: @michaelortmann Fixes: Fix botnet linking issue in pbkdf2-only environment to properly access/compare PASS2 entries --- src/dcc.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/dcc.c b/src/dcc.c index 8079b84c5..3ce979ee5 100644 --- a/src/dcc.c +++ b/src/dcc.c @@ -354,10 +354,25 @@ static void dcc_bot_digest(int idx, char *challenge, char *password) dcc[idx].nick); } +static char *get_bot_pass(struct userrec *u) { + char *pass2 = get_user(&USERENTRY_PASS2, u); + char *pass = get_user(&USERENTRY_PASS, u); + if (pass2) { + if (!pass) { + pass = pass2; + if (encrypt_pass) + set_user(&USERENTRY_PASS, u, pass); + } else if (strcmp(pass2, pass) && encrypt_pass2) + pass = pass2; + } else if (pass && encrypt_pass2) + set_user(&USERENTRY_PASS2, u, pass); + return pass; +} + static void dcc_bot_new(int idx, char *buf, int x) { struct userrec *u = get_user_by_handle(userlist, dcc[idx].nick); - char *code, *pass2 = NULL, *pass = NULL; + char *code, *pass; if (raw_log) { if (!strncmp(buf, "s ", 2)) @@ -375,17 +390,7 @@ static void dcc_bot_new(int idx, char *buf, int x) /* We entered the wrong password */ putlog(LOG_BOTS, "*", DCC_BADPASS, dcc[idx].nick); else if (!strcasecmp(code, "passreq")) { - pass2 = get_user(&USERENTRY_PASS2, u); - pass = get_user(&USERENTRY_PASS, u); - if (pass2) { - if (!pass) { - pass = pass2; - if (encrypt_pass) - set_user(&USERENTRY_PASS, u, pass); - } else if (strcmp(pass2, pass) && encrypt_pass2) - pass = pass2; - } else if (pass && encrypt_pass2) - set_user(&USERENTRY_PASS2, u, pass); + pass = get_bot_pass(u); if (!pass || !strcmp(pass, "-")) { putlog(LOG_BOTS, "*", DCC_PASSREQ, dcc[idx].nick); dprintf(idx, "-\n"); @@ -595,7 +600,7 @@ static int dcc_bot_check_digest(int idx, char *remote_digest) char digest_string[33]; /* 32 for digest in hex + null */ unsigned char digest[16]; int i, ret; - char *password = get_user(&USERENTRY_PASS, dcc[idx].user); + char *password = get_bot_pass(dcc[idx].user); if (!password) return 1; From 134c18162a939634e161cf8e9568fa1b8bfc8f01 Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 5 May 2024 23:42:23 -0400 Subject: [PATCH 287/320] run autotools, makedepend --- configure | 101 +-- src/Makefile.in | 12 +- src/mod/compress.mod/configure | 2 +- src/mod/dns.mod/configure | 2 +- src/mod/python.mod/Makefile.in | 4 +- src/mod/python.mod/configure | 1107 ++++++++++++++++++-------------- 6 files changed, 703 insertions(+), 525 deletions(-) diff --git a/configure b/configure index 2f2ee20a6..2a6387317 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 1b958239. +# From configure.ac 98f8972a. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # @@ -617,7 +617,7 @@ 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 @@ -660,7 +660,6 @@ MOD_UPDIR DEST EGGVERSION egg_with_python_config -egg_enable_python SSL_LIBS SSL_INCLUDES DEBCFLGS @@ -803,7 +802,6 @@ enable_tls with_sslinc with_ssllib enable_tdns -enable_python with_python_config ' ac_precious_vars='build_alias @@ -1462,8 +1460,6 @@ Optional Features and Packages: --with-sslinc=PATH Path to OpenSSL headers --with-ssllib=PATH Path to OpenSSL libraries --disable-tdns disable threaded DNS core - --enable-python enable Python support (autodetect) - --disable-python disable Python support --with-python-config=PATH Path to python-config Some influential environment variables: @@ -1480,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 @@ -8316,6 +8313,13 @@ rm -rf conftest* # Check for b64_ntop. If we have b64_ntop, we assume b64_pton as well. { 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. */ @@ -8331,15 +8335,17 @@ b64_ntop(NULL, 0, NULL, 0); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - 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 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } @@ -8348,7 +8354,14 @@ printf "%s\n" "no" >&6; } 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 @@ -8363,15 +8376,17 @@ b64_ntop(NULL, 0, NULL, 0); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - 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" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -8381,7 +8396,14 @@ printf "%s\n" "no" >&6; } 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 @@ -8396,15 +8418,17 @@ b64_ntop(NULL, 0, NULL, 0); return 0; } _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes else $as_nop found_b64_ntop=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - 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" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -10124,7 +10148,7 @@ if test ${enable_tls+y} then : enableval=$enable_tls; tls_enabled="$enableval" else $as_nop - tls_enabled="$enableval" + tls_enabled="yes" fi @@ -10611,39 +10635,19 @@ printf "%s\n" "#define EGG_TDNS 1" >>confdefs.h # Check for Python - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile the Python module" >&5 -$as_echo_n "checking whether to compile the Python module... " >&6; } - # Check whether --enable-python was given. -if test "${enable_python+set}" = set; then : - enableval=$enable_python; egg_enable_python="$enableval" -fi - - # Check whether --enable-python was given. -if test "${enable_python+set}" = set; then : - enableval=$enable_python; egg_enable_python="$enableval" -else - egg_enable_python="autodetect" -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_enable_python" >&5 -$as_echo "$egg_enable_python" >&6; } - - +EGG_PYTHON_ENABLE # Check whether --with-python-config was given. -if test "${with_python_config+set}" = set; then : +if test ${with_python_config+y} +then : withval=$with_python_config; - if test "x$enable_python" != "xno"; then - if test -d "$withval" || test -x "$withval"; then - egg_with_python_config="$withval" - else - egg_with_python_config="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&5 -$as_echo "$as_me: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&2;} - fi + 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 @@ -11262,7 +11266,8 @@ $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"` diff --git a/src/Makefile.in b/src/Makefile.in index b6254d13c..6c6be3ac1 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -118,13 +118,12 @@ dcc.o: dcc.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ - modules.h mod/modvals.h tandem.h md5/md5.h + tandem.h md5/md5.h dccutil.o: dccutil.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ - tandem.h + compat/explicit_bzero.h compat/strlcpy.h tandem.h dns.o: dns.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ @@ -144,7 +143,7 @@ main.o: main.c ../config.h main.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ - version.h modules.h mod/modvals.h tandem.h bg.h + version.h modules.h mod/modvals.h bg.h match.o: match.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ @@ -200,13 +199,12 @@ tclmisc.o: tclmisc.c main.h ../config.h ../eggint.h ../lush.h lang.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h \ - tandem.h md5/md5.h + md5/md5.h tcluser.o: tcluser.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ compat/inet_aton.h ../src/main.h compat/snprintf.h \ - compat/explicit_bzero.h compat/strlcpy.h tandem.h modules.h \ - mod/modvals.h + compat/explicit_bzero.h compat/strlcpy.h modules.h mod/modvals.h tls.o: tls.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index e95014b1d..2c3f4c0cc 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 1b958239. +# From configure.ac 98f8972a. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 894006d91..07c7b3b57 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 1b958239. +# From configure.ac 98f8972a. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. # diff --git a/src/mod/python.mod/Makefile.in b/src/mod/python.mod/Makefile.in index e5b251ee9..be58760c3 100644 --- a/src/mod/python.mod/Makefile.in +++ b/src/mod/python.mod/Makefile.in @@ -43,5 +43,5 @@ distclean: clean ../../../src/mod/modvals.h ../../../src/tandem.h \ ../../../src/mod/irc.mod/irc.h ../../../src/mod/server.mod/server.h \ ../../../src/mod/python.mod/python.h \ - ../../../src/mod/python.mod/tclpython.c \ - ../../../src/mod/python.mod/pycmds.c + ../../../src/mod/python.mod/pycmds.c \ + ../../../src/mod/python.mod/tclpython.c diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index 532be77df..eadf4ed9c 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,12 +1,13 @@ #! /bin/sh -# From configure.ac 9fdf80a3. +# From configure.ac 98f8972a. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Eggdrop Python Module 1.9.3. +# Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. # # 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 @@ -19,14 +20,16 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +as_nop=: +if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else +else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( @@ -36,46 +39,46 @@ esac fi + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then +if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || @@ -84,13 +87,6 @@ if test "${PATH_SEPARATOR+set}" != set; then fi -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( @@ -99,8 +95,12 @@ case $0 in #(( for as_dir in $PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS @@ -112,30 +112,10 @@ if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. @@ -157,20 +137,22 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 +then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else +else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( @@ -190,42 +172,53 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +if ( set x; as_fn_ret_success y && test x = \"\$1\" ) +then : -else +else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : + if (eval "$as_required") 2>/dev/null +then : as_have_required=yes -else +else $as_nop as_have_required=no fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : -else +else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base + as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : break 2 fi fi @@ -233,14 +226,21 @@ fi esac as_found=false done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } IFS=$as_save_IFS +if $as_found +then : + +else $as_nop + if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi +fi - if test "x$CONFIG_SHELL" != x; then : + if test "x$CONFIG_SHELL" != x +then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also @@ -258,18 +258,19 @@ esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else - $as_echo "$0: Please tell bug-autoconf@gnu.org and bugs@eggheads.org + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and bugs@eggheads.org $0: about your system, including any error possibly output $0: before this message. Then install a modern shell, or $0: manually run the script under such a shell if you do @@ -297,6 +298,7 @@ as_fn_unset () } as_unset=as_fn_unset + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -314,6 +316,14 @@ as_fn_exit () as_fn_set_status $1 exit $1 } # as_fn_exit +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_mkdir_p # ------------- @@ -328,7 +338,7 @@ as_fn_mkdir_p () as_dirs= while :; do case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" @@ -337,7 +347,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | +printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -376,12 +386,13 @@ as_fn_executable_p () # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null +then : eval 'as_fn_append () { eval $1+=\$2 }' -else +else $as_nop as_fn_append () { eval $1=\$$1\$2 @@ -393,18 +404,27 @@ fi # as_fn_append # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : eval 'as_fn_arith () { as_val=$(( $* )) }' -else +else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith +# as_fn_nop +# --------- +# Do nothing but, unlike ":", preserve the value of $?. +as_fn_nop () +{ + return $? +} +as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- @@ -416,9 +436,9 @@ as_fn_error () as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi - $as_echo "$as_me: error: $2" >&2 + printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error @@ -445,7 +465,7 @@ as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | +printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q @@ -489,7 +509,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall @@ -503,6 +523,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits exit } + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) @@ -516,6 +540,13 @@ case `echo -n x` in #((((( ECHO_N='-n';; esac +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + + rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file @@ -583,20 +614,22 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='Eggdrop Python Module' PACKAGE_TARNAME='eggdrop-python-module' -PACKAGE_VERSION='1.9.3' -PACKAGE_STRING='Eggdrop Python Module 1.9.3' +PACKAGE_VERSION='1.10.0' +PACKAGE_STRING='Eggdrop Python Module 1.10.0' PACKAGE_BUGREPORT='bugs@eggheads.org' PACKAGE_URL='' ac_unique_file="python.c" ac_subst_vars='LTLIBOBJS LIBOBJS +AWK +PYTHON +PYTHON_VERSION PYTHON_LDFLAGS PYTHON_CFLAGS PYTHON_CONFIG_ARGS python_config_bin egg_with_python_config -egg_enable_python FGREP GREP target_alias @@ -641,12 +674,12 @@ SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking -enable_python with_python_config ' ac_precious_vars='build_alias host_alias -target_alias' +target_alias +PYTHON_VERSION' # Initialize some variables set by options. @@ -715,8 +748,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 ;; @@ -757,9 +788,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" @@ -783,9 +814,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" @@ -996,9 +1027,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" @@ -1012,9 +1043,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" @@ -1058,9 +1089,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}" ;; @@ -1076,7 +1107,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 @@ -1140,7 +1171,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 @@ -1197,7 +1228,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop Python Module 1.9.3 to adapt to many kinds of systems. +\`configure' configures Eggdrop Python Module 1.10.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1260,22 +1291,24 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Eggdrop Python Module 1.9.3:";; + short | recursive ) echo "Configuration of Eggdrop Python Module 1.10.0:";; esac cat <<\_ACEOF -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-python enable Python support (autodetect) - --disable-python disable Python support - Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-python-config=PATH Path to python-config +Some influential environment variables: + PYTHON_VERSION + The installed Python version to use, for example '2.3'. This + string will be appended to the Python interpreter canonical + name. + +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 . _ACEOF ac_status=$? @@ -1292,9 +1325,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/ ;; @@ -1322,7 +1355,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 @@ -1330,7 +1364,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 @@ -1339,10 +1373,10 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Eggdrop Python Module configure 1.9.3 -generated by GNU Autoconf 2.69 +Eggdrop Python Module configure 1.10.0 +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. @@ -1354,14 +1388,34 @@ fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## +ac_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Eggdrop Python Module $as_me 1.9.3, which was -generated by GNU Autoconf 2.69. Invocation command line was +It was created by Eggdrop Python Module $as_me 1.10.0, which was +generated by GNU Autoconf 2.71. Invocation command line was - $ $0 $@ + $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log @@ -1394,8 +1448,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 @@ -1430,7 +1488,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'" ;; @@ -1465,11 +1523,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 @@ -1480,8 +1540,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) ;; #( @@ -1505,7 +1565,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; ) echo - $as_echo "## ----------------- ## + printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo @@ -1513,14 +1573,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 @@ -1528,15 +1588,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 @@ -1544,8 +1604,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 && @@ -1559,63 +1619,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 @@ -1625,16 +1670,16 @@ 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 @@ -1648,12 +1693,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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) - { $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;} + { 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=: ;; ,);; *) @@ -1662,24 +1707,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 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;} + { 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 - { $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;} + { 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 - { $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;} + { 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=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *\'*) 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 @@ -1689,11 +1734,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} 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 + { 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. ## @@ -1708,44 +1754,17 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -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 - -# 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. - -{ $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 +{ 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 @@ -1753,10 +1772,15 @@ else 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 + 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" + 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 @@ -1765,13 +1789,13 @@ case `"$ac_path_GREP" --version 2>&1` in ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_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 'GREP' >> "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 @@ -1799,16 +1823,17 @@ else fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } +{ 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" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +printf %s "checking for fgrep... " >&6; } +if test ${ac_cv_path_FGREP+y} +then : + printf %s "(cached) " >&6 +else $as_nop if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else @@ -1819,10 +1844,15 @@ else 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 fgrep; do + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in fgrep + do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP @@ -1831,13 +1861,13 @@ case `"$ac_path_FGREP" --version 2>&1` in ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_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 'FGREP' >> "conftest.nl" + printf "%s\n" 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "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 @@ -1866,44 +1896,23 @@ fi fi fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +printf "%s\n" "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile the Python module" >&5 -$as_echo_n "checking whether to compile the Python module... " >&6; } - # Check whether --enable-python was given. -if test "${enable_python+set}" = set; then : - enableval=$enable_python; egg_enable_python="$enableval" -fi - - # Check whether --enable-python was given. -if test "${enable_python+set}" = set; then : - enableval=$enable_python; egg_enable_python="$enableval" -else - egg_enable_python="autodetect" -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $egg_enable_python" >&5 -$as_echo "$egg_enable_python" >&6; } - - - # Check whether --with-python-config was given. -if test "${with_python_config+set}" = set; then : +if test ${with_python_config+y} +then : withval=$with_python_config; - if test "x$enable_python" != "xno"; then - if test -d "$withval" || test -x "$withval"; then - egg_with_python_config="$withval" - else - egg_with_python_config="no" - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&5 -$as_echo "$as_me: WARNING: Invalid path to python-config. $withval is not a directory and not an executable." >&2;} - fi + 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 @@ -1915,15 +1924,16 @@ python_avail="false" if test "x$egg_enable_python" != "xno"; then if test "x$egg_with_python_config" = "x"; then - for ac_prog in python3-config python-config + for ac_prog in python3-config python-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config 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_path_python_config_bin+:} 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_path_python_config_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $python_config_bin in [\\/]* | ?:[\\/]*) ac_cv_path_python_config_bin="$python_config_bin" # Let the user override the test with a path. @@ -1933,11 +1943,15 @@ else 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 - ac_cv_path_python_config_bin="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_python_config_bin="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -1949,11 +1963,11 @@ esac fi python_config_bin=$ac_cv_path_python_config_bin if test -n "$python_config_bin"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_config_bin" >&5 -$as_echo "$python_config_bin" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $python_config_bin" >&5 +printf "%s\n" "$python_config_bin" >&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 @@ -1962,17 +1976,18 @@ done else if test -d "$egg_with_python_config"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: Checking for python-config binaries in $egg_with_python_config" >&5 -$as_echo "$as_me: Checking for python-config binaries in $egg_with_python_config" >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking for python-config binaries in $egg_with_python_config" >&5 +printf "%s\n" "$as_me: Checking for python-config binaries in $egg_with_python_config" >&6;} for ac_prog in python3-config python-config 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_path_python_config_bin+:} 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_path_python_config_bin+y} +then : + printf %s "(cached) " >&6 +else $as_nop case $python_config_bin in [\\/]* | ?:[\\/]*) ac_cv_path_python_config_bin="$python_config_bin" # Let the user override the test with a path. @@ -1982,11 +1997,15 @@ else for as_dir in $egg_with_python_config 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 - ac_cv_path_python_config_bin="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then + ac_cv_path_python_config_bin="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done @@ -1998,11 +2017,11 @@ esac fi python_config_bin=$ac_cv_path_python_config_bin if test -n "$python_config_bin"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $python_config_bin" >&5 -$as_echo "$python_config_bin" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $python_config_bin" >&5 +printf "%s\n" "$python_config_bin" >&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 @@ -2013,59 +2032,217 @@ done if test -x "$egg_with_python_config"; then python_config_bin="$egg_with_python_config" else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Specified --with-python-config=$egg_with_python_config does not exist." >&5 -$as_echo "$as_me: WARNING: Specified --with-python-config=$egg_with_python_config does not exist." >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Specified --with-python-config=$egg_with_python_config does not exist." >&5 +printf "%s\n" "$as_me: WARNING: Specified --with-python-config=$egg_with_python_config does not exist." >&2;} fi fi fi else - { $as_echo "$as_me:${as_lineno-$LINENO}: Python module disabled." >&5 -$as_echo "$as_me: Python module disabled." >&6;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Python module disabled." >&5 +printf "%s\n" "$as_me: Python module disabled." >&6;} fi if test "x$python_config_bin" != "x"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether python-config supports --embed" >&5 -$as_echo_n "checking whether python-config supports --embed... " >&6; } - if $python_config_bin --help | $FGREP -q -- --embed; then : + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether python-config supports --embed" >&5 +printf %s "checking whether python-config supports --embed... " >&6; } + if $python_config_bin --help | $FGREP -q -- --embed +then : PYTHON_CONFIG_ARGS="--embed" - { $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 +else $as_nop PYTHON_CONFIG_ARGS="" - { $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 - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python C flags" >&5 -$as_echo_n "checking for python C flags... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python C flags" >&5 +printf %s "checking for python C flags... " >&6; } PYTHON_CFLAGS=`$python_config_bin $PYTHON_CONFIG_ARGS --cflags` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CFLAGS" >&5 -$as_echo "$PYTHON_CFLAGS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CFLAGS" >&5 +printf "%s\n" "$PYTHON_CFLAGS" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for python LD flags" >&5 -$as_echo_n "checking for python LD flags... " >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python LD flags" >&5 +printf %s "checking for python LD flags... " >&6; } PYTHON_LDFLAGS=`$python_config_bin $PYTHON_CONFIG_ARGS --ldflags` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5 -$as_echo "$PYTHON_LDFLAGS" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LDFLAGS" >&5 +printf "%s\n" "$PYTHON_LDFLAGS" >&6; } python_avail="true" fi +# Check python path + + +# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args. +set dummy python$PYTHON_VERSION; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PYTHON+y} +then : + printf %s "(cached) " >&6 +else $as_nop + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + 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 + ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +printf "%s\n" "$PYTHON" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + if test -z "$PYTHON"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find python$PYTHON_VERSION in your system path" >&5 +printf "%s\n" "$as_me: WARNING: Cannot find python$PYTHON_VERSION in your system path" >&2;} + if ! $ax_python_devel_optional; then + as_fn_error $? "Giving up, python development not available" "$LINENO" 5 + fi + ax_python_devel_found=no + PYTHON_VERSION="" +fi + +# Check for python version + python_ver=`$PYTHON -c "import sys; \ + print(sys.version.split ()[0])"` + for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ 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 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + 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 + ac_cv_prog_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + # Used to indicate true or false condition + ax_compare_version=false + + # Convert the two version strings to be compared into a format that + # allows a simple string comparison. The end result is that a version + # string of the form 1.12.5-r617 will be converted to the form + # 0001001200050617. In other words, each number is zero padded to four + # digits, and non digits are removed. + + ax_compare_version_A=`echo "$python_ver" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/[^0-9]//g'` + + + ax_compare_version_B=`echo "3.8.0" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ + -e 's/[^0-9]//g'` + + + ax_compare_version=`echo "x$ax_compare_version_A +x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"` + + + + if test "$ax_compare_version" = "true" ; then + ax_check_ver="yes" + else ax_check_ver="no" + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $PYTHON version is >= 3.8.0" >&5 +printf %s "checking $PYTHON version is >= 3.8.0... " >&6; } + if test "x$ax_check_ver" = x"no"; then + python_avail="false" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no ($python_ver)" >&5 +printf "%s\n" "no ($python_ver)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Eggdrop requires python version 3.8.0 or higher" >&5 +printf "%s\n" "$as_me: WARNING: Eggdrop requires python version 3.8.0 or higher" >&2;} + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($python_ver)" >&5 +printf "%s\n" "yes ($python_ver)" >&6; } + fi + # Disable the module if test "x$python_avail" = "xfalse"; then if test "x$egg_enable_python" != "xno"; then cat >&2 <&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) ;; #( @@ -2134,15 +2311,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 @@ -2156,8 +2333,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 @@ -2210,7 +2387,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" @@ -2226,8 +2403,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 @@ -2250,14 +2427,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 ;; #( @@ -2267,46 +2446,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 || @@ -2315,13 +2494,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 #(( @@ -2330,8 +2502,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 @@ -2343,30 +2519,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] @@ -2379,13 +2535,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. @@ -2412,18 +2569,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 @@ -2435,12 +2594,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` @@ -2471,7 +2631,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 @@ -2493,6 +2653,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*) @@ -2506,6 +2670,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 @@ -2547,7 +2717,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" @@ -2556,7 +2726,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 @@ -2618,8 +2788,8 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Eggdrop Python Module $as_me 1.9.3, which was -generated by GNU Autoconf 2.69. Invocation command line was +This file was extended by Eggdrop Python Module $as_me 1.10.0, which was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -2668,19 +2838,22 @@ $config_files Report bugs to ." _ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Eggdrop Python Module config.status 1.9.3 -configured by $0, generated by GNU Autoconf 2.69, +Eggdrop Python Module config.status 1.10.0 +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." ac_pwd='$ac_pwd' srcdir='$srcdir' +AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF @@ -2712,21 +2885,21 @@ 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'" ac_need_defaults=false;; --he | --h | --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=: ;; @@ -2754,7 +2927,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 "\$@" @@ -2768,7 +2941,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 @@ -2793,7 +2966,7 @@ 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_FILES+y} || CONFIG_FILES=$config_files fi # Have a temporary directory for convenience. Make it in the build tree @@ -3021,7 +3194,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 @@ -3029,17 +3202,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 @@ -3056,7 +3229,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 @@ -3080,9 +3253,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/ ;; @@ -3135,8 +3308,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=' @@ -3178,9 +3351,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" @@ -3227,6 +3400,8 @@ 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 + + From e28a0a023fe077fbec2343f8eb494371138fcd44 Mon Sep 17 00:00:00 2001 From: Geo Date: Thu, 9 May 2024 15:12:14 -0400 Subject: [PATCH 288/320] Add IRCv3 standard-replies --- src/mod/server.mod/servmsg.c | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index 85baed7cf..952ff70bf 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -2001,6 +2001,54 @@ static int got730or1(char *from, char *msg, int code) return 0; } +/* Got IRCv3 standard-reply + * [...] + */ +static int gotstdreply(char *from, char *msgtype, char *msg) +{ + char *cmd, *code, *text; + char context[MSGMAX] = ""; + int len; + + cmd = newsplit(&msg); + code = newsplit(&msg); +/* TODO: Once this feature is better implemented, consider how to handle + * one-word descriptions that aren't technically required to have a : + */ + text = strstr(msg, " :"); + if (text) { + text++; + if (text != msg) { + len = text - msg; + snprintf(context, sizeof context, "%.*s", len, msg); + } + fixcolon(text); + } + putlog(LOG_SERV, "*", "%s: %s: Received a %s message from %s: %s", cmd, code, msgtype, from, text); + return 0; +} + +/* Got IRCv3 FAIL standard-reply */ +static int gotstdfail(char *from, char *msg) +{ + gotstdreply(from, "FAIL", msg); + return 0; +} + +/* Got IRCv3 NOTE standard-reply */ +static int gotstdnote(char *from, char *msg) +{ + gotstdreply(from, "NOTE", msg); + return 0; +} + +/* Got IRCv3 WARN standard-reply */ +static int gotstdwarn(char *from, char *msg) +{ + gotstdreply(from, "WARN", msg); + return 0; +} + /* Got 730/RPL_MONONLINE * : 730 :target[!user@host][,target[!user@host]]* */ @@ -2097,6 +2145,9 @@ static cmd_t my_raw_binds[] = { {"PING", "", (IntFunc) gotping, NULL}, {"PONG", "", (IntFunc) gotpong, NULL}, {"WALLOPS", "", (IntFunc) gotwall, NULL}, + {"FAIL", "", (IntFunc) gotstdfail, NULL}, + {"NOTE", "", (IntFunc) gotstdnote, NULL}, + {"WARN", "", (IntFunc) gotstdwarn, NULL}, {"001", "", (IntFunc) got001, NULL}, {"005", "", (IntFunc) got005, NULL}, {"303", "", (IntFunc) got303, NULL}, From 39a582cda2e587d2aa6f95028d078ab4f739ecbe Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 25 May 2024 11:46:05 -0400 Subject: [PATCH 289/320] Full account tacking (#1585) Patch by: Geo, thommey Closes: #1369 --- doc/sphinx_source/using/tcl-commands.rst | 2 +- src/chan.h | 3 +- src/chanprog.c | 45 +------ src/mod/channels.mod/userchan.c | 7 +- src/mod/irc.mod/chan.c | 151 ++++++++++++----------- src/mod/irc.mod/cmdsirc.c | 68 ++++------ src/mod/irc.mod/irc.c | 40 +++--- src/mod/irc.mod/mode.c | 31 ++--- src/mod/irc.mod/msgcmds.c | 7 +- src/mod/irc.mod/tclirc.c | 48 +++---- src/mod/module.h | 3 +- src/mod/notes.mod/notes.c | 4 +- src/mod/seen.mod/seen.c | 10 +- src/modules.c | 4 +- src/userrec.c | 61 ++++----- src/users.h | 1 + src/version.h | 4 +- 17 files changed, 200 insertions(+), 289 deletions(-) diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst index 7953dccbd..6a662052c 100644 --- a/doc/sphinx_source/using/tcl-commands.rst +++ b/doc/sphinx_source/using/tcl-commands.rst @@ -1136,7 +1136,7 @@ nick2hand [channel] Module: irc ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -account2nicks [channel] +account2nicks [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. diff --git a/src/chan.h b/src/chan.h index 19a56e5a1..d5f11257d 100644 --- a/src/chan.h +++ b/src/chan.h @@ -50,8 +50,7 @@ typedef struct memstruct { time_t split; /* in case they were just netsplit */ time_t last; /* for measuring idle time */ time_t delay; /* for delayed autoop */ - struct userrec *user; - int tried_getuser; + int tried_getuser; // TODO: use it to invalidate user cache struct memstruct *next; } memberlist; diff --git a/src/chanprog.c b/src/chanprog.c index e8205f17b..37e03d61a 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -116,30 +116,6 @@ struct chanset_t *findchan_by_dname(const char *name) return NULL; } - -/* - * "caching" functions - */ - -/* Shortcut for get_user_by_host -- might have user record in one - * of the channel caches. - */ -struct userrec *check_chanlist(const char *host) -{ - char *nick, *uhost, buf[UHOSTLEN]; - memberlist *m; - struct chanset_t *chan; - - strlcpy(buf, host, sizeof buf); - uhost = buf; - nick = splitnick(&uhost); - for (chan = chanset; chan; chan = chan->next) - for (m = chan->channel.member; m && m->nick[0]; m = m->next) - if (!rfc_casecmp(nick, m->nick) && !strcasecmp(uhost, m->userhost)) - return m->user; - return NULL; -} - /* Clear the user pointers in the chanlists. * * Necessary when a hostmask is added/removed, a user is added or a new @@ -152,13 +128,12 @@ void clear_chanlist(void) for (chan = chanset; chan; chan = chan->next) for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - m->user = NULL; m->tried_getuser = 0; } } /* Clear the user pointer of a specific nick in the chanlists. - * + * Necessary when a hostmask is added/removed, a nick changes, etc. * Does not completely invalidate the channel cache like clear_chanlist(). */ @@ -170,29 +145,11 @@ void clear_chanlist_member(const char *nick) for (chan = chanset; chan; chan = chan->next) for (m = chan->channel.member; m && m->nick[0]; m = m->next) if (!rfc_casecmp(m->nick, nick)) { - m->user = NULL; m->tried_getuser = 0; break; } } -/* If this user@host is in a channel, set it (it was null) - */ -void set_chanlist(const char *host, struct userrec *rec) -{ - char *nick, *uhost, buf[UHOSTLEN]; - memberlist *m; - struct chanset_t *chan; - - strlcpy(buf, host, sizeof buf); - uhost = buf; - nick = splitnick(&uhost); - for (chan = chanset; chan; chan = chan->next) - for (m = chan->channel.member; m && m->nick[0]; m = m->next) - if (!rfc_casecmp(nick, m->nick) && !strcasecmp(uhost, m->userhost)) - m->user = rec; -} - /* Calculate the memory we should be using */ int expmem_chanprog() diff --git a/src/mod/channels.mod/userchan.c b/src/mod/channels.mod/userchan.c index 12d5c3202..2bac2ac3a 100644 --- a/src/mod/channels.mod/userchan.c +++ b/src/mod/channels.mod/userchan.c @@ -1270,12 +1270,7 @@ static int expired_mask(struct chanset_t *chan, char *who) * present in the channel and has op. */ - if (m->user) - u = m->user; - else { - simple_sprintf(buf, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(buf); - } + u = get_user_from_member(m); /* Do not expire masks set by bots. */ if (u && u->flags & USER_BOT) return 0; diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index 0a80927e9..1d0082547 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -110,7 +110,7 @@ static void setaccount(char *nick, char *account) } else { putlog(LOG_MODES, chan->dname, "%s!%s logged in to their account %s", nick, m->userhost, account); } - check_tcl_account(m->nick, m->userhost, m->user, chan->dname, account); + check_tcl_account(m->nick, m->userhost, get_user_from_member(m), chan->dname, account); } strlcpy(m->account, account, sizeof m->account); } @@ -207,9 +207,11 @@ static void do_mask(struct chanset_t *chan, masklist *m, char *mask, char mode) /* This is a clone of detect_flood, but works for channel specificity now * and handles kick & deop as well. + * + * victim for flood-deop, account for flood-join */ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, - struct chanset_t *chan, int which, char *victim) + struct chanset_t *chan, int which, char *victim_or_account) { char h[NICKMAX+UHOSTLEN+1], ftype[12], *p; struct userrec *u; @@ -236,7 +238,16 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, if (!m && (which != FLOOD_JOIN)) return 0; - get_user_flagrec(get_user_by_host(from), &fr, chan->dname); + if (m) { + u = get_user_from_member(m); + } else { + u = victim_or_account ? get_user_by_account(victim_or_account) : NULL; + if (!u) { + u = get_user_by_host(from); + } + } + + get_user_flagrec(u, &fr, chan->dname); if (glob_bot(fr) || ((which == FLOOD_DEOP) && (glob_master(fr) || chan_master(fr)) && (glob_friend(fr) || chan_friend(fr))) || ((which == FLOOD_KICK) && (glob_master(fr) || chan_master(fr)) && @@ -307,10 +318,10 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, } /* Deop'n the same person, sillyness ;) - so just ignore it */ if (which == FLOOD_DEOP) { - if (!rfc_casecmp(chan->deopd, victim)) + if (!rfc_casecmp(chan->deopd, victim_or_account)) return 0; else - strlcpy(chan->deopd, victim, sizeof chan->deopd); + strlcpy(chan->deopd, victim_or_account, sizeof chan->deopd); } chan->floodnum[which]++; if (chan->floodnum[which] >= thr) { /* FLOOD */ @@ -320,7 +331,7 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, chan->floodwho[which][0] = 0; if (which == FLOOD_DEOP) chan->deopd[0] = 0; - u = get_user_by_host(from); + u = get_user_from_member(m); if (check_tcl_flud(floodnick, floodhost, u, ftype, chan->dname)) return 0; switch (which) { @@ -425,8 +436,7 @@ static void kick_all(struct chanset_t *chan, char *hostmask, char *comment, flushed = 0; kicknick[0] = 0; for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - sprintf(s, "%s!%s", m->nick, m->userhost); - get_user_flagrec(m->user ? m->user : get_user_by_host(s), &fr, chan->dname); + get_user_flagrec(get_user_from_member(m), &fr, chan->dname); if ((me_op(chan) || (me_halfop(chan) && !chan_hasop(m))) && match_addr(hostmask, s) && !chan_sentkick(m) && !match_my_nick(m->nick) && !chan_issplit(m) && @@ -474,10 +484,7 @@ static void refresh_ban_kick(struct chanset_t *chan, char *user, char *nick) if (match_addr(b->mask, user)) { struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; char c[512]; /* The ban comment. */ - char s[NICKMAX+UHOSTLEN+1]; - - sprintf(s, "%s!%s", m->nick, m->userhost); - get_user_flagrec(m->user ? m->user : get_user_by_host(s), &fr, + get_user_flagrec(get_user_from_member(m), &fr, chan->dname); if (!glob_friend(fr) && !chan_friend(fr)) { add_mode(chan, '-', 'o', nick); /* Guess it can't hurt. */ @@ -869,7 +876,7 @@ static void check_this_member(struct chanset_t *chan, char *nick, (me_op(chan) || (me_halfop(chan) && !chan_hasop(m)))) { check_exemptlist(chan, s); quickban(chan, m->userhost); - p = get_user(&USERENTRY_COMMENT, m->user); + p = get_user(&USERENTRY_COMMENT, get_user_from_member(m)); dprintf(DP_SERVER, "KICK %s %s :%s\n", chan->name, m->nick, p ? p : IRC_POLITEKICK); m->flags |= SENTKICK; @@ -888,8 +895,7 @@ static void check_this_user(char *hand, int delete, char *host) for (chan = chanset; chan; chan = chan->next) for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - sprintf(s, "%s!%s", m->nick, m->userhost); - u = m->user ? m->user : get_user_by_host(s); + u = get_user_from_member(m); if ((u && !strcasecmp(u->handle, hand) && delete < 2) || (!u && delete == 2 && match_addr(host, s))) { u = delete ? NULL : u; @@ -904,8 +910,8 @@ static void check_this_user(char *hand, int delete, char *host) static void recheck_channel(struct chanset_t *chan, int dobans) { memberlist *m; - char s[NICKMAX+UHOSTLEN+1]; struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; + struct userrec *u; static int stacking = 0; int stop_reset = 0; @@ -915,12 +921,8 @@ static void recheck_channel(struct chanset_t *chan, int dobans) stacking++; /* Okay, sort through who needs to be deopped. */ for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - sprintf(s, "%s!%s", m->nick, m->userhost); - if (!m->user && !m->tried_getuser) { - m->tried_getuser = 1; - m->user = get_user_by_host(s); - } - get_user_flagrec(m->user, &fr, chan->dname); + u = get_user_from_member(m); + get_user_flagrec(u, &fr, chan->dname); if (glob_bot(fr) && chan_hasop(m) && !match_my_nick(m->nick)) stop_reset = 1; /* Perhaps we were halfop and tried to halfop/kick the user earlier but @@ -1084,7 +1086,6 @@ static int got352or4(struct chanset_t *chan, char *user, char *host, simple_sprintf(m->userhost, "%s@%s", user, host); simple_sprintf(userhost, "%s!%s", nick, m->userhost); /* Combine n!u@h */ - m->user = NULL; /* No handle match (yet) */ if (match_my_nick(nick)) /* Is it me? */ strcpy(botuserhost, m->userhost); /* Yes, save my own userhost */ m->flags |= WHO_SYNCED; @@ -1115,7 +1116,6 @@ static int got352or4(struct chanset_t *chan, char *user, char *host, if (chan->need_op[0]) do_tcl("need-op", chan->need_op); } - m->user = get_user_by_host(userhost); /* Update accountname in channel records, 0 means logged out */ /* A 0 is not a change from "" */ @@ -1214,7 +1214,7 @@ static int got354(char *from, char *msg) } return 0; } - + /* React to IRCv3 CHGHOST command. CHGHOST changes the hostname and/or * ident of the user. Format: * :geo!awesome@eggdrop.com CHGHOST tehgeo foo.io @@ -1234,17 +1234,16 @@ static int gotchghost(char *from, char *msg){ if (match_my_nick(nick)) { snprintf(botuserhost, UHOSTMAX, "%s@%s", ident, msg); } - u = get_user_by_host(from); /* Run the bind for each channel the user is on */ for (chan = chanset; chan; chan = chan->next) { chname = chan->dname; m = ismember(chan, nick); if (m) { + u = get_user_from_member(m); snprintf(m->userhost, sizeof m->userhost, "%s@%s", ident, msg); snprintf(mask, sizeof mask, "%s %s!%s@%s", chname, nick, ident, msg); check_tcl_chghost(nick, from, mask, u, chname, ident, msg); - get_user_flagrec(m->user ? m->user : get_user_by_host(s1), &fr, - chan->dname); + get_user_flagrec(u, &fr, chan->dname); check_this_member(chan, m->nick, &fr); } } @@ -1309,7 +1308,7 @@ static int got353(char *from, char *msg) } return 0; } - + /* React to 396 numeric (HOSTHIDDEN), sent when user mode +x (hostmasking) was * successfully set. Format: * :barjavel.freenode.net 396 BeerBot unaffiliated/geo/bot/beerbot :is now your hidden host (set by services.) @@ -1400,12 +1399,12 @@ static int gotaway(char *from, char *msg) strlcpy(s1, from, sizeof buf); nick = splitnick(&s1); - u = get_user_by_host(from); /* Run the bind for each channel the user is on */ for (chan = chanset; chan; chan = chan->next) { chname = chan->dname; m = ismember(chan, nick); if (m) { + u = get_user_from_member(m); snprintf(mask, sizeof mask, "%s %s", chname, from); check_tcl_ircaway(nick, from, mask, u, chname, msg); if (strlen(msg)) { @@ -1831,7 +1830,6 @@ static int gottopic(char *from, char *msg) chname = newsplit(&msg); fixcolon(msg); - u = get_user_by_host(from); nick = splitnick(&from); chan = findchan(chname); if (chan) { @@ -1841,6 +1839,7 @@ static int gottopic(char *from, char *msg) if (m != NULL) m->last = now; set_topic(chan, msg); + u = get_user_from_member(m); check_tcl_topc(nick, from, u, chan->dname, msg); } return 0; @@ -1942,28 +1941,27 @@ static void set_delay(struct chanset_t *chan, char *nick) */ static int gotjoin(char *from, char *channame) { - char *nick, *p, buf[UHOSTLEN], *uhost = buf, *chname; + char *nick, *p, buf[UHOSTLEN], *uhost = buf, *chname, *account = NULL; char *ch_dname = NULL; - int extjoin = 0; struct chanset_t *chan; memberlist *m; masklist *b; - struct capability *current; + int extjoin = 0; + struct capability *captmp; struct userrec *u; struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; - /* Check if extended-join CAP is enabled */ - current = cap; - while (current != NULL) { - if (!strcasecmp("extended-join", current->name)) { - extjoin = current->enabled ? 1 : 0; - } - current = current->next; - } + captmp = find_capability("extended-join"); + extjoin = captmp && captmp->enabled; + strlcpy(uhost, from, sizeof buf); nick = splitnick(&uhost); chname = newsplit(&channame); - if (!extjoin) { + if (extjoin) { + // :nick!user@host JOIN #chan account :realname + account = newsplit(&channame); + } else { + // :nick!user@host JOIN :#chan fixcolon(chname); } chan = findchan_by_dname(chname); @@ -2014,7 +2012,8 @@ static int gotjoin(char *from, char *channame) } } else if (!channel_pending(chan)) { chan->status &= ~CHAN_STOP_CYCLE; - detect_chan_flood(nick, uhost, from, chan, FLOOD_JOIN, NULL); + + detect_chan_flood(nick, uhost, from, chan, FLOOD_JOIN, extjoin ? account : NULL); chan = findchan(chname); if (!chan) { @@ -2027,9 +2026,6 @@ static int gotjoin(char *from, char *channame) /* The channel doesn't exist anymore, so get out of here. */ goto exit; - /* Grab last time joined before we update it */ - u = get_user_by_host(from); - get_user_flagrec(u, &fr, chan->dname); /* Lam: fix to work with !channels */ if (!channel_active(chan) && !match_my_nick(nick)) { /* uh, what?! i'm on the channel?! */ putlog(LOG_MISC, chan->dname, @@ -2041,6 +2037,8 @@ static int gotjoin(char *from, char *channame) } else { m = ismember(chan, nick); if (m && m->split && !strcasecmp(m->userhost, uhost)) { + u = get_user_from_member(m); + get_user_flagrec(u, &fr, chan->dname); check_tcl_rejn(nick, uhost, u, chan->dname); chan = findchan(chname); @@ -2055,12 +2053,11 @@ static int gotjoin(char *from, char *channame) goto exit; /* The tcl binding might have deleted the current user. Recheck. */ - u = get_user_by_host(from); + u = get_user_from_member(m); m->split = 0; m->last = now; m->delay = 0L; m->flags = (chan_hasop(m) ? WASOP : 0) | (chan_hashalfop(m) ? WASHALFOP : 0); - m->user = u; set_handle_laston(chan->dname, u, now); m->flags |= STOPWHO; putlog(LOG_JOIN, chan->dname, "%s (%s) returned to %s.", nick, uhost, @@ -2076,19 +2073,19 @@ static int gotjoin(char *from, char *channame) m->delay = 0L; strlcpy(m->nick, nick, sizeof m->nick); strlcpy(m->userhost, uhost, sizeof m->userhost); - m->user = u; m->flags |= STOPWHO; + u = get_user_from_member(m); + if (extjoin) { /* calls check_tcl_account which can delete the channel */ - setaccount(nick, newsplit(&channame)); - + setaccount(nick, account); + if (!(chan = findchan(chname)) && !(chan = findchan_by_dname(ch_dname ? ch_dname : chname))) { /* The channel doesn't exist anymore, so get out of here. */ goto exit; } } - check_tcl_join(nick, uhost, u, chan->dname); if (!(chan = findchan(chname)) && !(chan = findchan_by_dname(ch_dname ? ch_dname : chname))) { @@ -2098,7 +2095,6 @@ static int gotjoin(char *from, char *channame) /* The record saved in the channel record always gets updated, * so we can use that. */ - u = m->user; if (match_my_nick(nick)) { /* It was me joining! Need to update the channel record with the @@ -2129,9 +2125,9 @@ static int gotjoin(char *from, char *channame) if (u) { struct laston_info *li = 0; - cr = get_chanrec(m->user, chan->dname); + cr = get_chanrec(get_user_from_member(m), chan->dname); if (!cr && no_chanrec_info) - li = get_user(&USERENTRY_LASTON, m->user); + li = get_user(&USERENTRY_LASTON, get_user_from_member(m)); if (channel_greet(chan) && use_info && ((cr && now - cr->laston > wait_info) || (no_chanrec_info && (!li || now - li->laston > wait_info)))) { @@ -2189,7 +2185,7 @@ static int gotjoin(char *from, char *channame) (me_op(chan) || (me_halfop(chan) && !chan_hasop(m)))) { check_exemptlist(chan, from); quickban(chan, from); - p = get_user(&USERENTRY_COMMENT, m->user); + p = get_user(&USERENTRY_COMMENT, get_user_from_member(m)); dprintf(DP_MODE, "KICK %s %s :%s\n", chname, nick, (p && (p[0] != '@')) ? p : IRC_COMMENTKICK); m->flags |= SENTKICK; @@ -2249,6 +2245,7 @@ static int gotpart(char *from, char *msg) char *nick, *chname, *key; struct chanset_t *chan; struct userrec *u; + memberlist *m; chname = newsplit(&msg); fixcolon(chname); @@ -2260,8 +2257,9 @@ static int gotpart(char *from, char *msg) return 0; } if (chan && !channel_pending(chan)) { - u = get_user_by_host(from); nick = splitnick(&from); + m = ismember(chan, nick); + u = get_user_from_member(m); if (!channel_active(chan)) { /* whoa! */ putlog(LOG_MISC, chan->dname, @@ -2341,7 +2339,6 @@ static int gotkick(char *from, char *origmsg) } if (channel_active(chan)) { fixcolon(msg); - u = get_user_by_host(from); strlcpy(buf, from, sizeof buf); uhost = buf; whodid = splitnick(&uhost); @@ -2352,6 +2349,7 @@ static int gotkick(char *from, char *origmsg) return 0; m = ismember(chan, whodid); + u = get_user_from_member(m); if (m) m->last = now; /* This _needs_ to use chan->dname */ @@ -2368,7 +2366,7 @@ static int gotkick(char *from, char *origmsg) struct userrec *u2; simple_sprintf(s1, "%s!%s", m->nick, m->userhost); - u2 = get_user_by_host(s1); + u2 = get_user_from_member(m); set_handle_laston(chan->dname, u2, now); maybe_revenge(chan, from, s1, REVENGE_KICK); } @@ -2451,12 +2449,11 @@ static int gotnick(char *from, char *msg) m->flags &= ~(SENTKICK | SENTDEOP | SENTOP | SENTDEHALFOP | SENTHALFOP | SENTVOICE | SENTDEVOICE); /* nick-ban or nick is +k or something? */ - get_user_flagrec(m->user ? m->user : get_user_by_host(s1), &fr, - chan->dname); + u = get_user_from_member(m); + get_user_flagrec(u, &fr, chan->dname); check_this_member(chan, m->nick, &fr); /* Make sure this is in the loop, someone could have changed the record * in an earlier iteration of the loop. */ - u = get_user_by_host(from); found = 1; check_tcl_nick(nick, uhost, u, chan->dname, msg); @@ -2467,10 +2464,9 @@ static int gotnick(char *from, char *msg) } } if (!found) { - u = get_user_by_host(from); s1[0] = '*'; s1[1] = 0; - check_tcl_nick(nick, uhost, u, s1, msg); + check_tcl_nick(nick, uhost, NULL, s1, msg); } return 0; } @@ -2514,7 +2510,7 @@ static int gotquit(char *from, char *msg) chname = chan->dname; m = ismember(chan, nick); if (m) { - u = get_user_by_host(from2); + u = get_user_from_member(m); if (u) /* If you remove this, the bot will crash when the user record in * question is removed/modified during the tcl binds below, and the @@ -2569,6 +2565,7 @@ static int gotmsg(char *from, char *msg) int ctcp_count = 0, ignoring; struct chanset_t *chan; struct userrec *u; + memberlist *m; /* Only handle if message is to a channel, or to @#channel. */ /* FIXME: Properly handle ovNotices (@+#channel), vNotices (+#channel), etc. */ @@ -2612,7 +2609,15 @@ static int gotmsg(char *from, char *msg) ctcp_count++; if (ctcp[0] != ' ') { code = newsplit(&ctcp); - u = get_user_by_host(from); + u = NULL; + for (chan = chanset; chan; chan = chan->next) { + for (m = chan->channel.member; m && m->nick[0]; m = m->next) { + if (!rfc_casecmp(m->nick, nick)) { + u = get_user_from_member(m); + break; + } + } + } if (!ignoring || trigger_on_ignore) { if (!check_tcl_ctcp(nick, uhost, u, to, code, ctcp)) { chan = findchan(realto); @@ -2691,6 +2696,7 @@ static int gotnotice(char *from, char *msg) char *ctcp, *code; struct userrec *u; struct chanset_t *chan; + memberlist *m; int ignoring; if (!strchr(CHANMETA "@", *msg)) @@ -2704,8 +2710,15 @@ static int gotnotice(char *from, char *msg) fixcolon(msg); strlcpy(uhost, from, sizeof buf); nick = splitnick(&uhost); - u = get_user_by_host(from); - + u = NULL; + for (chan = chanset; chan; chan = chan->next) { + for (m = chan->channel.member; m && m->nick[0]; m = m->next) { + if (!rfc_casecmp(m->nick, nick)) { + u = get_user_from_member(m); + break; + } + } + } /* Check for CTCP: */ p = strchr(msg, 1); while (p && *p) { diff --git a/src/mod/irc.mod/cmdsirc.c b/src/mod/irc.mod/cmdsirc.c index 1caefe53e..3b387c8f6 100644 --- a/src/mod/irc.mod/cmdsirc.c +++ b/src/mod/irc.mod/cmdsirc.c @@ -68,13 +68,11 @@ static int has_oporhalfop(int idx, struct chanset_t *chan) */ static char *getnick(char *handle, struct chanset_t *chan) { - char s[UHOSTLEN]; struct userrec *u; memberlist *m; for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - if ((u = get_user_by_host(s)) && !strcasecmp(u->handle, handle)) + if ((u = get_user_from_member(m)) && !strcasecmp(u->handle, handle)) return m->nick; } return NULL; @@ -163,8 +161,8 @@ static void cmd_kickban(struct userrec *u, int idx, char *par) struct chanset_t *chan; char *chname, *nick, *s1; memberlist *m; - char s[UHOSTLEN]; char bantype = 0; + char s[UHOSTLEN]; if (!par[0]) { dprintf(idx, "Usage: kickban [channel] [-|@] [reason]\n"); @@ -208,7 +206,7 @@ static void cmd_kickban(struct userrec *u, int idx, char *par) return; } egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); if ((chan_op(victim) || (glob_op(victim) && !chan_deop(victim))) && !(chan_master(user) || glob_master(user))) { @@ -265,7 +263,6 @@ static void cmd_op(struct userrec *u, int idx, char *par) struct chanset_t *chan; char *nick; memberlist *m; - char s[UHOSTLEN]; nick = newsplit(&par); chan = get_channel(idx, par); @@ -294,8 +291,7 @@ static void cmd_op(struct userrec *u, int idx, char *par) dprintf(idx, "%s is not on %s.\n", nick, chan->dname); return; } - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); if (chan_deop(victim) || (glob_deop(victim) && !glob_op(victim))) { dprintf(idx, "%s is currently being auto-deopped.\n", m->nick); @@ -315,7 +311,6 @@ static void cmd_deop(struct userrec *u, int idx, char *par) struct chanset_t *chan; char *nick; memberlist *m; - char s[UHOSTLEN]; nick = newsplit(&par); chan = get_channel(idx, par); @@ -348,8 +343,7 @@ static void cmd_deop(struct userrec *u, int idx, char *par) dprintf(idx, "I'm not going to deop myself.\n"); return; } - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); if ((chan_master(victim) || glob_master(victim)) && !(chan_owner(user) || glob_owner(user))) { @@ -371,7 +365,6 @@ static void cmd_halfop(struct userrec *u, int idx, char *par) struct userrec *u2; char *nick; memberlist *m; - char s[UHOSTLEN]; nick = newsplit(&par); chan = get_channel(idx, par); @@ -386,8 +379,7 @@ static void cmd_halfop(struct userrec *u, int idx, char *par) get_user_flagrec(dcc[idx].user, &user, chan->dname); m = ismember(chan, nick); if (m && !chan_op(user) && (!glob_op(user) || chan_deop(user))) { - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u2 = m->user ? m->user : get_user_by_host(s); + u2 = get_user_from_member(m); if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) { @@ -414,8 +406,7 @@ static void cmd_halfop(struct userrec *u, int idx, char *par) dprintf(idx, "%s is not on %s.\n", nick, chan->dname); return; } - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); if (chan_dehalfop(victim) || (glob_dehalfop(victim) && !glob_halfop(victim))) { dprintf(idx, "%s is currently being auto-dehalfopped.\n", m->nick); @@ -437,7 +428,6 @@ static void cmd_dehalfop(struct userrec *u, int idx, char *par) struct userrec *u2; char *nick; memberlist *m; - char s[UHOSTLEN]; nick = newsplit(&par); chan = get_channel(idx, par); @@ -452,9 +442,7 @@ static void cmd_dehalfop(struct userrec *u, int idx, char *par) get_user_flagrec(dcc[idx].user, &user, chan->dname); m = ismember(chan, nick); if (m && !chan_op(user) && (!glob_op(user) || chan_deop(user))) { - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u2 = m->user ? m->user : get_user_by_host(s); - + u2 = get_user_from_member(m); if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_halfop(user) && (!glob_halfop(user) || chan_dehalfop(user)))) { dprintf(idx, "You are not a channel op on %s.\n", chan->dname); @@ -484,8 +472,7 @@ static void cmd_dehalfop(struct userrec *u, int idx, char *par) dprintf(idx, "I'm not going to dehalfop myself.\n"); return; } - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); if ((chan_master(victim) || glob_master(victim)) && !(chan_owner(user) || glob_owner(user))) { @@ -512,7 +499,6 @@ static void cmd_voice(struct userrec *u, int idx, char *par) struct userrec *u2; char *nick; memberlist *m; - char s[UHOSTLEN]; nick = newsplit(&par); chan = get_channel(idx, par); @@ -533,8 +519,7 @@ static void cmd_voice(struct userrec *u, int idx, char *par) * - stdarg */ if (m && !(chan_op(user) || chan_halfop(user) || (glob_op(user) && !chan_deop(user)) || (glob_halfop(user) && !chan_dehalfop(user)))) { - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u2 = m->user ? m->user : get_user_by_host(s); + u2 = get_user_from_member(m); if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) && (!glob_voice(user) || chan_quiet(user)))) { @@ -570,7 +555,6 @@ static void cmd_devoice(struct userrec *u, int idx, char *par) struct userrec *u2; char *nick; memberlist *m; - char s[UHOSTLEN]; nick = newsplit(&par); chan = get_channel(idx, par); @@ -586,8 +570,7 @@ static void cmd_devoice(struct userrec *u, int idx, char *par) m = ismember(chan, nick); if (m && !(chan_op(user) || chan_halfop(user) || (glob_op(user) && !chan_deop(user)) || (glob_halfop(user) && !chan_dehalfop(user)))) { - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u2 = m->user ? m->user : get_user_by_host(s); + u2 = get_user_from_member(m); if (!u2 || strcasecmp(u2->handle, dcc[idx].nick) || (!chan_voice(user) && (!glob_voice(user) || chan_quiet(user)))) { @@ -623,7 +606,6 @@ static void cmd_kick(struct userrec *u, int idx, char *par) struct chanset_t *chan; char *chname, *nick; memberlist *m; - char s[UHOSTLEN]; if (!par[0]) { dprintf(idx, "Usage: kick [channel] [reason]\n"); @@ -663,8 +645,7 @@ static void cmd_kick(struct userrec *u, int idx, char *par) chan->dname); return; } - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); if ((chan_op(victim) || (glob_op(victim) && !chan_deop(victim))) && !(chan_master(user) || glob_master(user))) { @@ -748,8 +729,9 @@ static void cmd_channel(struct userrec *u, int idx, char *par) for (m = chan->channel.member; m && m->nick[0]; m = m->next) { if (strlen(m->nick) > maxnicklen) maxnicklen = strlen(m->nick); - if ((m->user) && (strlen(m->user->handle) > maxhandlen)) - maxhandlen = strlen(m->user->handle); + u = get_user_from_member(m); + if (u && (strlen(u->handle) > maxhandlen)) + maxhandlen = strlen(u->handle); } if (maxnicklen < 9) maxnicklen = 9; @@ -768,15 +750,14 @@ static void cmd_channel(struct userrec *u, int idx, char *par) strftime(s, 6, "%H:%M", localtime(&(m->joined))); } else strlcpy(s, " --- ", sizeof s); - if (m->user == NULL) { - egg_snprintf(s1, sizeof s1, "%s!%s", m->nick, m->userhost); - m->user = get_user_by_host(s1); - } - if (m->user == NULL) + egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); + + u = get_user_from_member(m); + if (u == NULL) strlcpy(handle, "*", sizeof handle); else - strlcpy(handle, m->user->handle, sizeof handle); - get_user_flagrec(m->user, &user, chan->dname); + strlcpy(handle, u->handle, sizeof handle); + get_user_flagrec(u, &user, chan->dname); /* Determine status char to use */ if (glob_bot(user) && (glob_op(user) || chan_op(user))) atrflag = 'B'; @@ -1022,7 +1003,7 @@ static void cmd_adduser(struct userrec *u, int idx, char *par) if (strlen(hand) > HANDLEN) hand[HANDLEN] = 0; egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); if (u) { dprintf(idx, "%s is already known as %s.\n", nick, u->handle); return; @@ -1059,7 +1040,7 @@ static void cmd_adduser(struct userrec *u, int idx, char *par) static void cmd_deluser(struct userrec *u, int idx, char *par) { - char *nick, s[UHOSTLEN]; + char *nick; struct chanset_t *chan; memberlist *m = NULL; struct flag_record victim = { FR_GLOBAL | FR_CHAN | FR_ANYWH, 0, 0, 0, 0, 0 }; @@ -1080,8 +1061,7 @@ static void cmd_deluser(struct userrec *u, int idx, char *par) return; } get_user_flagrec(u, &user, chan->dname); - egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); if (!u) { dprintf(idx, "%s is not a valid user.\n", nick); return; diff --git a/src/mod/irc.mod/irc.c b/src/mod/irc.mod/irc.c index 8cce81776..dc03c7f24 100644 --- a/src/mod/irc.mod/irc.c +++ b/src/mod/irc.mod/irc.c @@ -142,7 +142,6 @@ static void punish_badguy(struct chanset_t *chan, char *whobad, /* Set the offender +d */ if ((chan->revenge_mode > 0) && !(chan_deop(fr) || glob_deop(fr))) { char s[UHOSTLEN], s1[UHOSTLEN]; - memberlist *mx = NULL; /* Removing op */ if (chan_op(fr) || (glob_op(fr) && !chan_deop(fr))) { @@ -186,8 +185,6 @@ static void punish_badguy(struct chanset_t *chan, char *whobad, fr.chan = USER_DEOP; fr.udef_chan = 0; u = get_user_by_handle(userlist, s1); - if ((mx = ismember(chan, badnick))) - mx->user = u; set_user_flagrec(u, &fr, chan->dname); simple_sprintf(s, "(%s) %s (%s)", ct, reason, whobad); set_user(&USERENTRY_COMMENT, u, (void *) s); @@ -230,17 +227,20 @@ static void maybe_revenge(struct chanset_t *chan, char *whobad, char *badnick, *victim; int mevictim; struct userrec *u, *u2; + memberlist *m; if (!chan || (type < 0)) return; /* Get info about offender */ - u = get_user_by_host(whobad); badnick = splitnick(&whobad); + m = ismember(chan, badnick); + u = get_user_from_member(m); /* Get info about victim */ - u2 = get_user_by_host(whovictim); victim = splitnick(&whovictim); + m = ismember(chan, victim); + u2 = get_user_from_member(m); mevictim = match_my_nick(victim); /* Do we want to revenge? */ @@ -264,12 +264,10 @@ static void set_key(struct chanset_t *chan, char *k) static int hand_on_chan(struct chanset_t *chan, struct userrec *u) { - char s[NICKMAX+UHOSTLEN+1]; memberlist *m; for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - sprintf(s, "%s!%s", m->nick, m->userhost); - if (u == get_user_by_host(s)) + if (u == get_user_from_member(m)) return 1; } return 0; @@ -531,7 +529,6 @@ static void status_log() static void check_lonely_channel(struct chanset_t *chan) { memberlist *m; - char s[NICKMAX+UHOSTLEN+1]; int i = 0; if (channel_pending(chan) || !channel_active(chan) || me_op(chan) || @@ -576,8 +573,7 @@ static void check_lonely_channel(struct chanset_t *chan) chan->status |= CHAN_WHINED; } for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - sprintf(s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); if (!match_my_nick(m->nick) && (!u || !(u->flags & USER_BOT))) { ok = 0; break; @@ -601,7 +597,7 @@ static void check_expired_chanstuff() { masklist *b, *e; memberlist *m, *n; - char *key, s[NICKMAX+UHOSTLEN+1]; + char *key; struct chanset_t *chan; struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; @@ -670,9 +666,7 @@ static void check_expired_chanstuff() for (m = chan->channel.member; m && m->nick[0]; m = m->next) if (now - m->last >= chan->idle_kick * 60 && !match_my_nick(m->nick) && !chan_issplit(m)) { - sprintf(s, "%s!%s", m->nick, m->userhost); - get_user_flagrec(m->user ? m->user : get_user_by_host(s), - &fr, chan->dname); + get_user_flagrec(get_user_from_member(m), &fr, chan->dname); if ((!(glob_bot(fr) || glob_friend(fr) || (glob_op(fr) && !chan_deop(fr)) || chan_friend(fr) || chan_op(fr))) && (me_op(chan) || (me_halfop(chan) && !chan_hasop(m)))) { @@ -685,9 +679,7 @@ static void check_expired_chanstuff() for (m = chan->channel.member; m && m->nick[0]; m = n) { n = m->next; if (m->split && now - m->split > wait_split) { - sprintf(s, "%s!%s", m->nick, m->userhost); - check_tcl_sign(m->nick, m->userhost, - m->user ? m->user : get_user_by_host(s), + check_tcl_sign(m->nick, m->userhost, get_user_from_member(m), chan->dname, "lost in the netsplit"); putlog(LOG_JOIN, chan->dname, "%s (%s) got lost in the net-split.", m->nick, m->userhost); @@ -915,12 +907,16 @@ static int check_tcl_pub(char *nick, char *from, char *chname, char *msg) struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; int x; char buf[512], *args = buf, *cmd, host[161], *hand; + struct chanset_t *chan; struct userrec *u; + memberlist *m; strlcpy(buf, msg, sizeof buf); cmd = newsplit(&args); simple_sprintf(host, "%s!%s", nick, from); - u = get_user_by_host(host); + chan = findchan(chname); + m = ismember(chan, nick); + u = get_user_from_member(m); hand = u ? u->handle : "*"; get_user_flagrec(u, &fr, chname); Tcl_SetVar(interp, "_pub1", nick, 0); @@ -943,10 +939,14 @@ static int check_tcl_pubm(char *nick, char *from, char *chname, char *msg) int x; char buf[1024], host[161]; struct userrec *u; + struct chanset_t *chan; + memberlist *m; simple_sprintf(buf, "%s %s", chname, msg); simple_sprintf(host, "%s!%s", nick, from); - u = get_user_by_host(host); + chan = findchan(chname); + m = ismember(chan, nick); + u = get_user_from_member(m); get_user_flagrec(u, &fr, chname); Tcl_SetVar(interp, "_pubm1", nick, 0); Tcl_SetVar(interp, "_pubm2", from, 0); diff --git a/src/mod/irc.mod/mode.c b/src/mod/irc.mod/mode.c index 327844c3b..88814d3bf 100644 --- a/src/mod/irc.mod/mode.c +++ b/src/mod/irc.mod/mode.c @@ -421,11 +421,7 @@ static void got_op(struct chanset_t *chan, char *nick, char *from, check_chan = 1; strcpy(ch, chan->name); - simple_sprintf(s, "%s!%s", m->nick, m->userhost); - if (!m->user) - u = get_user_by_host(s); - else - u = m->user; + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); /* Flags need to be set correctly right from the beginning now, so that @@ -519,11 +515,7 @@ static void got_halfop(struct chanset_t *chan, char *nick, char *from, check_chan = 1; strcpy(ch, chan->name); - simple_sprintf(s, "%s!%s", m->nick, m->userhost); - if (!m->user) - u = get_user_by_host(s); - else - u = m->user; + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); /* Flags need to be set correctly right from the beginning now, so that @@ -612,7 +604,7 @@ static void got_deop(struct chanset_t *chan, char *nick, char *from, strcpy(ch, chan->name); simple_sprintf(s, "%s!%s", m->nick, m->userhost); simple_sprintf(s1, "%s!%s", nick, from); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); had_halfop = chan_hasop(m); @@ -703,9 +695,8 @@ static void got_dehalfop(struct chanset_t *chan, char *nick, char *from, } strcpy(ch, chan->name); - simple_sprintf(s, "%s!%s", m->nick, m->userhost); simple_sprintf(s1, "%s!%s", nick, from); - u = get_user_by_host(s); + u = get_user_from_member(m); get_user_flagrec(u, &victim, chan->dname); had_halfop = chan_hasop(m); @@ -784,7 +775,7 @@ static void got_ban(struct chanset_t *chan, char *nick, char *from, char *who, for (m = chan->channel.member; m && m->nick[0]; m = m->next) { egg_snprintf(s1, sizeof s1, "%s!%s", m->nick, m->userhost); if (match_addr(who, s1)) { - targ = get_user_by_host(s1); + targ = get_user_from_member(m); if (targ) { get_user_flagrec(targ, &victim, chan->dname); if ((glob_friend(victim) || (glob_op(victim) && !chan_deop(victim)) || @@ -1025,12 +1016,15 @@ static int gotmode(char *from, char *origmsg) msg[z] = 0; putlog(LOG_MODES, chan->dname, "%s: mode change '%s %s' by %s", ch, chg, msg, from); - u = get_user_by_host(from); - get_user_flagrec(u, &user, ch); nick = splitnick(&from); m = ismember(chan, nick); - if (m) + if (m) { + u = get_user_from_member(m); + get_user_flagrec(u, &user, ch); m->last = now; + } else { + u = NULL; + } if (m && channel_active(chan) && (me_op(chan) || (me_halfop(chan) && !chan_hasop(m))) && !(glob_friend(user) || chan_friend(user) || (channel_dontkickops(chan) && (chan_op(user) || (glob_op(user) && @@ -1249,8 +1243,7 @@ static int gotmode(char *from, char *origmsg) refresh_who_chan(chan->name); } else { simple_sprintf(s, "%s!%s", m->nick, m->userhost); - get_user_flagrec(m->user ? m->user : get_user_by_host(s), - &victim, chan->dname); + get_user_flagrec(get_user_from_member(m), &victim, chan->dname); if (ms2[0] == '+') { m->flags &= ~SENTVOICE; m->flags |= CHANVOICE; diff --git a/src/mod/irc.mod/msgcmds.c b/src/mod/irc.mod/msgcmds.c index d179ceac9..282687425 100644 --- a/src/mod/irc.mod/msgcmds.c +++ b/src/mod/irc.mod/msgcmds.c @@ -383,7 +383,7 @@ static int msg_who(char *nick, char *host, struct userrec *u, char *par) struct userrec *u; egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s); + u = get_user_from_member(m); info = get_user(&USERENTRY_INFO, u); if (u && (u->flags & USER_BOT)) info = 0; @@ -431,7 +431,7 @@ static int msg_who(char *nick, char *host, struct userrec *u, char *par) static int msg_whois(char *nick, char *host, struct userrec *u, char *par) { - char s[UHOSTLEN + 1], s1[143], *s2, stime[14]; + char s1[143], *s2, stime[14]; int ok; struct chanset_t *chan; memberlist *m; @@ -462,8 +462,7 @@ static int msg_whois(char *nick, char *host, struct userrec *u, char *par) for (chan = chanset; chan && !ok; chan = chan->next) { m = ismember(chan, par); if (m) { - egg_snprintf(s, sizeof s, "%s!%s", par, m->userhost); - u2 = get_user_by_host(s); + u2 = get_user_from_member(m); if (u2) { ok = 1; dprintf(DP_HELP, "NOTICE %s :[%s] AKA '%s':\n", nick, diff --git a/src/mod/irc.mod/tclirc.c b/src/mod/irc.mod/tclirc.c index 36b485a2a..b8a93b3cd 100644 --- a/src/mod/irc.mod/tclirc.c +++ b/src/mod/irc.mod/tclirc.c @@ -24,10 +24,10 @@ */ static int tcl_chanlist STDVAR { - char nuh[1024]; int f; memberlist *m; struct chanset_t *chan; + struct userrec *u; struct flag_record plus = { FR_CHAN | FR_GLOBAL | FR_BOT, 0, 0, 0, 0, 0 }, minus = { FR_CHAN | FR_GLOBAL | FR_BOT, 0, 0, 0, 0, 0}, user = { FR_CHAN | FR_GLOBAL | FR_BOT, 0, 0, 0, 0, 0 }; @@ -55,11 +55,8 @@ static int tcl_chanlist STDVAR minus.match = plus.match ^ (FR_AND | FR_OR); for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - if (!m->user) { - egg_snprintf(nuh, sizeof nuh, "%s!%s", m->nick, m->userhost); - m->user = get_user_by_host(nuh); - } - get_user_flagrec(m->user, &user, argv[1]); + u = get_user_from_member(m); + get_user_flagrec(u, &user, argv[1]); user.match = plus.match; if (flagrec_eq(&plus, &user)) { if (!f || !flagrec_eq(&minus, &user)) @@ -347,8 +344,8 @@ static int tcl_onchan STDVAR static int tcl_handonchan STDVAR { - char nuh[1024]; struct chanset_t *chan, *thechan = NULL; + struct userrec *u; memberlist *m; BADARGS(2, 3, " handle ?channel?"); @@ -365,11 +362,8 @@ static int tcl_handonchan STDVAR while (chan && (thechan == NULL || thechan == chan)) { for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - if (!m->user) { - egg_snprintf(nuh, sizeof nuh, "%s!%s", m->nick, m->userhost); - m->user = get_user_by_host(nuh); - } - if (m->user && !strcasecmp(m->user->handle, argv[1])) { + u = get_user_from_member(m); + if (u && !strcasecmp(u->handle, argv[1])) { Tcl_AppendResult(irp, "1", NULL); return TCL_OK; } @@ -1027,9 +1021,9 @@ static int tcl_account2nicks STDVAR static int tcl_hand2nicks STDVAR { - char nuh[1024]; memberlist *m; struct chanset_t *chan, *thechan = NULL; + struct userrec *u; Tcl_Obj *nicks; Tcl_Obj **nicksv = NULL; int nicksc = 0, i, found; @@ -1050,13 +1044,8 @@ static int tcl_hand2nicks STDVAR while (chan && (thechan == NULL || thechan == chan)) { for (m = chan->channel.member; m && m->nick[0]; m = m->next) { found = 0; - /* Does this user have the account we're looking for? */ - if (!m->user && !m->tried_getuser) { - egg_snprintf(nuh, sizeof nuh, "%s!%s", m->nick, m->userhost); - m->tried_getuser = 1; - m->user = get_user_by_host(nuh); - } - if (m->user && !strcasecmp(m->user->handle, argv[1])) { + u = get_user_from_member(m); + if (u && !strcasecmp(u->handle, argv[1])) { /* Is the nick of the user already in the list? */ Tcl_ListObjGetElements(irp, nicks, &nicksc, &nicksv); for (i = 0; i < nicksc; i++) { @@ -1078,9 +1067,9 @@ static int tcl_hand2nicks STDVAR static int tcl_hand2nick STDVAR { - char nuh[1024]; memberlist *m; struct chanset_t *chan, *thechan = NULL; + struct userrec *u; BADARGS(2, 3, " handle ?channel?"); @@ -1096,12 +1085,8 @@ static int tcl_hand2nick STDVAR while (chan && (thechan == NULL || thechan == chan)) { for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - if (!m->user && !m->tried_getuser) { - egg_snprintf(nuh, sizeof nuh, "%s!%s", m->nick, m->userhost); - m->tried_getuser = 1; - m->user = get_user_by_host(nuh); - } - if (m->user && !strcasecmp(m->user->handle, argv[1])) { + u = get_user_from_member(m); + if (u && !strcasecmp(u->handle, argv[1])) { Tcl_AppendResult(irp, m->nick, NULL); return TCL_OK; } @@ -1113,9 +1098,9 @@ static int tcl_hand2nick STDVAR static int tcl_nick2hand STDVAR { - char nuh[1024]; memberlist *m; struct chanset_t *chan, *thechan = NULL; + struct userrec *u; BADARGS(2, 3, " nick ?channel?"); @@ -1132,11 +1117,8 @@ static int tcl_nick2hand STDVAR while (chan && (thechan == NULL || thechan == chan)) { m = ismember(chan, argv[1]); if (m) { - if (!m->user) { - egg_snprintf(nuh, sizeof nuh, "%s!%s", m->nick, m->userhost); - m->user = get_user_by_host(nuh); - } - Tcl_AppendResult(irp, m->user ? m->user->handle : "*", NULL); + u = get_user_from_member(m); + Tcl_AppendResult(irp, u ? u->handle : "*", NULL); return TCL_OK; } chan = chan->next; diff --git a/src/mod/module.h b/src/mod/module.h index 951241adb..da1651c0a 100644 --- a/src/mod/module.h +++ b/src/mod/module.h @@ -524,7 +524,8 @@ typedef void (*chanout_butfunc)(int, int, const char *, ...) ATTRIBUTE_FORMAT(pr #define bind_bind_entry ((int(*)(tcl_bind_list_t *, const char *, const char *, const char *))global[320]) #define unbind_bind_entry ((int(*)(tcl_bind_list_t *, const char *, const char *, const char *))global[321]) #define argv0 ((char *)global[322]) - +#define get_user_from_member ((struct userrec * (*)(memberlist *))global[323]) +/* 324 - 327 */ /* hostmasking */ diff --git a/src/mod/notes.mod/notes.c b/src/mod/notes.mod/notes.c index 5c5d47aa8..ee9a9b3e5 100644 --- a/src/mod/notes.mod/notes.c +++ b/src/mod/notes.mod/notes.c @@ -834,13 +834,11 @@ static void notes_hourly() memberlist *m; int k; int l; - char s1[NICKMAX+UHOSTLEN+1]; struct userrec *u; for (chan = chanset; chan; chan = chan->next) { for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - sprintf(s1, "%s!%s", m->nick, m->userhost); - u = get_user_by_host(s1); + u = get_user_from_member(m); if (u) { k = num_notes(u->handle); for (l = 0; l < dcc_total; l++) diff --git a/src/mod/seen.mod/seen.c b/src/mod/seen.mod/seen.c index 41cea68d2..5dbb095da 100644 --- a/src/mod/seen.mod/seen.c +++ b/src/mod/seen.mod/seen.c @@ -148,7 +148,7 @@ static int dcc_seen(struct userrec *u, int idx, char *par) static void do_seen(int idx, char *prefix, char *nick, char *hand, char *channel, char *text) { - char stuff[512], word1[512], word2[512], whotarget[128], object[128], + char word1[512], word2[512], whotarget[128], object[128], whoredirect[512], *oix, *lastonplace = 0; struct userrec *urec; struct chanset_t *chan; @@ -194,8 +194,7 @@ static void do_seen(int idx, char *prefix, char *nick, char *hand, m = ismember(chan, object); if (m) { onchan = 1; - snprintf(stuff, sizeof stuff, "%s!%s", object, m->userhost); - urec = get_user_by_host(stuff); + urec = get_user_from_member(m); if (!urec || !strcasecmp(object, urec->handle)) break; strcat(whoredirect, object); @@ -342,7 +341,7 @@ static void do_seen(int idx, char *prefix, char *nick, char *hand, if (m) { onchan = 1; snprintf(word1, sizeof word1, "%s!%s", whotarget, m->userhost); - urec = get_user_by_host(word1); + urec = get_user_from_member(m); if (!urec || !strcasecmp(whotarget, urec->handle)) break; strcat(whoredirect, whotarget); @@ -359,8 +358,7 @@ static void do_seen(int idx, char *prefix, char *nick, char *hand, while (chan) { m = chan->channel.member; while (m && m->nick[0]) { - snprintf(word2, sizeof word2, "%s!%s", m->nick, m->userhost); - urec = get_user_by_host(word2); + urec = get_user_from_member(m); if (urec && !strcasecmp(urec->handle, whotarget)) { strcat(whoredirect, whotarget); strcat(whoredirect, " is "); diff --git a/src/modules.c b/src/modules.c index afb614221..61ae64716 100644 --- a/src/modules.c +++ b/src/modules.c @@ -626,7 +626,9 @@ Function global_table[] = { /* 320 - 323 */ (Function) bind_bind_entry, (Function) unbind_bind_entry, - (Function) & argv0 + (Function) & argv0, + (Function) get_user_from_member +/* 324 - 327 */ }; void init_modules(void) diff --git a/src/userrec.c b/src/userrec.c index da5da6b42..61af179d5 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -171,20 +171,6 @@ static struct userrec *check_dcclist_hand(char *handle) return NULL; } -/* Shortcut for get_user_by_handle -- might have user record in channels - */ -static struct userrec *check_chanlist_hand(const char *hand) -{ - struct chanset_t *chan; - memberlist *m; - - for (chan = chanset; chan; chan = chan->next) - for (m = chan->channel.member; m && m->nick[0]; m = m->next) - if (m->user && !strcasecmp(m->user->handle, hand)) - return m->user; - return NULL; -} - /* Search userlist for a provided account name * Returns: userrecord for user containing the account */ @@ -193,12 +179,11 @@ struct userrec *get_user_by_account(char *acct) struct userrec *u; struct list_type *q; - if (acct == NULL) + if (!acct || !acct[0] || !strcmp(acct, "*")) return NULL; for (u = userlist; u; u = u->next) { - q = get_user(&USERENTRY_ACCOUNT, u); - for (; q; q = q->next) { - if(q && !strcasecmp(q->extra, acct)) { + for (q = get_user(&USERENTRY_ACCOUNT, u); q; q = q->next) { + if (!rfc_casecmp(q->extra, acct)) { return u; } } @@ -226,11 +211,6 @@ struct userrec *get_user_by_handle(struct userrec *bu, char *handle) cache_hit++; return ret; } - ret = check_chanlist_hand(handle); - if (ret) { - cache_hit++; - return ret; - } cache_miss++; } for (u = bu; u; u = u->next) @@ -242,6 +222,29 @@ struct userrec *get_user_by_handle(struct userrec *bu, char *handle) return NULL; } +struct userrec *get_user_from_member(memberlist *m) +{ + struct userrec *ret; + + /* Check if there is a user with a matching account if one is provided */ + if (m->account[0] != '*') { + ret = get_user_by_account(m->account); + if (ret) { + return ret; + } + } + /* Check if there is a user with a matching hostmask if one is provided */ + if ((m->userhost[0] != '\0') && (m->nick[0] != '\0')) { + char s[NICKMAX+UHOSTLEN+1]; + sprintf(s, "%s!%s", m->nick, m->userhost); + ret = get_user_by_host(s); + if (ret) { + return ret; + } + } + return NULL; +} + /* Fix capitalization, etc */ void correct_handle(char *handle) @@ -265,8 +268,6 @@ void clear_masks(maskrec *m) temp = m->next; if (m->mask) nfree(m->mask); - if (m->user) - nfree(m->user); if (m->desc) nfree(m->desc); nfree(m); @@ -311,12 +312,10 @@ void clear_userlist(struct userrec *bu) /* Find CLOSEST host match * (if "*!*@*" and "*!*@*clemson.edu" both match, use the latter!) - * - * Checks the chanlist first, to possibly avoid needless search. */ struct userrec *get_user_by_host(char *host) { - struct userrec *u, *ret; + struct userrec *u, *ret = NULL; struct list_type *q; int cnt, i; char host2[UHOSTLEN]; @@ -326,12 +325,7 @@ struct userrec *get_user_by_host(char *host) rmspace(host); if (!host[0]) return NULL; - ret = check_chanlist(host); cnt = 0; - if (ret != NULL) { - cache_hit++; - return ret; - } cache_miss++; strlcpy(host2, host, sizeof host2); for (u = userlist; u; u = u->next) { @@ -346,7 +340,6 @@ struct userrec *get_user_by_host(char *host) } if (ret != NULL) { lastuser = ret; - set_chanlist(host2, ret); } return ret; } diff --git a/src/users.h b/src/users.h index e9a451418..a273ca95c 100644 --- a/src/users.h +++ b/src/users.h @@ -184,6 +184,7 @@ struct userrec *get_user_by_handle(struct userrec *, char *); struct userrec *get_user_by_host(char *); struct userrec *get_user_by_account(char *); struct userrec *get_user_by_nick(char *); +struct userrec *get_user_from_member(memberlist *); struct userrec *check_chanlist(const char *); /* All the default userentry stuff, for code re-use diff --git a/src/version.h b/src/version.h index 63e9d3316..64e4e4698 100644 --- a/src/version.h +++ b/src/version.h @@ -27,5 +27,5 @@ */ #define EGG_STRINGVER "1.9.5" -#define EGG_NUMVER 1090505 -#define EGG_PATCH "python" +#define EGG_NUMVER 1090506 +#define EGG_PATCH "accounttracking" From 9068233364b28ca9c6840aca7fbd30ecdfa0ac33 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 2 Jun 2024 21:00:54 +0200 Subject: [PATCH 290/320] Fix memory leak in egg_string_unicodesup_desurrogate() Patch by: michaelortmann --- src/tcl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/tcl.c b/src/tcl.c index 5015fd5b5..71fe6d9be 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -767,6 +767,7 @@ Tcl_Obj *egg_string_unicodesup_desurrogate(const char *oldstr, int len) { int stridx = 0, bufidx = 0; char *buf = nmalloc(len); + Tcl_Obj *o; while (stridx < len) { uint32_t low, high; @@ -787,7 +788,10 @@ Tcl_Obj *egg_string_unicodesup_desurrogate(const char *oldstr, int len) } } } - return Tcl_NewStringObj(buf, bufidx); + + o = Tcl_NewStringObj(buf, bufidx); + nfree(buf); + return o; } /* C function called for ::egg_tcl_tolower/toupper/totitle From 0ee04c25700268e91f2f0bb7974b1ececf3aa380 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 2 Jun 2024 21:03:29 +0200 Subject: [PATCH 291/320] Fix leak Patch by: michaelortmann --- src/mod/channels.mod/tclchan.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/mod/channels.mod/tclchan.c b/src/mod/channels.mod/tclchan.c index 512702703..79df93d02 100644 --- a/src/mod/channels.mod/tclchan.c +++ b/src/mod/channels.mod/tclchan.c @@ -1998,17 +1998,17 @@ static void init_masklist(masklist *m) static void init_channel(struct chanset_t *chan, int reset) { int flags = reset ? reset : CHAN_RESETALL; + memberlist *m, *m1; if (flags & CHAN_RESETWHO) { - if (chan->channel.member) { - nfree(chan->channel.member); + for (m = chan->channel.member; m; m = m1) { + m1 = m->next; + nfree(m); } chan->channel.members = 0; chan->channel.member = nmalloc(sizeof *chan->channel.member); /* Since we don't have channel_malloc, manually bzero */ egg_bzero(chan->channel.member, sizeof *chan->channel.member); - chan->channel.member->nick[0] = 0; - chan->channel.member->next = NULL; } if (flags & CHAN_RESETMODES) { From 844439af999c1600c12f83c1e652a8add1c49d34 Mon Sep 17 00:00:00 2001 From: Johannes Kuhn Date: Tue, 4 Jun 2024 15:24:59 +0200 Subject: [PATCH 292/320] Add Tcl 9 compatibility init_tcl has been split into 2 parts: init_tcl0 sets the notifier, calls Tcl_FindExecutable and if Tcl >= 9 calls Tcl_InitSubsystem. init_tcl1 does the rest. init_tcl0 must be called before the thread local storage is used. Tests show that this compiles and runs with both Tcl 8.6.11 and Tcl 9.0b1. Following minor changes have been made: Replace TCL_INTERP_DESTROYED with Tcl_InterpDeleted() (also see TCL_INTERP_DESTROYED -> Tcl_InterpDeleted() #1537) Define EGG_CONST as const (CONST is gone) Introduce Tcl_Size - which is typedef int Tcl_Size if not provided by tcl.h Update variable types to Tcl_Size where needed. Replace Tcl_DStringTrunc with Tcl_DStringSetLength Test cases demonstrating functionality (if applicable): [Tcl9Eggdrop] (): Running Eggdrop 1.9.5+python 1090505 with Tcl 9.0b [Tcl8Eggdrop] (): Running Eggdrop 1.9.5+python 1090505 with Tcl 8.6. --- src/main.c | 8 +++++--- src/main.h | 13 ++++++++----- src/mod/channels.mod/channels.c | 2 +- src/mod/channels.mod/cmdschan.c | 2 +- src/mod/channels.mod/tclchan.c | 6 +++--- src/mod/irc.mod/tclirc.c | 6 ++++-- src/mod/server.mod/server.c | 5 +++-- src/mod/server.mod/tclisupport.c | 10 +++++----- src/tcl.c | 28 +++++++++++++++++----------- src/userent.c | 3 ++- 10 files changed, 49 insertions(+), 34 deletions(-) diff --git a/src/main.c b/src/main.c index 8d2874f62..17133c5b5 100644 --- a/src/main.c +++ b/src/main.c @@ -722,7 +722,8 @@ int init_userent(); int init_misc(); int init_bots(); int init_modules(); -void init_tcl(int, char **); +void init_tcl0(int, char **); +void init_tcl1(int, char **); void init_language(int); #ifdef TLS int ssl_init(); @@ -893,7 +894,7 @@ static void mainloop(int toplevel) } kill_tcl(); - init_tcl(argc, argv); + init_tcl1(argc, argv); init_language(0); /* this resets our modules which we didn't unload (encryption and uptime) */ @@ -1037,6 +1038,7 @@ int main(int arg_c, char **arg_v) init_mem(); if (argc > 1) do_arg(); + init_tcl0(argc, argv); init_language(1); printf("\n%s\n", version); @@ -1056,7 +1058,7 @@ int main(int arg_c, char **arg_v) init_modules(); if (backgrd) bg_prepare_split(); - init_tcl(argc, argv); + init_tcl1(argc, argv); init_language(0); #ifdef STATIC link_statics(); diff --git a/src/main.h b/src/main.h index f8f2b5032..79d388492 100644 --- a/src/main.h +++ b/src/main.h @@ -41,15 +41,18 @@ #include "eggint.h" #include "lush.h" +#ifndef TCL_SIZE_MAX + typedef int Tcl_Size; +# define Tcl_GetSizeIntFromObj Tcl_GetIntFromObj +# define TCL_SIZE_MAX INT_MAX +# define TCL_SIZE_MODIFIER "" +#endif + #ifndef TCL_PATCH_LEVEL # define TCL_PATCH_LEVEL "*unknown*" #endif -#ifdef CONST -# define EGG_CONST CONST -#else -# define EGG_CONST -#endif +#define EGG_CONST const #ifdef CONST86 # define TCL_CONST86 CONST86 diff --git a/src/mod/channels.mod/channels.c b/src/mod/channels.mod/channels.c index 95fed762b..d5d849879 100644 --- a/src/mod/channels.mod/channels.c +++ b/src/mod/channels.mod/channels.c @@ -737,7 +737,7 @@ static char *traced_globchanset(ClientData cdata, Tcl_Interp *irp, EGG_CONST char *name1, EGG_CONST char *name2, int flags) { - int i, items; + Tcl_Size i, items; char *t, *s; EGG_CONST char **item, *s2; diff --git a/src/mod/channels.mod/cmdschan.c b/src/mod/channels.mod/cmdschan.c index 4d96630a7..d613f43a9 100644 --- a/src/mod/channels.mod/cmdschan.c +++ b/src/mod/channels.mod/cmdschan.c @@ -1191,7 +1191,7 @@ static void cmd_mns_chrec(struct userrec *u, int idx, char *par) static void cmd_pls_chan(struct userrec *u, int idx, char *par) { - int i, argc; + Tcl_Size i, argc; EGG_CONST char **argv; char *chname; struct chanset_t *chan; diff --git a/src/mod/channels.mod/tclchan.c b/src/mod/channels.mod/tclchan.c index 79df93d02..f40f9f8d2 100644 --- a/src/mod/channels.mod/tclchan.c +++ b/src/mod/channels.mod/tclchan.c @@ -1013,7 +1013,7 @@ static int tcl_channel_getlist(Tcl_Interp *irp, struct chanset_t *chan) { char s[121], *str; EGG_CONST char **argv = NULL; - int argc = 0; + Tcl_Size argc = 0; struct udef_struct *ul; /* String values first */ @@ -1133,7 +1133,7 @@ static int tcl_channel_get(Tcl_Interp *irp, struct chanset_t *chan, { char s[121], *str = NULL; EGG_CONST char **argv = NULL; - int argc = 0; + Tcl_Size argc = 0; struct udef_struct *ul; if (!strcmp(setting, "chanmode")) @@ -2089,7 +2089,7 @@ static void clear_channel(struct chanset_t *chan, int reset) */ static int tcl_channel_add(Tcl_Interp *irp, char *newname, char *options) { - int items; + Tcl_Size items; int ret = TCL_OK; int join = 0; char buf[2048], buf2[256]; diff --git a/src/mod/irc.mod/tclirc.c b/src/mod/irc.mod/tclirc.c index b8a93b3cd..2e27744a8 100644 --- a/src/mod/irc.mod/tclirc.c +++ b/src/mod/irc.mod/tclirc.c @@ -980,7 +980,8 @@ static int tcl_account2nicks STDVAR struct chanset_t *chan, *thechan = NULL; Tcl_Obj *nicks; Tcl_Obj **nicksv = NULL; - int nicksc = 0, i, found; + Tcl_Size nicksc = 0, i; + int found; BADARGS(2, 3, " account ?channel?"); @@ -1026,7 +1027,8 @@ static int tcl_hand2nicks STDVAR struct userrec *u; Tcl_Obj *nicks; Tcl_Obj **nicksv = NULL; - int nicksc = 0, i, found; + Tcl_Size nicksc = 0, i; + int found; BADARGS(2, 3, " handle ?channel?"); diff --git a/src/mod/server.mod/server.c b/src/mod/server.mod/server.c index 80d0ad5f1..6aff0e488 100644 --- a/src/mod/server.mod/server.c +++ b/src/mod/server.mod/server.c @@ -1413,7 +1413,7 @@ static int server_raw STDVAR static int server_rawt STDVAR { - int unused; + Tcl_Size unused; Tcl_Obj *tagdict; Function F = (Function) cd; @@ -1809,7 +1809,8 @@ static char *tcl_eggserver(ClientData cdata, Tcl_Interp *irp, EGG_CONST char *name1, EGG_CONST char *name2, int flags) { - int lc, code, i; + Tcl_Size lc, i; + int code; char x[1024]; EGG_CONST char **list, *slist; struct server_list *q; diff --git a/src/mod/server.mod/tclisupport.c b/src/mod/server.mod/tclisupport.c index 6ac22d7b3..66fa72aae 100644 --- a/src/mod/server.mod/tclisupport.c +++ b/src/mod/server.mod/tclisupport.c @@ -67,7 +67,7 @@ int tcl_isupport STDOBJVAR static int tcl_isupport_get STDOBJVAR { - int keylen; + Tcl_Size keylen; const char *key, *value; Tcl_Obj *tclres; @@ -95,7 +95,7 @@ static int tcl_isupport_get STDOBJVAR static int tcl_isupport_isset STDOBJVAR { - int keylen; + Tcl_Size keylen; const char *key, *value; BADOBJARGS(3, 3, 2, "setting"); @@ -109,7 +109,7 @@ static int tcl_isupport_isset STDOBJVAR /* not exposed for now */ static int tcl_isupport_set STDOBJVAR { - int keylen, valuelen; + Tcl_Size keylen, valuelen; const char *key, *value; /* First one to check for type validity only */ @@ -126,7 +126,7 @@ static int tcl_isupport_set STDOBJVAR static int tcl_isupport_unset STDOBJVAR { struct isupport *data; - int keylen; + Tcl_Size keylen; const char *key; BADOBJARGS(3, 3, 2, "setting"); @@ -170,7 +170,7 @@ char *traced_isupport(ClientData cdata, Tcl_Interp *irp, } /* remove trailing space */ if (Tcl_DStringLength(&ds)) - Tcl_DStringTrunc(&ds, Tcl_DStringLength(&ds) - 1); + Tcl_DStringSetLength(&ds, Tcl_DStringLength(&ds) - 1); Tcl_SetVar2(interp, name1, name2, Tcl_DStringValue(&ds), TCL_GLOBAL_ONLY); Tcl_DStringFree(&ds); diff --git a/src/tcl.c b/src/tcl.c index 71fe6d9be..64409ee25 100644 --- a/src/tcl.c +++ b/src/tcl.c @@ -905,17 +905,10 @@ void init_unicodesup(void) } #endif /* TCL_WORKAROUND_UNICODESUP */ -/* Not going through Tcl's crazy main() system (what on earth was he - * smoking?!) so we gotta initialize the Tcl interpreter - */ -void init_tcl(int argc, char **argv) +void init_tcl0(int argc, char **argv) { Tcl_NotifierProcs notifierprocs; - - const char *encoding; - int i, j; - char *langEnv, pver[1024] = ""; - + egg_bzero(¬ifierprocs, sizeof(notifierprocs)); notifierprocs.initNotifierProc = tickle_InitNotifier; notifierprocs.createFileHandlerProc = tickle_CreateFileHandler; @@ -927,8 +920,8 @@ void init_tcl(int argc, char **argv) notifierprocs.serviceModeHookProc = tickle_ServiceModeHook; Tcl_SetNotifier(¬ifierprocs); - -/* This must be done *BEFORE* Tcl_SetSystemEncoding(), + + /* This must be done *BEFORE* Tcl_SetSystemEncoding(), * or Tcl_SetSystemEncoding() will cause a segfault. */ /* This is used for 'info nameofexecutable'. @@ -936,6 +929,19 @@ void init_tcl(int argc, char **argv) * the environment variable PATH for it to register anything. */ Tcl_FindExecutable(argv[0]); +#if TCL_MAJOR_VERSION >= 9 + Tcl_InitSubsystems(); +#endif +} + +/* Not going through Tcl's crazy main() system (what on earth was he + * smoking?!) so we gotta initialize the Tcl interpreter + */ +void init_tcl1(int argc, char **argv) +{ + const char *encoding; + int i, j; + char *langEnv, pver[1024] = ""; /* Initialize the interpreter */ interp = Tcl_CreateInterp(); diff --git a/src/userent.c b/src/userent.c index 3fde1f20a..a070995fd 100644 --- a/src/userent.c +++ b/src/userent.c @@ -1036,7 +1036,8 @@ static int xtra_pack(struct userrec *u, struct user_entry *e) static void xtra_display(int idx, struct user_entry *e) { - int code, lc, j; + int code; + Tcl_Size lc, j; EGG_CONST char **list; struct xtra_key *xk; From d58f56347a16947757a0112715b13561f49fb539 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Wed, 5 Jun 2024 19:30:11 +0200 Subject: [PATCH 293/320] Reintroduce user lookup cache Found by: mortmann Patch by: thommey Fixes: #1599 --- src/chan.h | 3 ++- src/chanprog.c | 16 +++++++++++----- src/mod/irc.mod/chan.c | 6 +++++- src/userrec.c | 16 +++++++++++++--- 4 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/chan.h b/src/chan.h index d5f11257d..31b639834 100644 --- a/src/chan.h +++ b/src/chan.h @@ -50,7 +50,8 @@ typedef struct memstruct { time_t split; /* in case they were just netsplit */ time_t last; /* for measuring idle time */ time_t delay; /* for delayed autoop */ - int tried_getuser; // TODO: use it to invalidate user cache + struct userrec *user; /* cached user lookup */ + int tried_getuser; /* negative user lookup cache */ struct memstruct *next; } memberlist; diff --git a/src/chanprog.c b/src/chanprog.c index 37e03d61a..f589593fb 100644 --- a/src/chanprog.c +++ b/src/chanprog.c @@ -118,8 +118,11 @@ struct chanset_t *findchan_by_dname(const char *name) /* Clear the user pointers in the chanlists. * - * Necessary when a hostmask is added/removed, a user is added or a new - * userfile is loaded. + * Necessary when: + * - a hostmask is added/removed + * - an account is added/removed + * - a user is added + * - new userfile is loaded */ void clear_chanlist(void) { @@ -128,14 +131,16 @@ void clear_chanlist(void) for (chan = chanset; chan; chan = chan->next) for (m = chan->channel.member; m && m->nick[0]; m = m->next) { + m->user = NULL; m->tried_getuser = 0; } } /* Clear the user pointer of a specific nick in the chanlists. - - * Necessary when a hostmask is added/removed, a nick changes, etc. - * Does not completely invalidate the channel cache like clear_chanlist(). + * + * Necessary when: + * - their hostmask changed (chghost) + * - their account changed */ void clear_chanlist_member(const char *nick) { @@ -145,6 +150,7 @@ void clear_chanlist_member(const char *nick) for (chan = chanset; chan; chan = chan->next) for (m = chan->channel.member; m && m->nick[0]; m = m->next) if (!rfc_casecmp(m->nick, nick)) { + m->user = NULL; m->tried_getuser = 0; break; } diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index 1d0082547..f0cb827d7 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -116,6 +116,8 @@ static void setaccount(char *nick, char *account) } } } + /* Username for nick could be different after account change, invalidate cache */ + clear_chanlist_member(nick); } /* Returns the current channel mode. @@ -1220,7 +1222,7 @@ static int got354(char *from, char *msg) * :geo!awesome@eggdrop.com CHGHOST tehgeo foo.io * changes user hostmask to tehgeo@foo.io */ -static int gotchghost(char *from, char *msg){ +static int gotchghost(char *from, char *msg) { struct flag_record fr = { FR_GLOBAL | FR_CHAN, 0, 0, 0, 0, 0 }; struct userrec *u; struct chanset_t *chan; @@ -1247,6 +1249,8 @@ static int gotchghost(char *from, char *msg){ check_this_member(chan, m->nick, &fr); } } + /* Username for nick could be different after host change, invalidate cache */ + clear_chanlist_member(nick); return 0; } diff --git a/src/userrec.c b/src/userrec.c index 61af179d5..084dbcd64 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -224,24 +224,34 @@ struct userrec *get_user_by_handle(struct userrec *bu, char *handle) struct userrec *get_user_from_member(memberlist *m) { - struct userrec *ret; + struct userrec *ret = NULL; + + /* Check positive/negative cache first */ + if (m->user || m->tried_getuser) { + return m->user; + } /* Check if there is a user with a matching account if one is provided */ if (m->account[0] != '*') { ret = get_user_by_account(m->account); if (ret) { - return ret; + goto getuser_done; } } + /* Check if there is a user with a matching hostmask if one is provided */ if ((m->userhost[0] != '\0') && (m->nick[0] != '\0')) { char s[NICKMAX+UHOSTLEN+1]; sprintf(s, "%s!%s", m->nick, m->userhost); ret = get_user_by_host(s); if (ret) { - return ret; + goto getuser_done; } } + +getuser_done: + m->user = ret; + m->tried_getuser = 1; return NULL; } From e931e2299a33fe9c730656eb0de4503c286680fc Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sun, 16 Jun 2024 21:43:02 +0200 Subject: [PATCH 294/320] Github CI with matrix tests (#1620) --- .github/workflows/ccpp.yml | 23 ------ .github/workflows/configure_flags.yml | 41 ----------- .github/workflows/dependencies.yml | 100 ++++++++++++++++++++++++++ .github/workflows/make.yml | 39 ++++++++++ .github/workflows/misc.yml | 45 ++++++++++++ src/Makefile.in | 3 + 6 files changed, 187 insertions(+), 64 deletions(-) delete mode 100644 .github/workflows/ccpp.yml delete mode 100644 .github/workflows/configure_flags.yml create mode 100644 .github/workflows/dependencies.yml create mode 100644 .github/workflows/make.yml create mode 100644 .github/workflows/misc.yml 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..ae9dfcfa1 --- /dev/null +++ b/.github/workflows/dependencies.yml @@ -0,0 +1,100 @@ +name: Tcl/SSL Versions + +on: + pull_request: + branches: [ develop ] + push: + branches: [ develop ] + +jobs: + tcl-versions: + name: Tcl Versions + needs: default-build + 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-10: + name: OpenSSL 1.0 + needs: default-build + 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 && 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 + needs: default-build + 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 + needs: default-build + 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/src/Makefile.in b/src/Makefile.in index 6c6be3ac1..4a3cc4d7e 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -6,6 +6,7 @@ srcdir = @srcdir@ VPATH = @srcdir@ @SET_MAKE@ +EGGEXEC = @EGGEXEC@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_DATA = @INSTALL_DATA@ @@ -18,6 +19,8 @@ CFLAGS = @CFLAGS@ -I.. -I$(top_srcdir) @SSL_INCLUDES@ @DEFS@ $(CFLGS) CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ +XLIBS = @SSL_LIBS@ @TCL_LIB_SPEC@ @LIBS@ + eggdrop_objs = bg.o botcmd.o botmsg.o botnet.o chanprog.o cmds.o dcc.o \ dccutil.o dns.o flags.o language.o match.o main.o mem.o misc.o misc_file.o \ modules.o net.o rfc1459.o tcl.o tcldcc.o tclhash.o tclmisc.o tcluser.o \ From 95f630ee045c23526b17ad646ca1f0cf7397485f Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 16 Jun 2024 21:51:33 +0200 Subject: [PATCH 295/320] Fix include sys/time.h and time.h. Both are POSIX 2001. Found by: thommey Patch by: michaelortmann Fixes: #1619 --- config.h.in | 125 +- configure | 2220 ++++++++++++++++++-------------- configure.ac | 3 +- src/eggdrop.h | 8 +- src/main.c | 6 - src/mod/compress.mod/configure | 517 ++++---- src/mod/dns.mod/configure | 495 +++---- src/mod/filesys.mod/filesys.c | 6 - src/mod/python.mod/configure | 301 ++--- src/mod/seen.mod/seen.c | 6 - src/mod/server.mod/cmdsserv.c | 1 - src/tclmisc.c | 7 - 12 files changed, 2049 insertions(+), 1646 deletions(-) diff --git a/config.h.in b/config.h.in index 30cc2b7da..80466fec7 100644 --- a/config.h.in +++ b/config.h.in @@ -56,7 +56,7 @@ #undef EGG_VERSION /* Define to nothing if C supports flexible array members, and to 1 if it does - not. That way, with a declaration like `struct s { int n; double + not. That way, with a declaration like 'struct s { int n; double d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99 compilers. When computing the size of such an object, don't use 'sizeof (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)' @@ -64,7 +64,7 @@ MSVC and with C++ compilers. */ #undef FLEXIBLE_ARRAY_MEMBER -/* Define to 1 if you have the `a2i_IPADDRESS' function. */ +/* Define to 1 if you have the 'a2i_IPADDRESS' function. */ #undef HAVE_A2I_IPADDRESS /* Define to 1 if you have the header file. */ @@ -73,48 +73,48 @@ /* Define if b64_ntop exists. */ #undef HAVE_BASE64 -/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. +/* Define to 1 if you have the declaration of 'tzname', and to 0 if you don't. */ #undef HAVE_DECL_TZNAME -/* Define to 1 if you have the header file, and it defines `DIR'. +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H -/* Define to 1 if you have the `dlopen' function. */ +/* Define to 1 if you have the 'dlopen' function. */ #undef HAVE_DLOPEN /* Define to 1 if you have the header file. */ #undef HAVE_DL_H -/* Define to 1 if you have the `dprintf' function. */ +/* Define to 1 if you have the 'dprintf' function. */ #undef HAVE_DPRINTF -/* Define to 1 if you have the `EVP_md5' function. */ +/* Define to 1 if you have the 'EVP_md5' function. */ #undef HAVE_EVP_MD5 -/* Define to 1 if you have the `EVP_PKEY_get1_EC_KEY' function. */ +/* Define to 1 if you have the 'EVP_PKEY_get1_EC_KEY' function. */ #undef HAVE_EVP_PKEY_GET1_EC_KEY -/* Define to 1 if you have the `EVP_sha1' function. */ +/* Define to 1 if you have the 'EVP_sha1' function. */ #undef HAVE_EVP_SHA1 -/* Define to 1 if you have the `explicit_bzero' function. */ +/* Define to 1 if you have the 'explicit_bzero' function. */ #undef HAVE_EXPLICIT_BZERO -/* Define to 1 if you have the `explicit_memset' function. */ +/* Define to 1 if you have the 'explicit_memset' function. */ #undef HAVE_EXPLICIT_MEMSET /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H -/* Define to 1 if you have the `getpagesize' function. */ +/* Define to 1 if you have the 'getpagesize' function. */ #undef HAVE_GETPAGESIZE -/* Define to 1 if you have the `getrandom' function. */ +/* Define to 1 if you have the 'getrandom' function. */ #undef HAVE_GETRANDOM /* Define to 1 if you have the in6addr_any constant. */ @@ -123,31 +123,31 @@ /* Define to 1 if you have the in6addr_loopback constant. */ #undef HAVE_IN6ADDR_LOOPBACK -/* Define to 1 if you have the `inet_aton' function. */ +/* Define to 1 if you have the 'inet_aton' function. */ #undef HAVE_INET_ATON -/* Define to 1 if the system has the type `intptr_t'. */ +/* Define to 1 if the system has the type 'intptr_t'. */ #undef HAVE_INTPTR_T /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the `isascii' function. */ +/* Define to 1 if you have the 'isascii' function. */ #undef HAVE_ISASCII -/* Define to 1 if you have the `crypto' library (-lcrypto). */ +/* Define to 1 if you have the 'crypto' library (-lcrypto). */ #undef HAVE_LIBCRYPTO -/* Define to 1 if you have the `dld' library (-ldld). */ +/* Define to 1 if you have the 'dld' library (-ldld). */ #undef HAVE_LIBDLD -/* Define to 1 if you have the `ssl' library (-lssl). */ +/* Define to 1 if you have the 'ssl' library (-lssl). */ #undef HAVE_LIBSSL /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H -/* Define to 1 if you have the `load' function. */ +/* Define to 1 if you have the 'load' function. */ #undef HAVE_LOAD /* Define to 1 if you have the header file. */ @@ -162,28 +162,28 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_RLD_H -/* Define to 1 if you have the `MD5_Final' function. */ +/* Define to 1 if you have the 'MD5_Final' function. */ #undef HAVE_MD5_FINAL -/* Define to 1 if you have the `MD5_Init' function. */ +/* Define to 1 if you have the 'MD5_Init' function. */ #undef HAVE_MD5_INIT -/* Define to 1 if you have the `MD5_Update' function. */ +/* Define to 1 if you have the 'MD5_Update' function. */ #undef HAVE_MD5_UPDATE -/* Define to 1 if you have the `memset_explicit' function. */ +/* Define to 1 if you have the 'memset_explicit' function. */ #undef HAVE_MEMSET_EXPLICIT -/* Define to 1 if you have the `memset_s' function. */ +/* 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. */ +/* Define to 1 if you have a working 'mmap' system call. */ #undef HAVE_MMAP -/* Define to 1 if you have the header file, and it defines `DIR'. */ +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ @@ -195,7 +195,7 @@ /* Do we have ? */ #undef HAVE_NET_ERRNO_H -/* Define to 1 if you have the `NSLinkModule' function. */ +/* Define to 1 if you have the 'NSLinkModule' function. */ #undef HAVE_NSLINKMODULE /* Define this if your OpenSSL library has MD5 cipher support. */ @@ -216,13 +216,13 @@ /* Define to 1 if you have the header file. */ #undef HAVE_RLD_H -/* Define to 1 if you have the `rld_load' function. */ +/* Define to 1 if you have the 'rld_load' function. */ #undef HAVE_RLD_LOAD -/* Define to 1 if you have the `shl_load' function. */ +/* Define to 1 if you have the 'shl_load' function. */ #undef HAVE_SHL_LOAD -/* Define to 1 if you have the `snprintf' function. */ +/* Define to 1 if you have the 'snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if you have the header file. */ @@ -246,26 +246,26 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define to 1 if you have the `strlcpy' function. */ +/* Define to 1 if you have the 'strlcpy' function. */ #undef HAVE_STRLCPY -/* Define to 1 if the system has the type `struct in6_addr'. */ +/* Define to 1 if the system has the type 'struct in6_addr'. */ #undef HAVE_STRUCT_IN6_ADDR -/* Define to 1 if the system has the type `struct sockaddr_in6'. */ +/* Define to 1 if the system has the type 'struct sockaddr_in6'. */ #undef HAVE_STRUCT_SOCKADDR_IN6 -/* Define to 1 if `tm_zone' is a member of `struct tm'. */ +/* Define to 1 if 'tm_zone' is a member of 'struct tm'. */ #undef HAVE_STRUCT_TM_TM_ZONE -/* Define to 1 if you have the header file, and it defines `DIR'. +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H -/* Define to 1 if you have the header file, and it defines `DIR'. +/* Define to 1 if you have the header file, and it defines 'DIR'. */ #undef HAVE_SYS_NDIR_H @@ -287,18 +287,21 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H -/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use - `HAVE_STRUCT_TM_TM_ZONE' instead. */ +/* 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 -/* Define to 1 if you don't have `tm_zone' but do have the external array - `tzname'. */ +/* Define to 1 if you don't have 'tm_zone' but do have the external array + 'tzname'. */ #undef HAVE_TZNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the `vsnprintf' function. */ +/* Define to 1 if you have the 'vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define to 1 if you have the header file. */ @@ -357,31 +360,31 @@ /* Define if running under QNX. */ #undef QNX_HACKS -/* Define to the type of arg 1 for `select'. */ +/* Define to the type of arg 1 for 'select'. */ #undef SELECT_TYPE_ARG1 -/* Define to the type of args 2, 3 and 4 for `select'. */ +/* Define to the type of args 2, 3 and 4 for 'select'. */ #undef SELECT_TYPE_ARG234 -/* Define to the type of arg 5 for `select'. */ +/* Define to the type of arg 5 for 'select'. */ #undef SELECT_TYPE_ARG5 -/* The size of `char', as computed by sizeof. */ +/* The size of 'char', as computed by sizeof. */ #undef SIZEOF_CHAR -/* The size of `int', as computed by sizeof. */ +/* The size of 'int', as computed by sizeof. */ #undef SIZEOF_INT -/* The size of `long', as computed by sizeof. */ +/* The size of 'long', as computed by sizeof. */ #undef SIZEOF_LONG -/* The size of `short', as computed by sizeof. */ +/* The size of 'short', as computed by sizeof. */ #undef SIZEOF_SHORT -/* The size of `void*', as computed by sizeof. */ +/* The size of 'void*', as computed by sizeof. */ #undef SIZEOF_VOIDP -/* Define to 1 if all of the C90 standard headers exist (not just the ones +/* Define to 1 if all of the C89 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 @@ -392,10 +395,10 @@ /* Define this to enable SSL support. */ #undef TLS -/* Define to 1 if your declares `struct tm'. */ +/* Define to 1 if your declares 'struct tm'. */ #undef TM_IN_SYS_TIME -/* Enable extensions on AIX 3, Interix. */ +/* Enable extensions on AIX, Interix, z/OS. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif @@ -456,11 +459,15 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif +/* Enable extensions specified by C23 Annex F. */ +#ifndef __STDC_WANT_IEC_60559_EXT__ +# undef __STDC_WANT_IEC_60559_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. */ +/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */ #ifndef __STDC_WANT_IEC_60559_TYPES_EXT__ # undef __STDC_WANT_IEC_60559_TYPES_EXT__ #endif @@ -498,14 +505,14 @@ /* Define this to a 64-bit type on Cygwin to satisfy OpenSSL dependencies. */ #undef __int64 -/* Define to empty if `const' does not conform to ANSI C. */ +/* Define to empty if 'const' does not conform to ANSI C. */ #undef const /* Define this to ASN1_STRING_get0_data when using OpenSSL 1.1.0+, ASN1_STRING_data otherwise. */ #undef egg_ASN1_string_data -/* Define to `__inline__' or `__inline' if that's what the C compiler +/* Define to '__inline__' or '__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline @@ -518,14 +525,14 @@ /* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t -/* Define to `unsigned int' if does not define. */ +/* Define as 'unsigned int' if doesn't define. */ #undef size_t /* Substitute for socklen_t */ #undef socklen_t -/* Define to empty if the keyword `volatile' does not work. Warning: valid - code using `volatile' can become incorrect without. Disable with care. */ +/* Define to empty if the keyword 'volatile' does not work. Warning: valid + code using 'volatile' can become incorrect without. Disable with care. */ #undef volatile #endif /* !_EGG_CONFIG_H */ diff --git a/configure b/configure index 2a6387317..41fc0085f 100755 --- a/configure +++ b/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac 98f8972a. +# From configure.ac bc7bc2ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. +# Generated by GNU Autoconf 2.72 for Eggdrop 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # @@ -20,7 +20,6 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -29,12 +28,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,15 +136,14 @@ case $- in # (((( 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'. +# out after a failed 'exec'. 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="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -152,12 +151,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi " @@ -175,8 +175,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else \$as_nop - exitcode=1; echo positional parameters were not saved. +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -190,14 +191,15 @@ test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else $as_nop - as_have_required=no +else case e in #( + e) as_have_required=no ;; +esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do @@ -230,12 +232,13 @@ IFS=$as_save_IFS if $as_found then : -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +else case e in #( + e) 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 ;; +esac fi @@ -257,7 +260,7 @@ case $- in # (((( 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'. +# out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -277,7 +280,8 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi +fi ;; +esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -316,14 +320,6 @@ 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 # ------------- @@ -392,11 +388,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -410,21 +407,14 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac 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] # ---------------------------------------- @@ -498,6 +488,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' + t clear + :clear s/[$]LINENO.*/&-/ t lineno b @@ -546,7 +538,6 @@ esac 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 @@ -558,9 +549,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -585,10 +576,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -947,7 +938,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1160,7 +1151,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1176,7 +1167,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1206,8 +1197,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" ;; *=*) @@ -1215,7 +1206,7 @@ Try \`$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1265,7 +1256,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: `$host' +# There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1333,7 +1324,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1361,7 +1352,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop 1.9.5 to adapt to many kinds of systems. +'configure' configures Eggdrop 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1375,11 +1366,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' + -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] + --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1387,10 +1378,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. For better control, use the options below. @@ -1472,7 +1463,7 @@ Some influential environment variables: you have headers in a nonstandard directory CPP C preprocessor -Use these variables to override the choices made by `configure' or to help +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 . @@ -1541,9 +1532,9 @@ 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.71 +generated by GNU Autoconf 2.72 -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. @@ -1584,11 +1575,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1607,8 +1599,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -1616,10 +1608,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1659,11 +1653,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1702,11 +1697,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1724,15 +1720,15 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. */ + which can conflict with char $2 (void); below. */ #include #undef $2 @@ -1743,7 +1739,7 @@ else $as_nop #ifdef __cplusplus extern "C" #endif -char $2 (); +char $2 (void); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ @@ -1762,11 +1758,13 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext + conftest$ac_exeext conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1805,12 +1803,13 @@ printf "%s\n" "$ac_try_echo"; } >&5 test $ac_status = 0; }; } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: program exited with status $ac_status" >&5 +else case e in #( + e) 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 + ac_retval=$ac_status ;; +esac fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno @@ -1830,8 +1829,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @@ -1861,12 +1860,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - eval "$3=yes" +else case e in #( + e) eval "$3=yes" ;; +esac 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 +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1887,8 +1888,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int @@ -1904,8 +1905,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int @@ -1921,12 +1922,15 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" -else $as_nop - eval "$4=no" +else case e in #( + e) eval "$4=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1948,8 +1952,8 @@ 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'` +else case e in #( + e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -1973,12 +1977,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS - + ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2032,18 +2038,19 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid; break -else $as_nop - as_fn_arith $ac_mid + 1 && ac_lo=$as_val +else case e in #( + e) as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int @@ -2078,20 +2085,23 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=$ac_mid; break -else $as_nop - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val +else case e in #( + e) as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else $as_nop - ac_lo= ac_hi= +else case e in #( + e) ac_lo= ac_hi= ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext # Binary search between lo and hi bounds. @@ -2114,8 +2124,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid -else $as_nop - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +else case e in #( + e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done @@ -2163,8 +2174,9 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : echo >>conftest.val; read $3 &6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } fi done @@ -2485,9 +2497,7 @@ 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; +static char *e (char **p, int i) { return p[i]; } @@ -2501,6 +2511,21 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + /* 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 @@ -2528,16 +2553,19 @@ 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? +/* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif +// See if C++-style comments work. + #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); +extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -2587,7 +2615,6 @@ 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) @@ -2653,6 +2680,8 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); // Check named initializers. struct named_init ni = { @@ -2674,7 +2703,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? +/* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -2789,7 +2818,6 @@ as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H" as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H" -as_fn_append ac_header_c_list " sys/time.h sys_time_h HAVE_SYS_TIME_H" as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H" as_fn_append ac_header_c_list " sys/socket.h sys_socket_h HAVE_SYS_SOCKET_H" as_fn_append ac_header_c_list " sys/param.h sys_param_h HAVE_SYS_PARAM_H" @@ -2873,8 +2901,9 @@ 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 +else case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac fi @@ -2902,12 +2931,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -2916,18 +2945,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -2943,11 +2972,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -3049,8 +3078,8 @@ 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 +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -3072,7 +3101,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -3098,8 +3128,8 @@ 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 +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -3121,7 +3151,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -3150,10 +3181,10 @@ esac fi -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;} +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; } +See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -3225,8 +3256,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 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' + # 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, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -3246,7 +3277,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' + # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -3257,8 +3288,9 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else $as_nop - ac_file='' +else case e in #( + e) ac_file='' ;; +esac fi if test -z "$ac_file" then : @@ -3267,13 +3299,14 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac 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; } @@ -3297,10 +3330,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 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 -# `rm'. + # 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 +# 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -3310,11 +3343,12 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -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;} +else case e in #( + e) { { 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -3330,6 +3364,8 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; return ferror (f) || fclose (f) != 0; ; @@ -3369,26 +3405,27 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { 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: 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; } +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } fi fi fi { 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 +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3420,16 +3457,18 @@ then : break;; esac done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -3440,8 +3479,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3458,12 +3497,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -3481,8 +3522,8 @@ 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 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -3500,8 +3541,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" +else case e in #( + e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3516,8 +3557,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3534,12 +3575,15 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -3566,8 +3610,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3584,25 +3628,28 @@ 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 +CC=$ac_save_CC ;; +esac fi 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c11" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 + ac_prog_cc_stdc=c11 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -3612,8 +3659,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3630,25 +3677,28 @@ 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 +CC=$ac_save_CC ;; +esac 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c99" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 + ac_prog_cc_stdc=c99 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -3658,8 +3708,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3676,25 +3726,28 @@ 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 +CC=$ac_save_CC ;; +esac fi 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c89" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 + ac_prog_cc_stdc=c89 ;; +esac fi fi @@ -3771,8 +3824,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 @@ -3788,10 +3841,12 @@ _ACEOF 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 +else case e in #( + e) ac_cv_safe_to_define___extensions__=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac 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; } @@ -3801,8 +3856,8 @@ 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 +else case e in #( + e) ac_cv_should_define__xopen_source=no if test $ac_cv_header_wchar_h = yes then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -3821,8 +3876,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 @@ -3840,10 +3895,12 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_should_define__xopen_source=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi +fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } @@ -3868,6 +3925,8 @@ printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h + printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h @@ -3887,8 +3946,9 @@ then : printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h -else $as_nop - MINIX= +else case e in #( + e) MINIX= ;; +esac fi if test $ac_cv_safe_to_define___extensions__ = yes then : @@ -3906,15 +3966,21 @@ 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 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS 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. */ -char strerror (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char strerror (void); int main (void) { @@ -3945,11 +4011,13 @@ done if test ${ac_cv_search_strerror+y} then : -else $as_nop - ac_cv_search_strerror=no +else case e in #( + e) ac_cv_search_strerror=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 printf "%s\n" "$ac_cv_search_strerror" >&6; } @@ -3969,8 +4037,8 @@ printf %s "checking for icc... " >&6; } if test ${egg_cv_var_cc_icc+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3984,13 +4052,15 @@ then : egg_cv_var_cc_icc="yes" -else $as_nop - +else case e in #( + e) egg_cv_var_cc_icc="no" - + ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_cc_icc" >&5 printf "%s\n" "$egg_cv_var_cc_icc" >&6; } @@ -4008,8 +4078,8 @@ printf %s "checking whether the compiler understands -pipe... " >&6; } if test ${egg_cv_var_ccpipe+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ac_old_CC="$CC" CC="$CC -pipe" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4028,14 +4098,16 @@ then : egg_cv_var_ccpipe="yes" -else $as_nop - +else case e in #( + e) egg_cv_var_ccpipe="no" - + ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC="$ac_old_CC" - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccpipe" >&5 printf "%s\n" "$egg_cv_var_ccpipe" >&6; } @@ -4060,8 +4132,8 @@ printf %s "checking whether the compiler understands -Wall... " >&6; } if test ${egg_cv_var_ccwall+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ac_old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wall" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4080,14 +4152,16 @@ then : egg_cv_var_ccwall="yes" -else $as_nop - +else case e in #( + e) egg_cv_var_ccwall="no" - + ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$ac_old_CFLAGS" - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccwall" >&5 printf "%s\n" "$egg_cv_var_ccwall" >&6; } @@ -4141,8 +4215,8 @@ if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS @@ -4196,7 +4270,8 @@ esac IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir - + ;; +esac fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install @@ -4228,8 +4303,8 @@ 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 +else case e in #( + e) if test -n "$MAKE"; then ac_cv_prog_MAKE="$MAKE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4251,7 +4326,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi MAKE=$ac_cv_prog_MAKE if test -n "$MAKE"; then @@ -4273,8 +4349,8 @@ 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 +else case e in #( + e) cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' @@ -4286,7 +4362,8 @@ case `${MAKE-make} -f conftest.make 2>/dev/null` in *) eval ac_cv_prog_make_${ac_make}_set=no;; esac -rm -f conftest.make +rm -f conftest.make ;; +esac fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -4306,8 +4383,8 @@ 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 +else case e in #( + e) if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4329,7 +4406,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then @@ -4351,8 +4429,8 @@ 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 +else case e in #( + e) if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4374,7 +4452,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then @@ -4424,8 +4503,8 @@ printf %s "checking whether $ac_prog works... " >&6; } if test ${ac_cv_prog_HEAD_1+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) if test -n "$HEAD_1"; then # Let the user override the test. ac_cv_prog_HEAD_1="$HEAD_1" @@ -4434,7 +4513,8 @@ else $as_nop ac_cv_prog_HEAD_1="$ac_prog" fi fi - + ;; +esac fi if test -n "$ac_cv_prog_HEAD_1"; then @@ -4470,8 +4550,8 @@ 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 +else case e in #( + e) if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4493,7 +4573,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then @@ -4519,8 +4600,8 @@ 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 +else case e in #( + e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4542,7 +4623,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then @@ -4576,8 +4658,8 @@ 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 +else case e in #( + e) if test -n "$BASENAME"; then ac_cv_prog_BASENAME="$BASENAME" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4599,7 +4681,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi BASENAME=$ac_cv_prog_BASENAME if test -n "$BASENAME"; then @@ -4629,8 +4712,8 @@ 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 +else case e in #( + e) if test -n "$UNAME"; then ac_cv_prog_UNAME="$UNAME" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4652,7 +4735,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi UNAME=$ac_cv_prog_UNAME if test -n "$UNAME"; then @@ -4673,8 +4757,9 @@ fi if test ${enable_strip+y} then : enableval=$enable_strip; enable_strip="$enableval" -else $as_nop - enable_strip="no" +else case e in #( + e) enable_strip="no" ;; +esac fi @@ -4706,15 +4791,16 @@ 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 +else case e in #( + e) ac_build_alias=$build_alias test "x$ac_build_alias" = x && 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 - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } @@ -4741,14 +4827,15 @@ 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 +else case e in #( + e) 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 fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } @@ -4775,8 +4862,8 @@ 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/ +else case e in #( + e) 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" done @@ -4801,9 +4888,10 @@ do 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 -case `"$ac_path_SED" --version 2>&1` in +case `"$ac_path_SED" --version 2>&1` in #( *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -4838,7 +4926,8 @@ IFS=$as_save_IFS else ac_cv_path_SED=$SED fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } @@ -4860,8 +4949,8 @@ 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 +else case e in #( + e) # 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 @@ -4879,9 +4968,10 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else $as_nop - # Broken: fails on valid input. -continue +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -4895,15 +4985,16 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else $as_nop - # Passes both tests. +else case e in #( + e) # Passes both tests. ac_preproc_ok=: -break +break ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# 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 : @@ -4912,7 +5003,8 @@ fi done ac_cv_prog_CPP=$CPP - + ;; +esac fi CPP=$ac_cv_prog_CPP else @@ -4935,9 +5027,10 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else $as_nop - # Broken: fails on valid input. -continue +else case e in #( + e) # Broken: fails on valid input. +continue ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -4951,24 +5044,26 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else $as_nop - # Passes both tests. +else case e in #( + e) # Passes both tests. ac_preproc_ok=: -break +break ;; +esac fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# 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;} +else case e in #( + e) { { 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi ac_ext=c @@ -4978,14 +5073,14 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ 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} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 +printf %s "checking for egrep -e... " >&6; } +if test ${ac_cv_path_EGREP_TRADITIONAL+y} then : printf %s "(cached) " >&6 -else $as_nop - if test -z "$GREP"; then - ac_path_GREP_found=false +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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 @@ -4999,13 +5094,14 @@ do 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 + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( *GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -5014,14 +5110,14 @@ case `"$ac_path_GREP" --version 2>&1` in 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 + printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "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 + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_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 + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break @@ -5029,35 +5125,24 @@ case `"$ac_path_GREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - $ac_path_GREP_found && break 3 + $ac_path_EGREP_TRADITIONAL_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 + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + : fi else - ac_cv_path_GREP=$GREP -fi - + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL 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} + if test "$ac_cv_path_EGREP_TRADITIONAL" 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 + ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" +else case e in #( + e) if test -z "$EGREP_TRADITIONAL"; then + ac_path_EGREP_TRADITIONAL_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 @@ -5071,13 +5156,14 @@ do 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 + ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue +# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. + # Check for GNU $ac_path_EGREP_TRADITIONAL +case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( *GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -5086,14 +5172,14 @@ case `"$ac_path_EGREP" --version 2>&1` in 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 + printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" + "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "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 + if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_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 + ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" + ac_path_EGREP_TRADITIONAL_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break @@ -5101,24 +5187,25 @@ case `"$ac_path_EGREP" --version 2>&1` in rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - $ac_path_EGREP_found && break 3 + $ac_path_EGREP_TRADITIONAL_found && break 3 done done done IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then + if test -z "$ac_cv_path_EGREP_TRADITIONAL"; 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 + ac_cv_path_EGREP_TRADITIONAL=$EGREP_TRADITIONAL fi - - fi + ;; +esac +fi ;; +esac 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" - +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 +printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } + EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL # FIXME: this needs to be fixed so that it works on IRIX @@ -5132,15 +5219,21 @@ 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 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS 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. */ -char gethostbyname (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); int main (void) { @@ -5171,11 +5264,13 @@ done if test ${ac_cv_search_gethostbyname+y} then : -else $as_nop - ac_cv_search_gethostbyname=no +else case e in #( + e) ac_cv_search_gethostbyname=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } @@ -5191,15 +5286,21 @@ 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 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS 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. */ -char socket (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); int main (void) { @@ -5230,11 +5331,13 @@ done if test ${ac_cv_search_socket+y} then : -else $as_nop - ac_cv_search_socket=no +else case e in #( + e) ac_cv_search_socket=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 printf "%s\n" "$ac_cv_search_socket" >&6; } @@ -5243,23 +5346,29 @@ if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -else $as_nop - +else case e in #( + e) { 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" 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. */ -char socket (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char socket (void); int main (void) { @@ -5271,12 +5380,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_socket_socket=yes -else $as_nop - ac_cv_lib_socket_socket=no +else case e in #( + e) ac_cv_lib_socket_socket=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } @@ -5284,7 +5395,8 @@ if test "x$ac_cv_lib_socket_socket" = xyes then : LIBS="-lsocket -lnsl $LIBS" fi - + ;; +esac fi @@ -5328,8 +5440,14 @@ printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... /* 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. */ -char pthread_join (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (void); int main (void) { @@ -5423,7 +5541,7 @@ case $host_os in _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 + $EGREP_TRADITIONAL "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;} @@ -5453,8 +5571,8 @@ 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 +else case e in #( + e) ax_cv_PTHREAD_CLANG=no # Note that Autoconf sets GCC=yes for Clang as well as GCC if test "x$GCC" = "xyes"; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5466,14 +5584,15 @@ else $as_nop _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 + $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 then : ax_cv_PTHREAD_CLANG=yes fi rm -rf conftest* fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } @@ -5523,8 +5642,9 @@ esac if test "x$ax_pthread_check_macro" = "x--" then : ax_pthread_check_cond=0 -else $as_nop - ax_pthread_check_cond="!defined($ax_pthread_check_macro)" +else case e in #( + e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;; +esac fi @@ -5558,8 +5678,8 @@ 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 +else case e in #( + e) if test -n "$ax_pthread_config"; then ac_cv_prog_ax_pthread_config="$ax_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5582,7 +5702,8 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" -fi +fi ;; +esac fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then @@ -5715,8 +5836,8 @@ printf %s "checking whether Clang needs flag to prevent \"argument unused\" warn 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 +else case e in #( + e) 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 # (.c -> exe), because the warning occurs only in the second @@ -5762,7 +5883,8 @@ then : ax_pthread_try=no fi ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - + ;; +esac fi { 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; } @@ -5789,8 +5911,8 @@ 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 +else case e in #( + e) 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. */ @@ -5810,7 +5932,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } @@ -5830,14 +5953,15 @@ printf %s "checking whether more special flags are required for pthreads... " >& if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} then : printf %s "(cached) " >&6 -else $as_nop - ax_cv_PTHREAD_SPECIAL_FLAGS=no +else case e in #( + e) ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" ;; esac - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } @@ -5853,8 +5977,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -5869,12 +5993,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_PTHREAD_PRIO_INHERIT=yes -else $as_nop - ax_cv_PTHREAD_PRIO_INHERIT=no +else case e in #( + e) ax_cv_PTHREAD_PRIO_INHERIT=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } @@ -5924,8 +6050,8 @@ 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 +else case e in #( + e) if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5947,7 +6073,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then @@ -5974,8 +6101,8 @@ 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 +else case e in #( + e) if test -n "$PTHREAD_CXX"; then ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5997,7 +6124,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX if test -n "$PTHREAD_CXX"; then @@ -6054,15 +6182,21 @@ 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 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS 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. */ -char dlopen (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (void); int main (void) { @@ -6093,11 +6227,13 @@ done if test ${ac_cv_search_dlopen+y} then : -else $as_nop - ac_cv_search_dlopen=no +else case e in #( + e) ac_cv_search_dlopen=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 printf "%s\n" "$ac_cv_search_dlopen" >&6; } @@ -6113,16 +6249,22 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" 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. */ -char tan (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char tan (void); int main (void) { @@ -6134,12 +6276,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_m_tan=yes -else $as_nop - ac_cv_lib_m_tan=no +else case e in #( + e) ac_cv_lib_m_tan=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_tan" >&5 printf "%s\n" "$ac_cv_lib_m_tan" >&6; } @@ -6154,16 +6298,22 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" 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. */ -char shl_load (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (void); int main (void) { @@ -6175,12 +6325,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes -else $as_nop - ac_cv_lib_dld_shl_load=no +else case e in #( + e) ac_cv_lib_dld_shl_load=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { 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; } @@ -6203,14 +6355,15 @@ 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 +else case e in #( + e) 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 fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } @@ -6244,8 +6397,9 @@ 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` +else case e in #( + e) egg_cv_var_system_type=`$UNAME -s` ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_type" >&5 printf "%s\n" "$egg_cv_var_system_type" >&6; } @@ -6254,8 +6408,9 @@ 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` +else case e in #( + e) egg_cv_var_system_release=`$UNAME -r` ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_release" >&5 printf "%s\n" "$egg_cv_var_system_release" >&6; } @@ -6689,14 +6844,14 @@ EOF ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` + as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> @@ -6713,10 +6868,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_ac_Header=yes" -else $as_nop - eval "$as_ac_Header=no" +else case e in #( + e) eval "$as_ac_Header=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$as_ac_Header { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -6724,7 +6881,7 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -6738,16 +6895,22 @@ 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 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS 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. */ -char opendir (); -int + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); +int main (void) { return opendir (); @@ -6777,11 +6940,13 @@ done if test ${ac_cv_search_opendir+y} then : -else $as_nop - ac_cv_search_opendir=no +else case e in #( + e) ac_cv_search_opendir=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 printf "%s\n" "$ac_cv_search_opendir" >&6; } @@ -6798,15 +6963,21 @@ 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 +else case e in #( + e) ac_func_search_save_LIBS=$LIBS 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. */ -char opendir (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char opendir (void); int main (void) { @@ -6837,11 +7008,13 @@ done if test ${ac_cv_search_opendir+y} then : -else $as_nop - ac_cv_search_opendir=no +else case e in #( + e) ac_cv_search_opendir=no ;; +esac fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS +LIBS=$ac_func_search_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 printf "%s\n" "$ac_cv_search_opendir" >&6; } @@ -6855,8 +7028,6 @@ fi fi - - 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 : @@ -6940,6 +7111,12 @@ 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 @@ -6962,8 +7139,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7027,10 +7204,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes -else $as_nop - ac_cv_c_const=no +else case e in #( + e) ac_cv_c_const=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } @@ -7045,8 +7224,8 @@ 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 +else case e in #( + e) ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7092,8 +7271,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext int main (void) { -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ && LITTLE_ENDIAN) bogus endian macros #endif @@ -7124,8 +7303,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes -else $as_nop - ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -7169,8 +7349,9 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes -else $as_nop - ac_cv_c_bigendian=no +else case e in #( + e) ac_cv_c_bigendian=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -7197,22 +7378,23 @@ unsigned short int ascii_mm[] = int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } - extern int foo; - -int -main (void) -{ -return use_ascii (foo) == use_ebcdic (foo); - ; - return 0; -} + int + main (int argc, char **argv) + { + /* Intimidate the compiler so that it does not + optimize the arrays away. */ + char *p = argv[0]; + ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; + ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; + return use_ascii (argc) == use_ebcdic (*p); + } _ACEOF -if ac_fn_c_try_compile "$LINENO" +if ac_fn_c_try_link "$LINENO" then : - if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then + if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then ac_cv_c_bigendian=yes fi - if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then + if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else @@ -7221,9 +7403,10 @@ then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam \ + conftest$ac_exeext conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int @@ -7246,14 +7429,17 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_bigendian=no -else $as_nop - ac_cv_c_bigendian=yes +else case e in #( + e) ac_cv_c_bigendian=yes ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi - fi + fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 printf "%s\n" "$ac_cv_c_bigendian" >&6; } @@ -7278,8 +7464,8 @@ 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 +else case e in #( + e) ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7297,7 +7483,8 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 printf "%s\n" "$ac_cv_c_inline" >&6; } @@ -7323,8 +7510,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7337,7 +7524,9 @@ int m = getchar (); struct s *p = (struct s *) malloc (offsetof (struct s, d) + m * sizeof (double)); p->d[0] = 0.0; - return p->d != (double *) NULL; + m = p->d != (double *) NULL; + free (p); + return m; ; return 0; } @@ -7345,10 +7534,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_flexmember=yes -else $as_nop - ac_cv_c_flexmember=no +else case e in #( + e) ac_cv_c_flexmember=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5 printf "%s\n" "$ac_cv_c_flexmember" >&6; } @@ -7368,8 +7559,8 @@ then : printf "%s\n" "#define HAVE_INTPTR_T 1" >>confdefs.h -else $as_nop - for ac_type in 'int' 'long int' 'long long int'; do +else case e in #( + e) for ac_type in 'int' 'long int' 'long long int'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default @@ -7393,7 +7584,8 @@ printf "%s\n" "#define intptr_t $ac_type" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test -z "$ac_type" && break - done + done ;; +esac fi @@ -7403,8 +7595,8 @@ fi if test "x$ac_cv_type_pid_t" = xyes then : -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _WIN64 && !defined __CYGWIN__ @@ -7423,14 +7615,16 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_pid_type='int' -else $as_nop - ac_pid_type='__int64' +else case e in #( + e) ac_pid_type='__int64' ;; +esac 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 - + ;; +esac fi @@ -7438,10 +7632,11 @@ 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 : -else $as_nop - +else case e in #( + e) printf "%s\n" "#define size_t unsigned int" >>confdefs.h - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 @@ -7449,8 +7644,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7468,10 +7663,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_struct_tm=time.h -else $as_nop - ac_cv_struct_tm=sys/time.h +else case e in #( + e) ac_cv_struct_tm=sys/time.h ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 printf "%s\n" "$ac_cv_struct_tm" >&6; } @@ -7486,8 +7683,8 @@ printf %s "checking for $CC options needed to detect all undeclared functions... if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_save_CFLAGS=$CFLAGS +else case e in #( + e) 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" @@ -7506,8 +7703,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - # This test program should compile successfully. +else case e in #( + e) # 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 @@ -7535,26 +7732,29 @@ 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 +else case e in #( + e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; +esac fi break fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done CFLAGS=$ac_save_CFLAGS - + ;; +esac 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;} + { { 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; } ;; #( +See 'config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : @@ -7583,8 +7783,9 @@ else if test "x$ac_cv_have_decl_tzname" = xyes then : ac_have_decl=1 -else $as_nop - ac_have_decl=0 +else case e in #( + e) ac_have_decl=0 ;; +esac fi printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h @@ -7593,8 +7794,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !HAVE_DECL_TZNAME @@ -7612,11 +7813,13 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_var_tzname=yes -else $as_nop - ac_cv_var_tzname=no +else case e in #( + e) ac_cv_var_tzname=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext + conftest$ac_exeext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 printf "%s\n" "$ac_cv_var_tzname" >&6; } @@ -7632,8 +7835,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7650,10 +7853,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_volatile=yes -else $as_nop - ac_cv_c_volatile=no +else case e in #( + e) ac_cv_c_volatile=no ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 printf "%s\n" "$ac_cv_c_volatile" >&6; } @@ -7668,8 +7873,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7684,11 +7889,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_ax_type_socklen_t=yes -else $as_nop - ac_cv_ax_type_socklen_t=no +else case e in #( + e) ac_cv_ax_type_socklen_t=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + ;; +esac fi { 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; } @@ -7710,8 +7917,8 @@ ac_stdint_h=`echo eggint.h` if test ${ac_cv_header_stdint_t+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS="" old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="" old_CFLAGS="$CFLAGS" ; CFLAGS="" @@ -7730,8 +7937,9 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_stdint_result="(assuming C99 compatible system)" ac_cv_header_stdint_t="stdint.h"; -else $as_nop - ac_cv_header_stdint_t="" +else case e in #( + e) ac_cv_header_stdint_t="" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then @@ -7756,7 +7964,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi CXXFLAGS="$old_CXXFLAGS" CPPFLAGS="$old_CPPFLAGS" -CFLAGS="$old_CFLAGS" +CFLAGS="$old_CFLAGS" ;; +esac fi @@ -7788,8 +7997,8 @@ printf %s "checking for stdint uintptr_t... " >&6; } if test ${ac_cv_header_stdint_x+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 printf "%s\n" "(..)" >&6; } @@ -7802,8 +8011,9 @@ printf "%s\n" "(..)" >&6; } if test "x$ac_cv_type_uintptr_t" = xyes then : ac_cv_header_stdint_x=$i -else $as_nop - continue +else case e in #( + e) continue ;; +esac fi ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i> @@ -7811,8 +8021,9 @@ fi if test "x$ac_cv_type_uint64_t" = xyes then : and64="/uint64_t" -else $as_nop - and64="" +else case e in #( + e) and64="" ;; +esac fi ac_cv_stdint_result="(seen uintptr_t$and64 in $i)" @@ -7820,7 +8031,8 @@ fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5 printf %s "checking for stdint uintptr_t... " >&6; } - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5 printf "%s\n" "$ac_cv_header_stdint_x" >&6; } @@ -7833,8 +8045,8 @@ printf %s "checking for stdint uint32_t... " >&6; } if test ${ac_cv_header_stdint_o+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 printf "%s\n" "(..)" >&6; } @@ -7847,8 +8059,9 @@ printf "%s\n" "(..)" >&6; } if test "x$ac_cv_type_uint32_t" = xyes then : ac_cv_header_stdint_o=$i -else $as_nop - continue +else case e in #( + e) continue ;; +esac fi ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i> @@ -7856,8 +8069,9 @@ fi if test "x$ac_cv_type_uint64_t" = xyes then : and64="/uint64_t" -else $as_nop - and64="" +else case e in #( + e) and64="" ;; +esac fi ac_cv_stdint_result="(seen uint32_t$and64 in $i)" @@ -7866,7 +8080,8 @@ fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5 printf %s "checking for stdint uint32_t... " >&6; } - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5 printf "%s\n" "$ac_cv_header_stdint_o" >&6; } @@ -7881,8 +8096,8 @@ 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 - +else case e in #( + e) ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 printf "%s\n" "(..)" >&6; } @@ -7894,8 +8109,9 @@ printf "%s\n" "(..)" >&6; } if test "x$ac_cv_type_u_int32_t" = xyes then : ac_cv_header_stdint_u=$i -else $as_nop - continue +else case e in #( + e) continue ;; +esac fi ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include<$i> @@ -7903,8 +8119,9 @@ fi if test "x$ac_cv_type_u_int64_t" = xyes then : and64="/u_int64_t" -else $as_nop - and64="" +else case e in #( + e) and64="" ;; +esac fi ac_cv_stdint_result="(seen u_int32_t$and64 in $i)" @@ -7913,7 +8130,8 @@ fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5 printf %s "checking for stdint u_int32_t... " >&6; } - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5 printf "%s\n" "$ac_cv_header_stdint_u" >&6; } @@ -7928,28 +8146,30 @@ 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]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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" +else case e in #( + e) 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 - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_char" = 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 77 "cannot compute sizeof (char) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_char=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 printf "%s\n" "$ac_cv_sizeof_char" >&6; } @@ -7961,28 +8181,30 @@ 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]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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" +else case e in #( + e) 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 - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_short" = 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 77 "cannot compute sizeof (short) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 printf "%s\n" "$ac_cv_sizeof_short" >&6; } @@ -7994,28 +8216,30 @@ 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]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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" +else case e in #( + e) 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 - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_int" = 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 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 printf "%s\n" "$ac_cv_sizeof_int" >&6; } @@ -8027,28 +8251,30 @@ 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]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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" +else case e in #( + e) 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 - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_long" = 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 77 "cannot compute sizeof (long) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 printf "%s\n" "$ac_cv_sizeof_long" >&6; } @@ -8060,28 +8286,30 @@ 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]];'. +# declarations like 'int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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" +else case e in #( + e) 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 - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} +else case e in #( + e) if test "$ac_cv_type_voidp" = 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 77 "cannot compute sizeof (void*) -See \`config.log' for more details" "$LINENO" 5; } +See 'config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_voidp=0 - fi + fi ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 printf "%s\n" "$ac_cv_sizeof_voidp" >&6; } @@ -8255,8 +8483,8 @@ 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 *' +else case e in #( + e) 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 @@ -8288,7 +8516,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done done done - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 printf "%s\n" "$ac_cv_func_select_args" >&6; } @@ -8315,12 +8544,12 @@ rm -rf conftest* 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;} + { { 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 +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8338,12 +8567,14 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes -else $as_nop - found_b64_ntop=no - +else case e in #( + e) found_b64_ntop=no + ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi if test "x$found_b64_ntop" = xno; then @@ -8356,12 +8587,12 @@ printf %s "checking for b64_ntop with -lresolv... " >&6; } LIBS="$LIBS -lresolv" 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;} + { { 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 +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8379,12 +8610,14 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes -else $as_nop - found_b64_ntop=no - +else case e in #( + e) found_b64_ntop=no + ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi if test "x$found_b64_ntop" = xno; then @@ -8398,12 +8631,12 @@ printf %s "checking for b64_ntop with -lnetwork... " >&6; } LIBS="-lnetwork" 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;} + { { 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 +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8421,12 +8654,14 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes -else $as_nop - found_b64_ntop=no - +else case e in #( + e) found_b64_ntop=no + ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi if test "x$found_b64_ntop" = xno; then @@ -8472,8 +8707,8 @@ 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 +else case e in #( + e) if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. @@ -8481,8 +8716,8 @@ then : # 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ @@ -8503,21 +8738,21 @@ $ac_includes_default VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. - - Grep wants private fixed already mapped. - The main things grep needs to know about mmap are: - * does it exist and is it safe to write into the mmap'd area - * how to use it (BSD variants) */ + propagated back to all the places they're supposed to be. */ #include #include -/* This mess was copied from the GNU getpagesize.h. */ -#ifndef HAVE_GETPAGESIZE +#ifndef getpagesize +/* Prefer sysconf to the legacy getpagesize function, as getpagesize has + been removed from POSIX and is limited to page sizes that fit in 'int'. */ # ifdef _SC_PAGESIZE -# define getpagesize() sysconf(_SC_PAGESIZE) -# else /* no _SC_PAGESIZE */ +# define getpagesize() sysconf (_SC_PAGESIZE) +# elif defined _SC_PAGE_SIZE +# define getpagesize() sysconf (_SC_PAGE_SIZE) +# elif HAVE_GETPAGESIZE +int getpagesize (); +# else # ifdef HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE @@ -8541,16 +8776,15 @@ $ac_includes_default # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ -# endif /* no _SC_PAGESIZE */ - -#endif /* no HAVE_GETPAGESIZE */ +# endif +#endif int main (void) { char *data, *data2, *data3; const char *cdata2; - int i, pagesize; + long i, pagesize; int fd, fd2; pagesize = getpagesize (); @@ -8584,8 +8818,7 @@ main (void) if (*(data2 + i)) return 7; close (fd2); - if (munmap (data2, pagesize)) - return 8; + /* 'return 8;' not currently used. */ /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that @@ -8622,13 +8855,16 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_mmap_fixed_mapped=yes -else $as_nop - ac_cv_func_mmap_fixed_mapped=no +else case e in #( + e) ac_cv_func_mmap_fixed_mapped=no ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi - + ;; +esac fi { 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; } @@ -8660,8 +8896,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -8691,14 +8927,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -8892,8 +9128,8 @@ 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 +else case e in #( + e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -8916,7 +9152,8 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" -fi +fi ;; +esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then @@ -9004,8 +9241,8 @@ printf %s "checking for Tcl configuration... " >&6; } if test ${ac_cv_c_tclconfig+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then @@ -9117,7 +9354,8 @@ printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory co fi done fi - + ;; +esac fi @@ -9225,8 +9463,8 @@ then : TEA_PLATFORM="unix" CYGPATH=echo -else $as_nop - +else case e in #( + e) TEA_PLATFORM="windows" # Extract the first word of "cygpath", so it can be a program name with args. set dummy cygpath; ac_word=$2 @@ -9235,8 +9473,8 @@ 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 +else case e in #( + e) if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9259,7 +9497,8 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" -fi +fi ;; +esac fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then @@ -9271,7 +9510,8 @@ printf "%s\n" "no" >&6; } fi - + ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC=$hold_cc @@ -9309,8 +9549,9 @@ printf "%s\n" "#define BUILD_${PACKAGE_NAME} /**/" >>confdefs.h if test "x$ac_cv_func_sin" = xyes then : MATH_LIBS="" -else $as_nop - MATH_LIBS="-lm" +else case e in #( + e) MATH_LIBS="-lm" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5 @@ -9318,8 +9559,8 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lieee $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9336,12 +9577,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ieee_main=yes -else $as_nop - ac_cv_lib_ieee_main=no +else case e in #( + e) ac_cv_lib_ieee_main=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5 printf "%s\n" "$ac_cv_lib_ieee_main" >&6; } @@ -9361,8 +9604,8 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9379,12 +9622,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_inet_main=yes -else $as_nop - ac_cv_lib_inet_main=no +else case e in #( + e) ac_cv_lib_inet_main=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 printf "%s\n" "$ac_cv_lib_inet_main" >&6; } @@ -9426,8 +9671,9 @@ fi if test "x$ac_cv_func_connect" = xyes then : tcl_checkSocket=0 -else $as_nop - tcl_checkSocket=1 +else case e in #( + e) tcl_checkSocket=1 ;; +esac fi if test "$tcl_checkSocket" = 1; then @@ -9435,22 +9681,28 @@ fi 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 +else case e in #( + e) { 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" 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. */ -char setsockopt (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char setsockopt (void); int main (void) { @@ -9462,22 +9714,26 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_socket_setsockopt=yes -else $as_nop - ac_cv_lib_socket_setsockopt=no +else case e in #( + e) ac_cv_lib_socket_setsockopt=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { 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 $as_nop - tcl_checkBoth=1 +else case e in #( + e) tcl_checkBoth=1 ;; +esac fi - + ;; +esac fi fi @@ -9488,8 +9744,9 @@ fi if test "x$ac_cv_func_accept" = xyes then : tcl_checkNsl=0 -else $as_nop - LIBS=$tk_oldLibs +else case e in #( + e) LIBS=$tk_oldLibs ;; +esac fi fi @@ -9497,22 +9754,28 @@ fi 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 +else case e in #( + e) { 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" 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. */ -char gethostbyname (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (void); int main (void) { @@ -9524,12 +9787,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_nsl_gethostbyname=yes -else $as_nop - ac_cv_lib_nsl_gethostbyname=no +else case e in #( + e) ac_cv_lib_nsl_gethostbyname=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } @@ -9537,7 +9802,8 @@ if test "x$ac_cv_lib_nsl_gethostbyname" = xyes then : LIBS="$LIBS -lnsl" fi - + ;; +esac fi @@ -9653,80 +9919,90 @@ EOF if test ${enable_debug+y} then : enableval=$enable_debug; enable_debug="$enableval" -else $as_nop - enable_debug="auto" +else case e in #( + e) enable_debug="auto" ;; +esac fi # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; enable_debug="$enableval" -else $as_nop - enable_debug="auto" +else case e in #( + e) enable_debug="auto" ;; +esac fi # Check whether --enable-debug-assert was given. if test ${enable_debug_assert+y} then : enableval=$enable_debug_assert; enable_debug_assert="$enableval" -else $as_nop - enable_debug_assert="auto" +else case e in #( + e) enable_debug_assert="auto" ;; +esac fi # Check whether --enable-debug-assert was given. if test ${enable_debug_assert+y} then : enableval=$enable_debug_assert; enable_debug_assert="$enableval" -else $as_nop - enable_debug_assert="auto" +else case e in #( + e) enable_debug_assert="auto" ;; +esac fi # Check whether --enable-debug-mem was given. if test ${enable_debug_mem+y} then : enableval=$enable_debug_mem; enable_debug_mem="$enableval" -else $as_nop - enable_debug_mem="auto" +else case e in #( + e) enable_debug_mem="auto" ;; +esac fi # Check whether --enable-debug-mem was given. if test ${enable_debug_mem+y} then : enableval=$enable_debug_mem; enable_debug_mem="$enableval" -else $as_nop - enable_debug_mem="auto" +else case e in #( + e) enable_debug_mem="auto" ;; +esac fi # Check whether --enable-debug-dns was given. if test ${enable_debug_dns+y} then : enableval=$enable_debug_dns; enable_debug_dns="$enableval" -else $as_nop - enable_debug_dns="auto" +else case e in #( + e) enable_debug_dns="auto" ;; +esac fi # Check whether --enable-debug-dns was given. if test ${enable_debug_dns+y} then : enableval=$enable_debug_dns; enable_debug_dns="$enableval" -else $as_nop - enable_debug_dns="auto" +else case e in #( + e) enable_debug_dns="auto" ;; +esac fi # Check whether --enable-debug-context was given. if test ${enable_debug_context+y} then : enableval=$enable_debug_context; enable_debug_context="$enableval" -else $as_nop - enable_debug_context="auto" +else case e in #( + e) enable_debug_context="auto" ;; +esac fi # Check whether --enable-debug-context was given. if test ${enable_debug_context+y} then : enableval=$enable_debug_context; enable_debug_context="$enableval" -else $as_nop - enable_debug_context="auto" +else case e in #( + e) enable_debug_context="auto" ;; +esac fi @@ -9913,8 +10189,8 @@ printf %s "checking for system IPv6 support... " >&6; } if test ${egg_cv_var_ipv6_supported+y} then : printf %s "(cached) " >&6 -else $as_nop - +else case e in #( + e) if test "$cross_compiling" = yes then : @@ -9945,15 +10221,16 @@ then : egg_cv_var_ipv6_supported="yes" -else $as_nop - +else case e in #( + e) egg_cv_var_ipv6_supported="no" - + ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else $as_nop - cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -9980,16 +10257,19 @@ then : egg_cv_var_ipv6_supported="yes" -else $as_nop - +else case e in #( + e) egg_cv_var_ipv6_supported="no" - + ;; +esac fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext + conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ipv6_supported" >&5 printf "%s\n" "$egg_cv_var_ipv6_supported" >&6; } @@ -10000,8 +10280,9 @@ printf "%s\n" "$egg_cv_var_ipv6_supported" >&6; } if test ${enable_ipv6+y} then : enableval=$enable_ipv6; enable_ipv6="$enableval" -else $as_nop - enable_ipv6="$egg_cv_var_ipv6_supported" +else case e in #( + e) enable_ipv6="$egg_cv_var_ipv6_supported" ;; +esac fi # Check whether --enable-ipv6 was given. @@ -10037,8 +10318,9 @@ then : printf "%s\n" "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h egg_cv_var_have_in6_addr="yes" -else $as_nop - egg_cv_var_have_in6_addr="no" +else case e in #( + e) egg_cv_var_have_in6_addr="no" ;; +esac fi if test "$egg_cv_var_have_in6_addr" = "yes"; then @@ -10048,8 +10330,8 @@ 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 - +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10067,11 +10349,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : egg_cv_var_have_in6addr_any="yes" -else $as_nop - egg_cv_var_have_in6addr_any="no" +else case e in #( + e) egg_cv_var_have_in6addr_any="no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + ;; +esac fi { 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; } @@ -10086,8 +10370,8 @@ 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 - +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10105,11 +10389,13 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : egg_cv_var_have_in6addr_loopback="yes" -else $as_nop - egg_cv_var_have_in6addr_loopback="no" +else case e in #( + e) egg_cv_var_have_in6addr_loopback="no" ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - + ;; +esac fi { 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; } @@ -10147,8 +10433,9 @@ printf %s "checking whether to enable TLS support... " >&6; } if test ${enable_tls+y} then : enableval=$enable_tls; tls_enabled="$enableval" -else $as_nop - tls_enabled="yes" +else case e in #( + e) tls_enabled="yes" ;; +esac fi @@ -10170,7 +10457,7 @@ then : CPP="$CPP -I$withval" for ac_header in openssl/ssl.h openssl/x509v3.h do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef CYGWIN_HACKS # ifndef __int64 @@ -10182,15 +10469,16 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 _ACEOF sslinc="-I$withval" -else $as_nop - +else case e in #( + e) as_fn_error $? "Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." "$LINENO" 5 sslinc="" break - + ;; +esac fi done @@ -10218,16 +10506,22 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto -L$withval -lssl $LIBS" 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. */ -char X509_digest (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char X509_digest (void); int main (void) { @@ -10239,12 +10533,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_crypto_X509_digest=yes -else $as_nop - ac_cv_lib_crypto_X509_digest=no +else case e in #( + e) ac_cv_lib_crypto_X509_digest=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { 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; } @@ -10254,8 +10550,9 @@ then : LIBS="-lcrypto $LIBS" -else $as_nop - havessllib="no" +else case e in #( + e) havessllib="no" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 @@ -10263,16 +10560,22 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lssl -L$withval -lcrypto $LIBS" 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. */ -char SSL_accept (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char SSL_accept (void); int main (void) { @@ -10284,12 +10587,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssl_SSL_accept=yes -else $as_nop - ac_cv_lib_ssl_SSL_accept=no +else case e in #( + e) ac_cv_lib_ssl_SSL_accept=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { 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; } @@ -10299,8 +10604,9 @@ then : LIBS="-lssl $LIBS" -else $as_nop - havessllib="no" +else case e in #( + e) havessllib="no" ;; +esac fi if test "$havessllib" = "no"; then @@ -10323,7 +10629,7 @@ fi if test -z "$SSL_INCLUDES"; then for ac_header in openssl/ssl.h openssl/x509v3.h do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh` + as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " #ifdef CYGWIN_HACKS # ifndef __int64 @@ -10335,11 +10641,12 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 _ACEOF -else $as_nop - havesslinc="no" +else case e in #( + e) havesslinc="no" ;; +esac fi done @@ -10350,16 +10657,22 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto -lssl $LIBS" 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. */ -char X509_digest (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char X509_digest (void); int main (void) { @@ -10371,12 +10684,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_crypto_X509_digest=yes -else $as_nop - ac_cv_lib_crypto_X509_digest=no +else case e in #( + e) ac_cv_lib_crypto_X509_digest=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { 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; } @@ -10386,8 +10701,9 @@ then : LIBS="-lcrypto $LIBS" -else $as_nop - havessllib="no" +else case e in #( + e) havessllib="no" ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 @@ -10395,16 +10711,22 @@ 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 +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lssl -lcrypto $LIBS" 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. */ -char SSL_accept (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char SSL_accept (void); int main (void) { @@ -10416,12 +10738,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssl_SSL_accept=yes -else $as_nop - ac_cv_lib_ssl_SSL_accept=no +else case e in #( + e) ac_cv_lib_ssl_SSL_accept=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { 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; } @@ -10431,26 +10755,28 @@ then : LIBS="-lssl $LIBS" -else $as_nop - havessllib="no" +else case e in #( + e) havessllib="no" ;; +esac fi for ac_func in EVP_sha1 a2i_IPADDRESS do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_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 `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF -else $as_nop - +else case e in #( + e) havessllib="no" break - + ;; +esac fi done @@ -10466,44 +10792,48 @@ fi if test "x$ac_cv_func_OPENSSL_buf2hexstr" = xyes then : -else $as_nop - ac_fn_c_check_func "$LINENO" "hex_to_string" "ac_cv_func_hex_to_string" +else case e in #( + e) 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 : printf "%s\n" "#define OPENSSL_buf2hexstr hex_to_string" >>confdefs.h -else $as_nop - +else case e in #( + e) havessllib="no" break - + ;; +esac fi - + ;; +esac fi ac_fn_c_check_func "$LINENO" "OPENSSL_hexstr2buf" "ac_cv_func_OPENSSL_hexstr2buf" if test "x$ac_cv_func_OPENSSL_hexstr2buf" = xyes then : -else $as_nop - ac_fn_c_check_func "$LINENO" "string_to_hex" "ac_cv_func_string_to_hex" +else case e in #( + e) 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 : printf "%s\n" "#define OPENSSL_hexstr2buf string_to_hex" >>confdefs.h -else $as_nop - +else case e in #( + e) havessllib="no" break - + ;; +esac fi - + ;; +esac fi if test "$havesslinc" = "no"; then @@ -10536,12 +10866,13 @@ printf "%s\n" "yes" >&6; } if test "x$ac_cv_type___int64" = xyes then : -else $as_nop - +else case e in #( + e) printf "%s\n" "#define __int64 long long" >>confdefs.h - + ;; +esac fi fi @@ -10555,11 +10886,12 @@ then : printf "%s\n" "#define egg_ASN1_string_data ASN1_STRING_get0_data" >>confdefs.h -else $as_nop - +else case e in #( + e) printf "%s\n" "#define egg_ASN1_string_data ASN1_STRING_data" >>confdefs.h - + ;; +esac fi ac_fn_c_check_func "$LINENO" "EVP_PKEY_get1_EC_KEY" "ac_cv_func_EVP_PKEY_get1_EC_KEY" @@ -10584,16 +10916,17 @@ then : for ac_func in MD5_Init MD5_Update MD5_Final do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | $as_tr_sh` + as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_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 `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 +#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 _ACEOF -else $as_nop - havesslmd5="no" +else case e in #( + e) havesslmd5="no" ;; +esac fi done @@ -10619,8 +10952,9 @@ printf "%s\n" "#define HAVE_OPENSSL_MD5 1" >>confdefs.h if test ${enable_tdns+y} then : enableval=$enable_tdns; tdns_enabled="$enableval" -else $as_nop - tdns_enabled="yes" +else case e in #( + e) tdns_enabled="yes" ;; +esac fi if test "x$ax_pthread_ok" = "xno"; then @@ -10695,10 +11029,11 @@ then : EGG_CROSS_COMPILING=yes -else $as_nop - +else case e in #( + e) EGG_CROSS_COMPILING=no - + ;; +esac fi @@ -10716,8 +11051,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -10747,14 +11082,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -10845,7 +11180,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -10854,12 +11188,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -10931,7 +11266,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -10960,7 +11295,6 @@ as_fn_error () } # as_fn_error - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -11000,11 +11334,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -11018,11 +11353,12 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -11105,9 +11441,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -11188,10 +11524,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 @@ -11207,7 +11545,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.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -11239,7 +11577,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions +'$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -11276,10 +11614,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop config.status 1.9.5 -configured by $0, generated by GNU Autoconf 2.71, +configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -11340,8 +11678,8 @@ do ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; + as_fn_error $? "ambiguous option: '$1' +Try '$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ @@ -11349,8 +11687,8 @@ Try \`$0 --help' for more information.";; ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -11397,7 +11735,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 PACKAGE="$PACKAGE" VERSION="$VERSION" ac_stdint_h="$ac_stdint_h" -_ac_stdint_h=`printf "%s\n" "_$PACKAGE-$ac_stdint_h" | $as_tr_cpp` +_ac_stdint_h=`printf "%s\n" "_$PACKAGE-$ac_stdint_h" | sed "$as_sed_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" @@ -11435,7 +11773,7 @@ do "src/md5/Makefile") CONFIG_FILES="$CONFIG_FILES src/md5/Makefile" ;; "src/mod/Makefile") CONFIG_FILES="$CONFIG_FILES src/mod/Makefile" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done @@ -11455,7 +11793,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= @@ -11479,7 +11817,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. +# This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -11637,13 +11975,13 @@ fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. +# This happens for instance with './config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF -# Transform confdefs.h into an awk script `defines.awk', embedded as +# Transform confdefs.h into an awk script 'defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. @@ -11753,7 +12091,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -11775,19 +12113,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. + # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is `configure' which instantiates (i.e., don't + # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -11915,7 +12253,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when `$srcdir' = `.'. +# Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -11945,9 +12283,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/configure.ac b/configure.ac index 78a7e70d5..1100e99d1 100644 --- a/configure.ac +++ b/configure.ac @@ -91,9 +91,8 @@ EGG_CHECK_OS # Checks for header files. EGG_HEADER_STDC AC_HEADER_DIRENT -AC_CHECK_HEADERS_ONCE([sys/time.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 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. diff --git a/src/eggdrop.h b/src/eggdrop.h index cca60c09a..c91ae91e2 100644 --- a/src/eggdrop.h +++ b/src/eggdrop.h @@ -183,12 +183,8 @@ #endif /* Almost every module needs some sort of time thingy, so... */ -#ifdef HAVE_SYS_TIME_H -# include -#else -# include -#endif - +#include /* gettimeofday() POSIX 2001 */ +#include /* POSIX 2001 */ /* Yikes...who would have thought finding a usable random() would be so much * trouble? diff --git a/src/main.c b/src/main.c index 17133c5b5..82ed9ef80 100644 --- a/src/main.c +++ b/src/main.c @@ -53,12 +53,6 @@ #include #include -#ifdef HAVE_SYS_TIME_H -# include -#else -# include -#endif - #ifdef STOP_UAC /* OSF/1 complains a lot */ # include # define UAC_NOPRINT 0x00000001 /* Don't report unaligned fixups */ diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 2c3f4c0cc..ab13fc34a 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac 98f8972a. +# From configure.ac bc7bc2ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. +# Generated by GNU Autoconf 2.72 for Eggdrop Compress Module 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # @@ -20,7 +20,6 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -29,12 +28,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,15 +136,14 @@ case $- in # (((( 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'. +# out after a failed 'exec'. 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="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -152,12 +151,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi " @@ -175,8 +175,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else \$as_nop - exitcode=1; echo positional parameters were not saved. +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -189,14 +190,15 @@ test -x / || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else $as_nop - as_have_required=no +else case e in #( + e) as_have_required=no ;; +esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do @@ -229,12 +231,13 @@ IFS=$as_save_IFS if $as_found then : -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +else case e in #( + e) 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 ;; +esac fi @@ -256,7 +259,7 @@ case $- in # (((( 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'. +# out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -276,7 +279,8 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi +fi ;; +esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -315,14 +319,6 @@ 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 # ------------- @@ -391,11 +387,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -409,21 +406,14 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac 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] # ---------------------------------------- @@ -497,6 +487,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' + t clear + :clear s/[$]LINENO.*/&-/ t lineno b @@ -545,7 +537,6 @@ esac 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 @@ -557,9 +548,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -584,10 +575,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -846,7 +839,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1059,7 +1052,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1075,7 +1068,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1105,8 +1098,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" ;; *=*) @@ -1114,7 +1107,7 @@ Try \`$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1164,7 +1157,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: `$host' +# There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1232,7 +1225,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1260,7 +1253,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop Compress Module 1.9.5 to adapt to many kinds of systems. +'configure' configures Eggdrop Compress Module 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1274,11 +1267,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' + -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] + --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1286,10 +1279,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. For better control, use the options below. @@ -1336,7 +1329,7 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory -Use these variables to override the choices made by `configure' or to help +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 . @@ -1404,9 +1397,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop Compress Module configure 1.9.5 -generated by GNU Autoconf 2.71 +generated by GNU Autoconf 2.72 -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. @@ -1447,11 +1440,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1489,11 +1483,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1517,8 +1512,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -1526,10 +1521,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1562,7 +1559,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Eggdrop Compress Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -1808,10 +1805,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } fi done @@ -1847,9 +1844,7 @@ 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; +static char *e (char **p, int i) { return p[i]; } @@ -1863,6 +1858,21 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + /* 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 @@ -1890,16 +1900,19 @@ 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? +/* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif +// See if C++-style comments work. + #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); +extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -1949,7 +1962,6 @@ 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) @@ -2015,6 +2027,8 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); // Check named initializers. struct named_init ni = { @@ -2036,7 +2050,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? +/* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -2159,12 +2173,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -2173,18 +2187,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -2200,11 +2214,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -2249,8 +2263,8 @@ 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 +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2272,7 +2286,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2298,8 +2313,8 @@ 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 +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2321,7 +2336,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -2350,10 +2366,10 @@ esac fi -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;} +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; } +See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -2425,8 +2441,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 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' + # 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, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -2446,7 +2462,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' + # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -2457,8 +2473,9 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else $as_nop - ac_file='' +else case e in #( + e) ac_file='' ;; +esac fi if test -z "$ac_file" then : @@ -2467,13 +2484,14 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac 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; } @@ -2497,10 +2515,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 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 -# `rm'. + # 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 +# 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -2510,11 +2528,12 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -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;} +else case e in #( + e) { { 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -2530,6 +2549,8 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; return ferror (f) || fclose (f) != 0; ; @@ -2569,26 +2590,27 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { 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: 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; } +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } fi fi fi { 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 +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2620,16 +2642,18 @@ then : break;; esac done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -2640,8 +2664,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2658,12 +2682,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -2681,8 +2707,8 @@ 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 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -2700,8 +2726,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" +else case e in #( + e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2716,8 +2742,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2734,12 +2760,15 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -2766,8 +2795,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2784,25 +2813,28 @@ 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 +CC=$ac_save_CC ;; +esac fi 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c11" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 + ac_prog_cc_stdc=c11 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -2812,8 +2844,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2830,25 +2862,28 @@ 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 +CC=$ac_save_CC ;; +esac 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c99" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 + ac_prog_cc_stdc=c99 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -2858,8 +2893,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2876,25 +2911,28 @@ 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 +CC=$ac_save_CC ;; +esac fi 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c89" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 + ac_prog_cc_stdc=c89 ;; +esac fi fi @@ -2912,16 +2950,22 @@ printf %s "checking for gzopen in -lz... " >&6; } if test ${ac_cv_lib_z_gzopen+y} then : printf %s "(cached) " >&6 -else $as_nop - ac_check_lib_save_LIBS=$LIBS +else case e in #( + e) ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" 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. */ -char gzopen (); + builtin and then its argument prototype would still apply. + The 'extern "C"' is for builds by C++ compilers; + although this is not generally supported in C code supporting it here + has little cost and some practical benefit (sr 110532). */ +#ifdef __cplusplus +extern "C" +#endif +char gzopen (void); int main (void) { @@ -2933,12 +2977,14 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_z_gzopen=yes -else $as_nop - ac_cv_lib_z_gzopen=no +else case e in #( + e) ac_cv_lib_z_gzopen=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS +LIBS=$ac_check_lib_save_LIBS ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzopen" >&5 printf "%s\n" "$ac_cv_lib_z_gzopen" >&6; } @@ -3024,8 +3070,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -3055,14 +3101,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -3126,9 +3172,7 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any @@ -3188,7 +3232,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -3197,12 +3240,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -3274,7 +3318,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -3303,7 +3347,6 @@ as_fn_error () } # as_fn_error - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -3343,11 +3386,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -3361,11 +3405,12 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -3448,9 +3493,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -3531,10 +3576,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 @@ -3550,7 +3597,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop Compress Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -3577,7 +3624,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions +'$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -3605,10 +3652,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop Compress Module config.status 1.9.5 -configured by $0, generated by GNU Autoconf 2.71, +configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -3665,8 +3712,8 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -3716,7 +3763,7 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done @@ -3734,7 +3781,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= @@ -3758,7 +3805,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. +# This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -3924,7 +3971,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -3946,19 +3993,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. + # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is `configure' which instantiates (i.e., don't + # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -4082,7 +4129,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when `$srcdir' = `.'. +# Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -4111,9 +4158,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 07c7b3b57..283b1bb1b 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac 98f8972a. +# From configure.ac bc7bc2ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. +# Generated by GNU Autoconf 2.72 for Eggdrop DNS Module 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # @@ -20,7 +20,6 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -29,12 +28,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,15 +136,14 @@ case $- in # (((( 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'. +# out after a failed 'exec'. 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="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -152,12 +151,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi " @@ -175,8 +175,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else \$as_nop - exitcode=1; echo positional parameters were not saved. +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -189,14 +190,15 @@ test -x / || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else $as_nop - as_have_required=no +else case e in #( + e) as_have_required=no ;; +esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do @@ -229,12 +231,13 @@ IFS=$as_save_IFS if $as_found then : -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +else case e in #( + e) 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 ;; +esac fi @@ -256,7 +259,7 @@ case $- in # (((( 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'. +# out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -276,7 +279,8 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi +fi ;; +esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -315,14 +319,6 @@ 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 # ------------- @@ -391,11 +387,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -409,21 +406,14 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac 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] # ---------------------------------------- @@ -497,6 +487,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' + t clear + :clear s/[$]LINENO.*/&-/ t lineno b @@ -545,7 +537,6 @@ esac 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 @@ -557,9 +548,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -584,10 +575,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -815,7 +808,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1028,7 +1021,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1044,7 +1037,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1074,8 +1067,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" ;; *=*) @@ -1083,7 +1076,7 @@ Try \`$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1133,7 +1126,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: `$host' +# There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1201,7 +1194,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1229,7 +1222,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop DNS Module 1.9.5 to adapt to many kinds of systems. +'configure' configures Eggdrop DNS Module 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1243,11 +1236,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' + -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] + --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1255,10 +1248,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. For better control, use the options below. @@ -1305,7 +1298,7 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory -Use these variables to override the choices made by `configure' or to help +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 . @@ -1373,9 +1366,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop DNS Module configure 1.9.5 -generated by GNU Autoconf 2.71 +generated by GNU Autoconf 2.72 -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. @@ -1416,11 +1409,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1439,8 +1433,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -1448,10 +1442,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else $as_nop - eval "$3=no" +else case e in #( + e) eval "$3=no" ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1491,11 +1487,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_retval=1 + ac_retval=1 ;; +esac fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1531,7 +1528,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Eggdrop DNS Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -1777,10 +1774,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } fi done @@ -1816,9 +1813,7 @@ 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; +static char *e (char **p, int i) { return p[i]; } @@ -1832,6 +1827,21 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } +/* C89 style stringification. */ +#define noexpand_stringify(a) #a +const char *stringified = noexpand_stringify(arbitrary+token=sequence); + +/* C89 style token pasting. Exercises some of the corner cases that + e.g. old MSVC gets wrong, but not very hard. */ +#define noexpand_concat(a,b) a##b +#define expand_concat(a,b) noexpand_concat(a,b) +extern int vA; +extern int vbee; +#define aye A +#define bee B +int *pvA = &expand_concat(v,aye); +int *pvbee = &noexpand_concat(v,bee); + /* 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 @@ -1859,16 +1869,19 @@ 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? +/* Does the compiler advertise C99 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif +// See if C++-style comments work. + #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); +extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -1918,7 +1931,6 @@ 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) @@ -1984,6 +1996,8 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; + // Work around memory leak warnings. + free (ia); // Check named initializers. struct named_init ni = { @@ -2005,7 +2019,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -// Does the compiler advertise C11 conformance? +/* Does the compiler advertise C11 conformance? */ #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -2119,12 +2133,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -2133,18 +2147,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -2160,11 +2174,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -2209,8 +2223,8 @@ 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 +else case e in #( + e) if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2232,7 +2246,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2258,8 +2273,8 @@ 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 +else case e in #( + e) if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2281,7 +2296,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -2310,10 +2326,10 @@ esac fi -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;} +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; } +See 'config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -2385,8 +2401,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 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' + # 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, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -2406,7 +2422,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' + # safe: cross compilers may not add the suffix if given an '-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -2417,8 +2433,9 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else $as_nop - ac_file='' +else case e in #( + e) ac_file='' ;; +esac fi if test -z "$ac_file" then : @@ -2427,13 +2444,14 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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_nop - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } +See 'config.log' for more details" "$LINENO" 5; } +else case e in #( + e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } ;; +esac 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; } @@ -2457,10 +2475,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 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 -# `rm'. + # 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 +# 'rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -2470,11 +2488,12 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -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;} +else case e in #( + e) { { 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -2490,6 +2509,8 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); + if (!f) + return 1; return ferror (f) || fclose (f) != 0; ; @@ -2529,26 +2550,27 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { 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: 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; } +If you meant to cross compile, use '--host'. +See 'config.log' for more details" "$LINENO" 5; } fi fi fi { 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 +rm -f conftest.$ac_ext conftest$ac_cv_exeext \ + conftest.o conftest.obj conftest.out ac_clean_files=$ac_clean_files_save { 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2580,16 +2602,18 @@ then : break;; esac done -else $as_nop - printf "%s\n" "$as_me: failed program was:" >&5 +else case e in #( + e) printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } ;; +esac fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext +rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -2600,8 +2624,8 @@ 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 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2618,12 +2642,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else $as_nop - ac_compiler_gnu=no +else case e in #( + e) ac_compiler_gnu=no ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -2641,8 +2667,8 @@ 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 +else case e in #( + e) ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -2660,8 +2686,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else $as_nop - CFLAGS="" +else case e in #( + e) CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2676,8 +2702,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else $as_nop - ac_c_werror_flag=$ac_save_c_werror_flag +else case e in #( + e) ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2694,12 +2720,15 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; +esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag + ac_c_werror_flag=$ac_save_c_werror_flag ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -2726,8 +2755,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2744,25 +2773,28 @@ 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 +CC=$ac_save_CC ;; +esac fi 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c11" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 + ac_prog_cc_stdc=c11 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -2772,8 +2804,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2790,25 +2822,28 @@ 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 +CC=$ac_save_CC ;; +esac 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c99" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 + ac_prog_cc_stdc=c99 ;; +esac fi fi if test x$ac_prog_cc_stdc = xno @@ -2818,8 +2853,8 @@ 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 +else case e in #( + e) ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2836,25 +2871,28 @@ 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 +CC=$ac_save_CC ;; +esac fi 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 +else case e in #( + e) 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 +else case e in #( + e) { 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" + CC="$CC $ac_cv_prog_cc_c89" ;; +esac fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 + ac_prog_cc_stdc=c89 ;; +esac fi fi @@ -3062,8 +3100,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -3093,14 +3131,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -3164,9 +3202,7 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any @@ -3226,7 +3262,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -3235,12 +3270,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -3312,7 +3348,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -3341,7 +3377,6 @@ as_fn_error () } # as_fn_error - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -3381,11 +3416,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -3399,11 +3435,12 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -3486,9 +3523,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -3569,10 +3606,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 @@ -3588,7 +3627,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop DNS Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -3615,7 +3654,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions +'$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -3643,10 +3682,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop DNS Module config.status 1.9.5 -configured by $0, generated by GNU Autoconf 2.71, +configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -3703,8 +3742,8 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -3754,7 +3793,7 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done @@ -3772,7 +3811,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= @@ -3796,7 +3835,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. +# This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -3962,7 +4001,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -3984,19 +4023,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. + # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is `configure' which instantiates (i.e., don't + # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -4120,7 +4159,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when `$srcdir' = `.'. +# Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -4149,9 +4188,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/src/mod/filesys.mod/filesys.c b/src/mod/filesys.mod/filesys.c index 1c12721ba..dcaafef76 100644 --- a/src/mod/filesys.mod/filesys.c +++ b/src/mod/filesys.mod/filesys.c @@ -48,12 +48,6 @@ # endif #endif -#ifdef HAVE_SYS_TIME_H -# include -#else -# include -#endif - #include "filedb3.h" #include "filesys.h" #include "src/tandem.h" diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index eadf4ed9c..34cf355ad 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac 98f8972a. +# From configure.ac bc7bc2ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. +# Generated by GNU Autoconf 2.72 for Eggdrop Python Module 1.10.0. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, # Inc. # # @@ -20,7 +20,6 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -29,12 +28,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,15 +136,14 @@ case $- in # (((( 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'. +# out after a failed 'exec'. 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="as_nop=: -if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -152,12 +151,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else \$as_nop - case \`(set -o) 2>/dev/null\` in #( +else case e in #( + e) case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi " @@ -175,8 +175,9 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else \$as_nop - exitcode=1; echo positional parameters were not saved. +else case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -190,14 +191,15 @@ test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else $as_nop - as_have_required=no +else case e in #( + e) as_have_required=no ;; +esac fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else $as_nop - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do @@ -230,12 +232,13 @@ IFS=$as_save_IFS if $as_found then : -else $as_nop - if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +else case e in #( + e) 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 ;; +esac fi @@ -257,7 +260,7 @@ case $- in # (((( 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'. +# out after a failed 'exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -277,7 +280,8 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi +fi ;; +esac fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -316,14 +320,6 @@ 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 # ------------- @@ -392,11 +388,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -410,21 +407,14 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac 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] # ---------------------------------------- @@ -498,6 +488,8 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' + t clear + :clear s/[$]LINENO.*/&-/ t lineno b @@ -546,7 +538,6 @@ esac 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 @@ -558,9 +549,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -585,10 +576,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -814,7 +807,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1027,7 +1020,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1043,7 +1036,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1073,8 +1066,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: '$ac_option' +Try '$0 --help' for more information" ;; *=*) @@ -1082,7 +1075,7 @@ Try \`$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + as_fn_error $? "invalid variable name: '$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1132,7 +1125,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: `$host' +# There might be people who depend on the old broken behavior: '$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1200,7 +1193,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1228,7 +1221,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Eggdrop Python Module 1.10.0 to adapt to many kinds of systems. +'configure' configures Eggdrop Python Module 1.10.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1242,11 +1235,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages + -q, --quiet, --silent do not print 'checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' + -C, --config-cache alias for '--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] + --srcdir=DIR find the sources in DIR [configure dir or '..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1254,10 +1247,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. +By default, 'make install' will install all the files in +'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify +an installation prefix other than '$ac_default_prefix' using '--prefix', +for instance '--prefix=\$HOME'. For better control, use the options below. @@ -1306,7 +1299,7 @@ Some influential environment variables: string will be appended to the Python interpreter canonical name. -Use these variables to override the choices made by `configure' or to help +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 . @@ -1374,9 +1367,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop Python Module configure 1.10.0 -generated by GNU Autoconf 2.71 +generated by GNU Autoconf 2.72 -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. @@ -1413,7 +1406,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Eggdrop Python Module $as_me 1.10.0, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was $ $0$ac_configure_args_raw @@ -1659,10 +1652,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See 'config.log' for more details" "$LINENO" 5; } fi done @@ -1693,12 +1686,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -1707,18 +1700,18 @@ printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -1734,11 +1727,11 @@ printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -1764,8 +1757,8 @@ 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 +else case e in #( + e) 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 @@ -1784,9 +1777,10 @@ do 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 +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" @@ -1821,7 +1815,8 @@ IFS=$as_save_IFS else ac_cv_path_GREP=$GREP fi - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } @@ -1833,8 +1828,8 @@ printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 -else $as_nop - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 +else case e in #( + e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then @@ -1856,9 +1851,10 @@ do as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in +case `"$ac_path_FGREP" --version 2>&1` in #( *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -1894,7 +1890,8 @@ else ac_cv_path_FGREP=$FGREP fi - fi + fi ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } @@ -1933,8 +1930,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_python_config_bin+y} then : printf %s "(cached) " >&6 -else $as_nop - case $python_config_bin in +else case e in #( + e) case $python_config_bin in [\\/]* | ?:[\\/]*) ac_cv_path_python_config_bin="$python_config_bin" # Let the user override the test with a path. ;; @@ -1959,6 +1956,7 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi python_config_bin=$ac_cv_path_python_config_bin @@ -1987,8 +1985,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_python_config_bin+y} then : printf %s "(cached) " >&6 -else $as_nop - case $python_config_bin in +else case e in #( + e) case $python_config_bin in [\\/]* | ?:[\\/]*) ac_cv_path_python_config_bin="$python_config_bin" # Let the user override the test with a path. ;; @@ -2013,6 +2011,7 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi python_config_bin=$ac_cv_path_python_config_bin @@ -2053,13 +2052,14 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else $as_nop - +else case e in #( + e) PYTHON_CONFIG_ARGS="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - + ;; +esac fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python C flags" >&5 @@ -2088,8 +2088,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PYTHON+y} then : printf %s "(cached) " >&6 -else $as_nop - case $PYTHON in +else case e in #( + e) case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; @@ -2114,6 +2114,7 @@ done IFS=$as_save_IFS ;; +esac ;; esac fi PYTHON=$ac_cv_path_PYTHON @@ -2148,8 +2149,8 @@ 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 +else case e in #( + e) if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2171,7 +2172,8 @@ done done IFS=$as_save_IFS -fi +fi ;; +esac fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then @@ -2263,8 +2265,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the +# 'ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* 'ac_cv_foo' will be assigned the # following values. _ACEOF @@ -2294,14 +2296,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote + # 'set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # `set' quotes correctly as required by POSIX, so do not add quotes. + # 'set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -2365,9 +2367,7 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g -s/\[/\\&/g -s/\]/\\&/g +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\$/$$/g H :any @@ -2427,7 +2427,6 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh -as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -2436,12 +2435,13 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else $as_nop - case `(set -o) 2>/dev/null` in #( +else case e in #( + e) case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; +esac ;; esac fi @@ -2513,7 +2513,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as `sh COMMAND' +# We did not find ourselves, most probably we were run as 'sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -2542,7 +2542,6 @@ as_fn_error () } # as_fn_error - # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -2582,11 +2581,12 @@ then : { eval $1+=\$2 }' -else $as_nop - as_fn_append () +else case e in #( + e) as_fn_append () { eval $1=\$$1\$2 - } + } ;; +esac fi # as_fn_append # as_fn_arith ARG... @@ -2600,11 +2600,12 @@ then : { as_val=$(( $* )) }' -else $as_nop - as_fn_arith () +else case e in #( + e) as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } + } ;; +esac fi # as_fn_arith @@ -2687,9 +2688,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. + # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. + # In both cases, we have to default to 'cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -2770,10 +2771,12 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated # Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated exec 6>&1 @@ -2789,7 +2792,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop Python Module $as_me 1.10.0, which was -generated by GNU Autoconf 2.71. Invocation command line was +generated by GNU Autoconf 2.72. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -2816,7 +2819,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions +'$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -2844,10 +2847,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop Python Module config.status 1.10.0 -configured by $0, generated by GNU Autoconf 2.71, +configured by $0, generated by GNU Autoconf 2.72, with options \\"\$ac_cs_config\\" -Copyright (C) 2021 Free Software Foundation, Inc. +Copyright (C) 2023 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -2905,8 +2908,8 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: '$1' +Try '$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -2956,7 +2959,7 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; esac done @@ -2974,7 +2977,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. +# after its creation but before its name has been assigned to '$tmp'. $debug || { tmp= ac_tmp= @@ -2998,7 +3001,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. +# This happens for instance with './config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -3164,7 +3167,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -3186,19 +3189,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. + # because $ac_f cannot contain ':'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is `configure' which instantiates (i.e., don't + # Let's still pretend it is 'configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -3322,7 +3325,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when `$srcdir' = `.'. +# Neutralize VPATH when '$srcdir' = '.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -3351,9 +3354,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/src/mod/seen.mod/seen.c b/src/mod/seen.mod/seen.c index 5dbb095da..63ddd0593 100644 --- a/src/mod/seen.mod/seen.c +++ b/src/mod/seen.mod/seen.c @@ -73,12 +73,6 @@ #include "src/mod/module.h" -#ifdef HAVE_SYS_TIME_H -# include -#else -# include -#endif - #include "src/users.h" #include "src/chan.h" #include "channels.mod/channels.h" diff --git a/src/mod/server.mod/cmdsserv.c b/src/mod/server.mod/cmdsserv.c index ab580d208..ceb79e436 100644 --- a/src/mod/server.mod/cmdsserv.c +++ b/src/mod/server.mod/cmdsserv.c @@ -20,7 +20,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include static void cmd_servers(struct userrec *u, int idx, char *par) { diff --git a/src/tclmisc.c b/src/tclmisc.c index c5db7090c..bbfdb5299 100644 --- a/src/tclmisc.c +++ b/src/tclmisc.c @@ -25,13 +25,6 @@ #include "main.h" #include "modules.h" #include "md5/md5.h" - -#ifdef HAVE_SYS_TIME_H -# include -#else -# include -#endif - #include #include From 0ef635bdc8533d33c8bedddbd4a29447f4beb1b6 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sun, 16 Jun 2024 21:52:53 +0200 Subject: [PATCH 296/320] Run autotools --- config.h.in | 122 +- configure | 2209 ++++++++++++++------------------ src/mod/compress.mod/configure | 517 ++++---- src/mod/dns.mod/configure | 495 ++++--- src/mod/python.mod/configure | 301 +++-- 5 files changed, 1608 insertions(+), 2036 deletions(-) diff --git a/config.h.in b/config.h.in index 80466fec7..22e26d5c8 100644 --- a/config.h.in +++ b/config.h.in @@ -56,7 +56,7 @@ #undef EGG_VERSION /* Define to nothing if C supports flexible array members, and to 1 if it does - not. That way, with a declaration like 'struct s { int n; double + not. That way, with a declaration like `struct s { int n; double d[FLEXIBLE_ARRAY_MEMBER]; };', the struct hack can be used with pre-C99 compilers. When computing the size of such an object, don't use 'sizeof (struct s)' as it overestimates the size. Use 'offsetof (struct s, d)' @@ -64,7 +64,7 @@ MSVC and with C++ compilers. */ #undef FLEXIBLE_ARRAY_MEMBER -/* Define to 1 if you have the 'a2i_IPADDRESS' function. */ +/* Define to 1 if you have the `a2i_IPADDRESS' function. */ #undef HAVE_A2I_IPADDRESS /* Define to 1 if you have the header file. */ @@ -73,48 +73,48 @@ /* Define if b64_ntop exists. */ #undef HAVE_BASE64 -/* Define to 1 if you have the declaration of 'tzname', and to 0 if you don't. +/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. */ #undef HAVE_DECL_TZNAME -/* Define to 1 if you have the header file, and it defines 'DIR'. +/* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_DIRENT_H /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H -/* Define to 1 if you have the 'dlopen' function. */ +/* Define to 1 if you have the `dlopen' function. */ #undef HAVE_DLOPEN /* Define to 1 if you have the header file. */ #undef HAVE_DL_H -/* Define to 1 if you have the 'dprintf' function. */ +/* Define to 1 if you have the `dprintf' function. */ #undef HAVE_DPRINTF -/* Define to 1 if you have the 'EVP_md5' function. */ +/* Define to 1 if you have the `EVP_md5' function. */ #undef HAVE_EVP_MD5 -/* Define to 1 if you have the 'EVP_PKEY_get1_EC_KEY' function. */ +/* Define to 1 if you have the `EVP_PKEY_get1_EC_KEY' function. */ #undef HAVE_EVP_PKEY_GET1_EC_KEY -/* Define to 1 if you have the 'EVP_sha1' function. */ +/* Define to 1 if you have the `EVP_sha1' function. */ #undef HAVE_EVP_SHA1 -/* Define to 1 if you have the 'explicit_bzero' function. */ +/* Define to 1 if you have the `explicit_bzero' function. */ #undef HAVE_EXPLICIT_BZERO -/* Define to 1 if you have the 'explicit_memset' function. */ +/* Define to 1 if you have the `explicit_memset' function. */ #undef HAVE_EXPLICIT_MEMSET /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H -/* Define to 1 if you have the 'getpagesize' function. */ +/* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE -/* Define to 1 if you have the 'getrandom' function. */ +/* Define to 1 if you have the `getrandom' function. */ #undef HAVE_GETRANDOM /* Define to 1 if you have the in6addr_any constant. */ @@ -123,31 +123,31 @@ /* Define to 1 if you have the in6addr_loopback constant. */ #undef HAVE_IN6ADDR_LOOPBACK -/* Define to 1 if you have the 'inet_aton' function. */ +/* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON -/* Define to 1 if the system has the type 'intptr_t'. */ +/* Define to 1 if the system has the type `intptr_t'. */ #undef HAVE_INTPTR_T /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H -/* Define to 1 if you have the 'isascii' function. */ +/* Define to 1 if you have the `isascii' function. */ #undef HAVE_ISASCII -/* Define to 1 if you have the 'crypto' library (-lcrypto). */ +/* Define to 1 if you have the `crypto' library (-lcrypto). */ #undef HAVE_LIBCRYPTO -/* Define to 1 if you have the 'dld' library (-ldld). */ +/* Define to 1 if you have the `dld' library (-ldld). */ #undef HAVE_LIBDLD -/* Define to 1 if you have the 'ssl' library (-lssl). */ +/* Define to 1 if you have the `ssl' library (-lssl). */ #undef HAVE_LIBSSL /* Define to 1 if you have the header file. */ #undef HAVE_LIMITS_H -/* Define to 1 if you have the 'load' function. */ +/* Define to 1 if you have the `load' function. */ #undef HAVE_LOAD /* Define to 1 if you have the header file. */ @@ -162,28 +162,28 @@ /* Define to 1 if you have the header file. */ #undef HAVE_MACH_O_RLD_H -/* Define to 1 if you have the 'MD5_Final' function. */ +/* Define to 1 if you have the `MD5_Final' function. */ #undef HAVE_MD5_FINAL -/* Define to 1 if you have the 'MD5_Init' function. */ +/* Define to 1 if you have the `MD5_Init' function. */ #undef HAVE_MD5_INIT -/* Define to 1 if you have the 'MD5_Update' function. */ +/* Define to 1 if you have the `MD5_Update' function. */ #undef HAVE_MD5_UPDATE -/* Define to 1 if you have the 'memset_explicit' function. */ +/* Define to 1 if you have the `memset_explicit' function. */ #undef HAVE_MEMSET_EXPLICIT -/* Define to 1 if you have the 'memset_s' function. */ +/* 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. */ +/* Define to 1 if you have a working `mmap' system call. */ #undef HAVE_MMAP -/* Define to 1 if you have the header file, and it defines 'DIR'. */ +/* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_NDIR_H /* Define to 1 if you have the header file. */ @@ -195,7 +195,7 @@ /* Do we have ? */ #undef HAVE_NET_ERRNO_H -/* Define to 1 if you have the 'NSLinkModule' function. */ +/* Define to 1 if you have the `NSLinkModule' function. */ #undef HAVE_NSLINKMODULE /* Define this if your OpenSSL library has MD5 cipher support. */ @@ -216,13 +216,13 @@ /* Define to 1 if you have the header file. */ #undef HAVE_RLD_H -/* Define to 1 if you have the 'rld_load' function. */ +/* Define to 1 if you have the `rld_load' function. */ #undef HAVE_RLD_LOAD -/* Define to 1 if you have the 'shl_load' function. */ +/* Define to 1 if you have the `shl_load' function. */ #undef HAVE_SHL_LOAD -/* Define to 1 if you have the 'snprintf' function. */ +/* Define to 1 if you have the `snprintf' function. */ #undef HAVE_SNPRINTF /* Define to 1 if you have the header file. */ @@ -246,26 +246,26 @@ /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H -/* Define to 1 if you have the 'strlcpy' function. */ +/* Define to 1 if you have the `strlcpy' function. */ #undef HAVE_STRLCPY -/* Define to 1 if the system has the type 'struct in6_addr'. */ +/* Define to 1 if the system has the type `struct in6_addr'. */ #undef HAVE_STRUCT_IN6_ADDR -/* Define to 1 if the system has the type 'struct sockaddr_in6'. */ +/* Define to 1 if the system has the type `struct sockaddr_in6'. */ #undef HAVE_STRUCT_SOCKADDR_IN6 -/* Define to 1 if 'tm_zone' is a member of 'struct tm'. */ +/* Define to 1 if `tm_zone' is a member of `struct tm'. */ #undef HAVE_STRUCT_TM_TM_ZONE -/* Define to 1 if you have the header file, and it defines 'DIR'. +/* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_DIR_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_FILE_H -/* Define to 1 if you have the header file, and it defines 'DIR'. +/* Define to 1 if you have the header file, and it defines `DIR'. */ #undef HAVE_SYS_NDIR_H @@ -290,18 +290,18 @@ /* 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. */ +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ #undef HAVE_TM_ZONE -/* Define to 1 if you don't have 'tm_zone' but do have the external array - 'tzname'. */ +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ #undef HAVE_TZNAME /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H -/* Define to 1 if you have the 'vsnprintf' function. */ +/* Define to 1 if you have the `vsnprintf' function. */ #undef HAVE_VSNPRINTF /* Define to 1 if you have the header file. */ @@ -360,31 +360,31 @@ /* Define if running under QNX. */ #undef QNX_HACKS -/* Define to the type of arg 1 for 'select'. */ +/* Define to the type of arg 1 for `select'. */ #undef SELECT_TYPE_ARG1 -/* Define to the type of args 2, 3 and 4 for 'select'. */ +/* Define to the type of args 2, 3 and 4 for `select'. */ #undef SELECT_TYPE_ARG234 -/* Define to the type of arg 5 for 'select'. */ +/* Define to the type of arg 5 for `select'. */ #undef SELECT_TYPE_ARG5 -/* The size of 'char', as computed by sizeof. */ +/* The size of `char', as computed by sizeof. */ #undef SIZEOF_CHAR -/* The size of 'int', as computed by sizeof. */ +/* The size of `int', as computed by sizeof. */ #undef SIZEOF_INT -/* The size of 'long', as computed by sizeof. */ +/* The size of `long', as computed by sizeof. */ #undef SIZEOF_LONG -/* The size of 'short', as computed by sizeof. */ +/* The size of `short', as computed by sizeof. */ #undef SIZEOF_SHORT -/* The size of 'void*', as computed by sizeof. */ +/* The size of `void*', as computed by sizeof. */ #undef SIZEOF_VOIDP -/* Define to 1 if all of the C89 standard headers exist (not just the ones +/* 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 @@ -395,10 +395,10 @@ /* Define this to enable SSL support. */ #undef TLS -/* Define to 1 if your declares 'struct tm'. */ +/* Define to 1 if your declares `struct tm'. */ #undef TM_IN_SYS_TIME -/* Enable extensions on AIX, Interix, z/OS. */ +/* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # undef _ALL_SOURCE #endif @@ -459,15 +459,11 @@ #ifndef __STDC_WANT_IEC_60559_DFP_EXT__ # undef __STDC_WANT_IEC_60559_DFP_EXT__ #endif -/* Enable extensions specified by C23 Annex F. */ -#ifndef __STDC_WANT_IEC_60559_EXT__ -# undef __STDC_WANT_IEC_60559_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 C23 Annex H and ISO/IEC TS 18661-3:2015. */ +/* 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 @@ -505,14 +501,14 @@ /* Define this to a 64-bit type on Cygwin to satisfy OpenSSL dependencies. */ #undef __int64 -/* Define to empty if 'const' does not conform to ANSI C. */ +/* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define this to ASN1_STRING_get0_data when using OpenSSL 1.1.0+, ASN1_STRING_data otherwise. */ #undef egg_ASN1_string_data -/* Define to '__inline__' or '__inline' if that's what the C compiler +/* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline @@ -525,14 +521,14 @@ /* Define as a signed integer type capable of holding a process identifier. */ #undef pid_t -/* Define as 'unsigned int' if doesn't define. */ +/* Define to `unsigned int' if does not define. */ #undef size_t /* Substitute for socklen_t */ #undef socklen_t -/* Define to empty if the keyword 'volatile' does not work. Warning: valid - code using 'volatile' can become incorrect without. Disable with care. */ +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ #undef volatile #endif /* !_EGG_CONFIG_H */ diff --git a/configure b/configure index 41fc0085f..4b2385d1d 100755 --- a/configure +++ b/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac bc7bc2ee. +# From configure.ac 95f630ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for Eggdrop 1.9.5. +# Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # @@ -20,6 +20,7 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -28,13 +29,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,14 +136,15 @@ case $- in # (((( 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'. +# out after a failed `exec'. 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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -151,13 +152,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi " @@ -175,9 +175,8 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac +else \$as_nop + exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -191,15 +190,14 @@ test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac +else $as_nop + as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 @@ -232,13 +230,12 @@ IFS=$as_save_IFS if $as_found then : -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +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 ;; -esac +fi fi @@ -260,7 +257,7 @@ case $- in # (((( 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'. +# out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -280,8 +277,7 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi ;; -esac +fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -320,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 # ------------- @@ -388,12 +392,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -407,14 +410,21 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } 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] # ---------------------------------------- @@ -488,8 +498,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' - t clear - :clear s/[$]LINENO.*/&-/ t lineno b @@ -538,6 +546,7 @@ esac 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 @@ -549,9 +558,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -576,12 +585,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -938,7 +947,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1151,7 +1160,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1167,7 +1176,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1197,8 +1206,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) @@ -1206,7 +1215,7 @@ Try '$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1256,7 +1265,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: '$host' +# There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1324,7 +1333,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1352,7 +1361,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures Eggdrop 1.9.5 to adapt to many kinds of systems. +\`configure' configures Eggdrop 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1366,11 +1375,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' + -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] + --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1378,10 +1387,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. For better control, use the options below. @@ -1463,7 +1472,7 @@ Some influential environment variables: you have headers in a nonstandard directory CPP C preprocessor -Use these variables to override the choices made by 'configure' or to help +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 . @@ -1532,9 +1541,9 @@ 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.72 +generated by GNU Autoconf 2.71 -Copyright (C) 2023 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. @@ -1575,12 +1584,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1599,8 +1607,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -1608,12 +1616,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac +else $as_nop + eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1653,12 +1659,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1697,12 +1702,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1720,15 +1724,15 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (void); below. */ + which can conflict with char $2 (); below. */ #include #undef $2 @@ -1739,7 +1743,7 @@ else case e in #( #ifdef __cplusplus extern "C" #endif -char $2 (void); +char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ @@ -1758,13 +1762,11 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac +else $as_nop + eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac + conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1803,13 +1805,12 @@ printf "%s\n" "$ac_try_echo"; } >&5 test $ac_status = 0; }; } then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 +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 ;; -esac + ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno @@ -1829,8 +1830,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else case e in #( - e) eval "$3=no" +else $as_nop + eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 @@ -1860,14 +1861,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else case e in #( - e) eval "$3=yes" ;; -esac +else $as_nop + eval "$3=yes" 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 ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1888,8 +1887,8 @@ printf %s "checking for $2.$3... " >&6; } if eval test \${$4+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int @@ -1905,8 +1904,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $5 int @@ -1922,15 +1921,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$4=yes" -else case e in #( - e) eval "$4=no" ;; -esac +else $as_nop + eval "$4=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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 ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$4 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1952,8 +1948,8 @@ printf %s "checking whether $as_decl_name is declared... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else case e in #( - e) as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` +else $as_nop + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` eval ac_save_FLAGS=\$$6 as_fn_append $6 " $5" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -1977,14 +1973,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac +else $as_nop + eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext eval $6=\$ac_save_FLAGS - ;; -esac + fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -2038,19 +2032,18 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid; break -else case e in #( - e) as_fn_arith $ac_mid + 1 && ac_lo=$as_val +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= break fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val ;; -esac + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int @@ -2085,23 +2078,20 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_lo=$ac_mid; break -else case e in #( - e) as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val +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= break fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val ;; -esac + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done -else case e in #( - e) ac_lo= ac_hi= ;; -esac +else $as_nop + ac_lo= ac_hi= fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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 # Binary search between lo and hi bounds. @@ -2124,9 +2114,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_hi=$ac_mid -else case e in #( - e) as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val ;; -esac +else $as_nop + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done @@ -2174,9 +2163,8 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : echo >>conftest.val; read $3 &6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -2497,7 +2485,9 @@ 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 (char **p, int i) +static char *e (p, i) + char **p; + int i; { return p[i]; } @@ -2511,21 +2501,6 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - /* 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 @@ -2553,19 +2528,16 @@ 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? */ +// Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif -// See if C++-style comments work. - #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); -extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -2615,6 +2587,7 @@ 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) @@ -2680,8 +2653,6 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; - // Work around memory leak warnings. - free (ia); // Check named initializers. struct named_init ni = { @@ -2703,7 +2674,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -/* Does the compiler advertise C11 conformance? */ +// Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -2901,9 +2872,8 @@ IFS=$as_save_IFS if $as_found then : -else case e in #( - e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; -esac +else $as_nop + as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi @@ -2931,12 +2901,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -2945,18 +2915,18 @@ printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -2972,11 +2942,11 @@ printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -3078,8 +3048,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then +else $as_nop + if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -3101,8 +3071,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -3128,8 +3097,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then +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 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -3151,8 +3120,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -3181,10 +3149,10 @@ esac fi -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;} +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; } +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -3256,8 +3224,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 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' + # 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, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -3277,7 +3245,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' + # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -3288,9 +3256,8 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else case e in #( - e) ac_file='' ;; -esac +else $as_nop + ac_file='' fi if test -z "$ac_file" then : @@ -3299,14 +3266,13 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } +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; } @@ -3330,10 +3296,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 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 -# 'rm'. + # 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 +# `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -3343,12 +3309,11 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$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; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -3364,8 +3329,6 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; return ferror (f) || fclose (f) != 0; ; @@ -3405,27 +3368,26 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { 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: 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; } +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } fi fi fi { 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.o conftest.obj conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3457,18 +3419,16 @@ then : break;; esac done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -3479,8 +3439,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -3497,14 +3457,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac +else $as_nop + ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -3522,8 +3480,8 @@ printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -3541,8 +3499,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" +else $as_nop + CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3557,8 +3515,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3575,15 +3533,12 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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 ;; -esac +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 - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac + ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -3610,8 +3565,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c11=no +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3628,28 +3583,25 @@ 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 ;; -esac +CC=$ac_save_CC fi 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 case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac + ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno @@ -3659,8 +3611,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c99=no +else $as_nop + ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3677,28 +3629,25 @@ 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 ;; -esac +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 case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac + ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno @@ -3708,8 +3657,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c89=no +else $as_nop + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -3726,28 +3675,25 @@ 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 ;; -esac +CC=$ac_save_CC fi 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 case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac + ac_prog_cc_stdc=c89 fi fi @@ -3824,8 +3770,8 @@ 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ # define __EXTENSIONS__ 1 @@ -3841,12 +3787,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_safe_to_define___extensions__=yes -else case e in #( - e) ac_cv_safe_to_define___extensions__=no ;; -esac +else $as_nop + ac_cv_safe_to_define___extensions__=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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; } @@ -3856,8 +3800,8 @@ 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 case e in #( - e) ac_cv_should_define__xopen_source=no +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 @@ -3876,8 +3820,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #define _XOPEN_SOURCE 500 @@ -3895,12 +3839,10 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_should_define__xopen_source=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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 ;; -esac +fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5 printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } @@ -3925,8 +3867,6 @@ printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; } printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_EXT__ 1" >>confdefs.h - printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h @@ -3946,9 +3886,8 @@ then : printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h -else case e in #( - e) MINIX= ;; -esac +else $as_nop + MINIX= fi if test $ac_cv_safe_to_define___extensions__ = yes then : @@ -3966,21 +3905,15 @@ printf %s "checking for library containing strerror... " >&6; } if test ${ac_cv_search_strerror+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS +else $as_nop + ac_func_search_save_LIBS=$LIBS 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char strerror (void); + builtin and then its argument prototype would still apply. */ +char strerror (); int main (void) { @@ -4011,13 +3944,11 @@ done if test ${ac_cv_search_strerror+y} then : -else case e in #( - e) ac_cv_search_strerror=no ;; -esac +else $as_nop + ac_cv_search_strerror=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5 printf "%s\n" "$ac_cv_search_strerror" >&6; } @@ -4037,8 +3968,8 @@ printf %s "checking for icc... " >&6; } if test ${egg_cv_var_cc_icc+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4052,15 +3983,13 @@ then : egg_cv_var_cc_icc="yes" -else case e in #( - e) +else $as_nop + egg_cv_var_cc_icc="no" - ;; -esac + fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_cc_icc" >&5 printf "%s\n" "$egg_cv_var_cc_icc" >&6; } @@ -4078,8 +4007,8 @@ printf %s "checking whether the compiler understands -pipe... " >&6; } if test ${egg_cv_var_ccpipe+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + ac_old_CC="$CC" CC="$CC -pipe" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4098,16 +4027,14 @@ then : egg_cv_var_ccpipe="yes" -else case e in #( - e) +else $as_nop + egg_cv_var_ccpipe="no" - ;; -esac + fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC="$ac_old_CC" - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccpipe" >&5 printf "%s\n" "$egg_cv_var_ccpipe" >&6; } @@ -4132,8 +4059,8 @@ printf %s "checking whether the compiler understands -Wall... " >&6; } if test ${egg_cv_var_ccwall+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + ac_old_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -Wall" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -4152,16 +4079,14 @@ then : egg_cv_var_ccwall="yes" -else case e in #( - e) +else $as_nop + egg_cv_var_ccwall="no" - ;; -esac + fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CFLAGS="$ac_old_CFLAGS" - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ccwall" >&5 printf "%s\n" "$egg_cv_var_ccwall" >&6; } @@ -4215,8 +4140,8 @@ if test -z "$INSTALL"; then if test ${ac_cv_path_install+y} then : printf %s "(cached) " >&6 -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +else $as_nop + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS @@ -4270,8 +4195,7 @@ esac IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir - ;; -esac + fi if test ${ac_cv_path_install+y}; then INSTALL=$ac_cv_path_install @@ -4303,8 +4227,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MAKE+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$MAKE"; then +else $as_nop + if test -n "$MAKE"; then ac_cv_prog_MAKE="$MAKE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4326,8 +4250,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi MAKE=$ac_cv_prog_MAKE if test -n "$MAKE"; then @@ -4349,8 +4272,8 @@ 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 case e in #( - e) cat >conftest.make <<\_ACEOF +else $as_nop + cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' @@ -4362,8 +4285,7 @@ case `${MAKE-make} -f conftest.make 2>/dev/null` in *) eval ac_cv_prog_make_${ac_make}_set=no;; esac -rm -f conftest.make ;; -esac +rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -4383,8 +4305,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_RANLIB+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$RANLIB"; then +else $as_nop + if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4406,8 +4328,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then @@ -4429,8 +4350,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_RANLIB+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_RANLIB"; then +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 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4452,8 +4373,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then @@ -4503,8 +4423,8 @@ printf %s "checking whether $ac_prog works... " >&6; } if test ${ac_cv_prog_HEAD_1+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + if test -n "$HEAD_1"; then # Let the user override the test. ac_cv_prog_HEAD_1="$HEAD_1" @@ -4513,8 +4433,7 @@ else case e in #( ac_cv_prog_HEAD_1="$ac_prog" fi fi - ;; -esac + fi if test -n "$ac_cv_prog_HEAD_1"; then @@ -4550,8 +4469,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_STRIP+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$STRIP"; then +else $as_nop + if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4573,8 +4492,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then @@ -4600,8 +4518,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$AWK"; then +else $as_nop + if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4623,8 +4541,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then @@ -4658,8 +4575,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_BASENAME+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$BASENAME"; then +else $as_nop + if test -n "$BASENAME"; then ac_cv_prog_BASENAME="$BASENAME" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4681,8 +4598,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi BASENAME=$ac_cv_prog_BASENAME if test -n "$BASENAME"; then @@ -4712,8 +4628,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_UNAME+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$UNAME"; then +else $as_nop + if test -n "$UNAME"; then ac_cv_prog_UNAME="$UNAME" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -4735,8 +4651,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi UNAME=$ac_cv_prog_UNAME if test -n "$UNAME"; then @@ -4757,9 +4672,8 @@ fi if test ${enable_strip+y} then : enableval=$enable_strip; enable_strip="$enableval" -else case e in #( - e) enable_strip="no" ;; -esac +else $as_nop + enable_strip="no" fi @@ -4791,16 +4705,15 @@ printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_build_alias=$build_alias +else $as_nop + ac_build_alias=$build_alias test "x$ac_build_alias" = x && 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 - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } @@ -4827,15 +4740,14 @@ printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test "x$host_alias" = x; then +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 fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } @@ -4862,8 +4774,8 @@ 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 case e in #( - e) ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ +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" done @@ -4888,10 +4800,9 @@ do 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 -case `"$ac_path_SED" --version 2>&1` in #( +case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -4926,8 +4837,7 @@ IFS=$as_save_IFS else ac_cv_path_SED=$SED fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } @@ -4949,8 +4859,8 @@ if test -z "$CPP"; then if test ${ac_cv_prog_CPP+y} then : printf %s "(cached) " >&6 -else case e in #( - e) # Double quotes because $CC needs to be expanded +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 @@ -4968,10 +4878,9 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else case e in #( - e) # Broken: fails on valid input. -continue ;; -esac +else $as_nop + # Broken: fails on valid input. +continue fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -4985,16 +4894,15 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else case e in #( - e) # Passes both tests. +else $as_nop + # Passes both tests. ac_preproc_ok=: -break ;; -esac +break fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# 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 : @@ -5003,8 +4911,7 @@ fi done ac_cv_prog_CPP=$CPP - ;; -esac + fi CPP=$ac_cv_prog_CPP else @@ -5027,10 +4934,9 @@ _ACEOF if ac_fn_c_try_cpp "$LINENO" then : -else case e in #( - e) # Broken: fails on valid input. -continue ;; -esac +else $as_nop + # Broken: fails on valid input. +continue fi rm -f conftest.err conftest.i conftest.$ac_ext @@ -5044,26 +4950,24 @@ if ac_fn_c_try_cpp "$LINENO" then : # Broken: success on invalid input. continue -else case e in #( - e) # Passes both tests. +else $as_nop + # Passes both tests. ac_preproc_ok=: -break ;; -esac +break fi rm -f conftest.err conftest.i conftest.$ac_ext done -# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. +# 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 case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$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 $? "C preprocessor \"$CPP\" fails sanity check -See 'config.log' for more details" "$LINENO" 5; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c @@ -5073,14 +4977,14 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 -printf %s "checking for egrep -e... " >&6; } -if test ${ac_cv_path_EGREP_TRADITIONAL+y} +{ 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 case e in #( - e) if test -z "$EGREP_TRADITIONAL"; then - ac_path_EGREP_TRADITIONAL_found=false +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 @@ -5094,14 +4998,13 @@ do for ac_prog in grep ggrep do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue -# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. - # Check for GNU $ac_path_EGREP_TRADITIONAL -case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( + 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_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; -#( + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -5110,14 +5013,14 @@ case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" - "$ac_path_EGREP_TRADITIONAL" -E 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + 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_EGREP_TRADITIONAL_max-0}; then + 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_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" - ac_path_EGREP_TRADITIONAL_max=$ac_count + 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 @@ -5125,24 +5028,35 @@ case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - $ac_path_EGREP_TRADITIONAL_found && break 3 + $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then - : + 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_EGREP_TRADITIONAL=$EGREP_TRADITIONAL + 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" + - if test "$ac_cv_path_EGREP_TRADITIONAL" +{ 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 : - ac_cv_path_EGREP_TRADITIONAL="$ac_cv_path_EGREP_TRADITIONAL -E" -else case e in #( - e) if test -z "$EGREP_TRADITIONAL"; then - ac_path_EGREP_TRADITIONAL_found=false + 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 @@ -5156,14 +5070,13 @@ do for ac_prog in egrep do for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP_TRADITIONAL="$as_dir$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP_TRADITIONAL" || continue -# Check for GNU ac_path_EGREP_TRADITIONAL and select it if it is found. - # Check for GNU $ac_path_EGREP_TRADITIONAL -case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( + 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_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" ac_path_EGREP_TRADITIONAL_found=:;; -#( + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -5172,14 +5085,14 @@ case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" - printf "%s\n" 'EGREP_TRADITIONAL' >> "conftest.nl" - "$ac_path_EGREP_TRADITIONAL" 'EGR(EP|AC)_TRADITIONAL$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + printf "%s\n" 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_TRADITIONAL_max-0}; then + if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP_TRADITIONAL="$ac_path_EGREP_TRADITIONAL" - ac_path_EGREP_TRADITIONAL_max=$ac_count + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break @@ -5187,25 +5100,24 @@ case `"$ac_path_EGREP_TRADITIONAL" --version 2>&1` in #( rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac - $ac_path_EGREP_TRADITIONAL_found && break 3 + $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP_TRADITIONAL"; then + 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_TRADITIONAL=$EGREP_TRADITIONAL + ac_cv_path_EGREP=$EGREP fi - ;; -esac -fi ;; -esac + + fi fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5 -printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } - EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL +{ 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 @@ -5219,21 +5131,15 @@ printf %s "checking for library containing gethostbyname... " >&6; } if test ${ac_cv_search_gethostbyname+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS +else $as_nop + ac_func_search_save_LIBS=$LIBS 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (void); + builtin and then its argument prototype would still apply. */ +char gethostbyname (); int main (void) { @@ -5264,13 +5170,11 @@ done if test ${ac_cv_search_gethostbyname+y} then : -else case e in #( - e) ac_cv_search_gethostbyname=no ;; -esac +else $as_nop + ac_cv_search_gethostbyname=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_gethostbyname" >&5 printf "%s\n" "$ac_cv_search_gethostbyname" >&6; } @@ -5286,21 +5190,15 @@ printf %s "checking for library containing socket... " >&6; } if test ${ac_cv_search_socket+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS +else $as_nop + ac_func_search_save_LIBS=$LIBS 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char socket (void); + builtin and then its argument prototype would still apply. */ +char socket (); int main (void) { @@ -5331,13 +5229,11 @@ done if test ${ac_cv_search_socket+y} then : -else case e in #( - e) ac_cv_search_socket=no ;; -esac +else $as_nop + ac_cv_search_socket=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_socket" >&5 printf "%s\n" "$ac_cv_search_socket" >&6; } @@ -5346,29 +5242,23 @@ if test "$ac_res" != no then : test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" -else case e in #( - e) +else $as_nop + { 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 case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket -lnsl $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char socket (void); + builtin and then its argument prototype would still apply. */ +char socket (); int main (void) { @@ -5380,14 +5270,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_socket_socket=yes -else case e in #( - e) ac_cv_lib_socket_socket=no ;; -esac +else $as_nop + ac_cv_lib_socket_socket=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 printf "%s\n" "$ac_cv_lib_socket_socket" >&6; } @@ -5395,8 +5283,7 @@ if test "x$ac_cv_lib_socket_socket" = xyes then : LIBS="-lsocket -lnsl $LIBS" fi - ;; -esac + fi @@ -5440,14 +5327,8 @@ printf %s "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... /* 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char pthread_join (void); + builtin and then its argument prototype would still apply. */ +char pthread_join (); int main (void) { @@ -5541,7 +5422,7 @@ case $host_os in _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP_TRADITIONAL "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1 + $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;} @@ -5571,8 +5452,8 @@ printf %s "checking whether $CC is Clang... " >&6; } if test ${ax_cv_PTHREAD_CLANG+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ax_cv_PTHREAD_CLANG=no +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 cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -5584,15 +5465,14 @@ else case e in #( _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP_TRADITIONAL "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 + $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1 then : ax_cv_PTHREAD_CLANG=yes fi rm -rf conftest* fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5 printf "%s\n" "$ax_cv_PTHREAD_CLANG" >&6; } @@ -5642,9 +5522,8 @@ esac if test "x$ax_pthread_check_macro" = "x--" then : ax_pthread_check_cond=0 -else case e in #( - e) ax_pthread_check_cond="!defined($ax_pthread_check_macro)" ;; -esac +else $as_nop + ax_pthread_check_cond="!defined($ax_pthread_check_macro)" fi @@ -5678,8 +5557,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ax_pthread_config+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ax_pthread_config"; then +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 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -5702,8 +5581,7 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_ax_pthread_config" && ac_cv_prog_ax_pthread_config="no" -fi ;; -esac +fi fi ax_pthread_config=$ac_cv_prog_ax_pthread_config if test -n "$ax_pthread_config"; then @@ -5836,8 +5714,8 @@ printf %s "checking whether Clang needs flag to prevent \"argument unused\" warn if test ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown +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 # (.c -> exe), because the warning occurs only in the second @@ -5883,8 +5761,7 @@ then : ax_pthread_try=no fi ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try" - ;; -esac + fi { 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; } @@ -5911,8 +5788,8 @@ printf %s "checking for joinable pthread attribute... " >&6; } if test ${ax_cv_PTHREAD_JOINABLE_ATTR+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ax_cv_PTHREAD_JOINABLE_ATTR=unknown +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. */ @@ -5932,8 +5809,7 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext done - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5 printf "%s\n" "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; } @@ -5953,15 +5829,14 @@ printf %s "checking whether more special flags are required for pthreads... " >& if test ${ax_cv_PTHREAD_SPECIAL_FLAGS+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ax_cv_PTHREAD_SPECIAL_FLAGS=no +else $as_nop + ax_cv_PTHREAD_SPECIAL_FLAGS=no case $host_os in solaris*) ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS" ;; esac - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5 printf "%s\n" "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; } @@ -5977,8 +5852,8 @@ printf %s "checking for PTHREAD_PRIO_INHERIT... " >&6; } if test ${ax_cv_PTHREAD_PRIO_INHERIT+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int @@ -5993,14 +5868,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ax_cv_PTHREAD_PRIO_INHERIT=yes -else case e in #( - e) ax_cv_PTHREAD_PRIO_INHERIT=no ;; -esac +else $as_nop + ax_cv_PTHREAD_PRIO_INHERIT=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5 printf "%s\n" "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; } @@ -6050,8 +5923,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$PTHREAD_CC"; then +else $as_nop + if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -6073,8 +5946,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then @@ -6101,8 +5973,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_PTHREAD_CXX+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$PTHREAD_CXX"; then +else $as_nop + if test -n "$PTHREAD_CXX"; then ac_cv_prog_PTHREAD_CXX="$PTHREAD_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -6124,8 +5996,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi PTHREAD_CXX=$ac_cv_prog_PTHREAD_CXX if test -n "$PTHREAD_CXX"; then @@ -6182,21 +6053,15 @@ printf %s "checking for library containing dlopen... " >&6; } if test ${ac_cv_search_dlopen+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS +else $as_nop + ac_func_search_save_LIBS=$LIBS 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (void); + builtin and then its argument prototype would still apply. */ +char dlopen (); int main (void) { @@ -6227,13 +6092,11 @@ done if test ${ac_cv_search_dlopen+y} then : -else case e in #( - e) ac_cv_search_dlopen=no ;; -esac +else $as_nop + ac_cv_search_dlopen=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_dlopen" >&5 printf "%s\n" "$ac_cv_search_dlopen" >&6; } @@ -6249,22 +6112,16 @@ printf %s "checking for tan in -lm... " >&6; } if test ${ac_cv_lib_m_tan+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lm $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char tan (void); + builtin and then its argument prototype would still apply. */ +char tan (); int main (void) { @@ -6276,14 +6133,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_m_tan=yes -else case e in #( - e) ac_cv_lib_m_tan=no ;; -esac +else $as_nop + ac_cv_lib_m_tan=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_tan" >&5 printf "%s\n" "$ac_cv_lib_m_tan" >&6; } @@ -6298,22 +6153,16 @@ printf %s "checking for shl_load in -ldld... " >&6; } if test ${ac_cv_lib_dld_shl_load+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (void); + builtin and then its argument prototype would still apply. */ +char shl_load (); int main (void) { @@ -6325,14 +6174,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_dld_shl_load=yes -else case e in #( - e) ac_cv_lib_dld_shl_load=no ;; -esac +else $as_nop + ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { 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; } @@ -6355,15 +6202,14 @@ printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test "x$target_alias" = x; then +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 fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } @@ -6397,9 +6243,8 @@ printf %s "checking system type... " >&6; } if test ${egg_cv_var_system_type+y} then : printf %s "(cached) " >&6 -else case e in #( - e) egg_cv_var_system_type=`$UNAME -s` ;; -esac +else $as_nop + egg_cv_var_system_type=`$UNAME -s` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_type" >&5 printf "%s\n" "$egg_cv_var_system_type" >&6; } @@ -6408,9 +6253,8 @@ printf %s "checking system release... " >&6; } if test ${egg_cv_var_system_release+y} then : printf %s "(cached) " >&6 -else case e in #( - e) egg_cv_var_system_release=`$UNAME -r` ;; -esac +else $as_nop + egg_cv_var_system_release=`$UNAME -r` fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_system_release" >&5 printf "%s\n" "$egg_cv_var_system_release" >&6; } @@ -6844,14 +6688,14 @@ EOF ac_header_dirent=no for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | sed "$as_sed_sh"` + 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include <$ac_hdr> @@ -6868,12 +6712,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$as_ac_Header=yes" -else case e in #( - e) eval "$as_ac_Header=no" ;; -esac +else $as_nop + eval "$as_ac_Header=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$as_ac_Header { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -6881,7 +6723,7 @@ printf "%s\n" "$ac_res" >&6; } if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_hdr" | sed "$as_sed_cpp"` 1 +#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1 _ACEOF ac_header_dirent=$ac_hdr; break @@ -6895,21 +6737,15 @@ printf %s "checking for library containing opendir... " >&6; } if test ${ac_cv_search_opendir+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS +else $as_nop + ac_func_search_save_LIBS=$LIBS 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (void); + builtin and then its argument prototype would still apply. */ +char opendir (); int main (void) { @@ -6940,13 +6776,11 @@ done if test ${ac_cv_search_opendir+y} then : -else case e in #( - e) ac_cv_search_opendir=no ;; -esac +else $as_nop + ac_cv_search_opendir=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 printf "%s\n" "$ac_cv_search_opendir" >&6; } @@ -6963,21 +6797,15 @@ printf %s "checking for library containing opendir... " >&6; } if test ${ac_cv_search_opendir+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS +else $as_nop + ac_func_search_save_LIBS=$LIBS 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (void); + builtin and then its argument prototype would still apply. */ +char opendir (); int main (void) { @@ -7008,13 +6836,11 @@ done if test ${ac_cv_search_opendir+y} then : -else case e in #( - e) ac_cv_search_opendir=no ;; -esac +else $as_nop + ac_cv_search_opendir=no fi rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac +LIBS=$ac_func_search_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 printf "%s\n" "$ac_cv_search_opendir" >&6; } @@ -7139,8 +6965,8 @@ printf %s "checking for an ANSI C-conforming const... " >&6; } if test ${ac_cv_c_const+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7204,12 +7030,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_const=yes -else case e in #( - e) ac_cv_c_const=no ;; -esac +else $as_nop + ac_cv_c_const=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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_c_const" >&5 printf "%s\n" "$ac_cv_c_const" >&6; } @@ -7224,8 +7048,8 @@ printf %s "checking whether byte ordering is bigendian... " >&6; } if test ${ac_cv_c_bigendian+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_c_bigendian=unknown +else $as_nop + ac_cv_c_bigendian=unknown # See if we're dealing with a universal compiler. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -7271,8 +7095,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext int main (void) { -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ +#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \ + && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \ && LITTLE_ENDIAN) bogus endian macros #endif @@ -7303,9 +7127,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes -else case e in #( - e) ac_cv_c_bigendian=no ;; -esac +else $as_nop + ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -7349,9 +7172,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_bigendian=yes -else case e in #( - e) ac_cv_c_bigendian=no ;; -esac +else $as_nop + ac_cv_c_bigendian=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi @@ -7378,23 +7200,22 @@ unsigned short int ascii_mm[] = int use_ebcdic (int i) { return ebcdic_mm[i] + ebcdic_ii[i]; } - int - main (int argc, char **argv) - { - /* Intimidate the compiler so that it does not - optimize the arrays away. */ - char *p = argv[0]; - ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; - ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; - return use_ascii (argc) == use_ebcdic (*p); - } + extern int foo; + +int +main (void) +{ +return use_ascii (foo) == use_ebcdic (foo); + ; + return 0; +} _ACEOF -if ac_fn_c_try_link "$LINENO" +if ac_fn_c_try_compile "$LINENO" then : - if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then + if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then ac_cv_c_bigendian=yes fi - if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then + if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then if test "$ac_cv_c_bigendian" = unknown; then ac_cv_c_bigendian=no else @@ -7403,10 +7224,9 @@ then : fi fi fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +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 @@ -7429,17 +7249,14 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_c_bigendian=no -else case e in #( - e) ac_cv_c_bigendian=yes ;; -esac +else $as_nop + ac_cv_c_bigendian=yes fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - fi ;; -esac + fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 printf "%s\n" "$ac_cv_c_bigendian" >&6; } @@ -7464,8 +7281,8 @@ printf %s "checking for inline... " >&6; } if test ${ac_cv_c_inline+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_c_inline=no +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. */ @@ -7483,8 +7300,7 @@ fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test "$ac_cv_c_inline" != no && break done - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 printf "%s\n" "$ac_cv_c_inline" >&6; } @@ -7510,8 +7326,8 @@ printf %s "checking for flexible array members... " >&6; } if test ${ac_cv_c_flexmember+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7524,9 +7340,7 @@ int m = getchar (); struct s *p = (struct s *) malloc (offsetof (struct s, d) + m * sizeof (double)); p->d[0] = 0.0; - m = p->d != (double *) NULL; - free (p); - return m; + return p->d != (double *) NULL; ; return 0; } @@ -7534,12 +7348,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_flexmember=yes -else case e in #( - e) ac_cv_c_flexmember=no ;; -esac +else $as_nop + ac_cv_c_flexmember=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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_c_flexmember" >&5 printf "%s\n" "$ac_cv_c_flexmember" >&6; } @@ -7559,8 +7371,8 @@ then : printf "%s\n" "#define HAVE_INTPTR_T 1" >>confdefs.h -else case e in #( - e) for ac_type in 'int' 'long int' 'long long int'; do +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 @@ -7584,8 +7396,7 @@ printf "%s\n" "#define intptr_t $ac_type" >>confdefs.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext test -z "$ac_type" && break - done ;; -esac + done fi @@ -7595,8 +7406,8 @@ fi if test "x$ac_cv_type_pid_t" = xyes then : -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined _WIN64 && !defined __CYGWIN__ @@ -7615,16 +7426,14 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_pid_type='int' -else case e in #( - e) ac_pid_type='__int64' ;; -esac +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 - ;; -esac + fi @@ -7632,11 +7441,10 @@ 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 : -else case e in #( - e) +else $as_nop + printf "%s\n" "#define size_t unsigned int" >>confdefs.h - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 @@ -7644,8 +7452,8 @@ 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7663,12 +7471,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_struct_tm=time.h -else case e in #( - e) ac_cv_struct_tm=sys/time.h ;; -esac +else $as_nop + ac_cv_struct_tm=sys/time.h fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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_struct_tm" >&5 printf "%s\n" "$ac_cv_struct_tm" >&6; } @@ -7683,8 +7489,8 @@ printf %s "checking for $CC options needed to detect all undeclared functions... if test ${ac_cv_c_undeclared_builtin_options+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_save_CFLAGS=$CFLAGS +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" @@ -7703,8 +7509,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else case e in #( - e) # This test program should compile successfully. +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 @@ -7732,29 +7538,26 @@ then : if test x"$ac_arg" = x then : ac_cv_c_undeclared_builtin_options='none needed' -else case e in #( - e) ac_cv_c_undeclared_builtin_options=$ac_arg ;; -esac +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 ;; -esac +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 - ;; -esac + 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;} + { { 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; } ;; #( +See \`config.log' for more details" "$LINENO" 5; } ;; #( 'none needed') : ac_c_undeclared_builtin_options='' ;; #( *) : @@ -7783,9 +7586,8 @@ else if test "x$ac_cv_have_decl_tzname" = xyes then : ac_have_decl=1 -else case e in #( - e) ac_have_decl=0 ;; -esac +else $as_nop + ac_have_decl=0 fi printf "%s\n" "#define HAVE_DECL_TZNAME $ac_have_decl" >>confdefs.h @@ -7794,8 +7596,8 @@ printf %s "checking for tzname... " >&6; } if test ${ac_cv_var_tzname+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #if !HAVE_DECL_TZNAME @@ -7813,13 +7615,11 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_var_tzname=yes -else case e in #( - e) ac_cv_var_tzname=no ;; -esac +else $as_nop + ac_cv_var_tzname=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac + conftest$ac_exeext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_var_tzname" >&5 printf "%s\n" "$ac_cv_var_tzname" >&6; } @@ -7835,8 +7635,8 @@ printf %s "checking for working volatile... " >&6; } if test ${ac_cv_c_volatile+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -7853,12 +7653,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_c_volatile=yes -else case e in #( - e) ac_cv_c_volatile=no ;; -esac +else $as_nop + ac_cv_c_volatile=no fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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_c_volatile" >&5 printf "%s\n" "$ac_cv_c_volatile" >&6; } @@ -7873,8 +7671,8 @@ printf %s "checking for socklen_t... " >&6; } if test ${ac_cv_ax_type_socklen_t+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include @@ -7889,13 +7687,11 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_ax_type_socklen_t=yes -else case e in #( - e) ac_cv_ax_type_socklen_t=no ;; -esac +else $as_nop + ac_cv_ax_type_socklen_t=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac + fi { 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; } @@ -7917,8 +7713,8 @@ ac_stdint_h=`echo eggint.h` if test ${ac_cv_header_stdint_t+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + old_CXXFLAGS="$CXXFLAGS" ; CXXFLAGS="" old_CPPFLAGS="$CPPFLAGS" ; CPPFLAGS="" old_CFLAGS="$CFLAGS" ; CFLAGS="" @@ -7937,9 +7733,8 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_stdint_result="(assuming C99 compatible system)" ac_cv_header_stdint_t="stdint.h"; -else case e in #( - e) ac_cv_header_stdint_t="" ;; -esac +else $as_nop + ac_cv_header_stdint_t="" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext if test "$GCC" = "yes" && test ".$ac_cv_header_stdint_t" = "."; then @@ -7964,8 +7759,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi CXXFLAGS="$old_CXXFLAGS" CPPFLAGS="$old_CPPFLAGS" -CFLAGS="$old_CFLAGS" ;; -esac +CFLAGS="$old_CFLAGS" fi @@ -7997,8 +7791,8 @@ printf %s "checking for stdint uintptr_t... " >&6; } if test ${ac_cv_header_stdint_x+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + ac_cv_header_stdint_x="" # the 1997 typedefs (inttypes.h) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 printf "%s\n" "(..)" >&6; } @@ -8011,9 +7805,8 @@ printf "%s\n" "(..)" >&6; } if test "x$ac_cv_type_uintptr_t" = xyes then : ac_cv_header_stdint_x=$i -else case e in #( - e) continue ;; -esac +else $as_nop + continue fi ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i> @@ -8021,9 +7814,8 @@ fi if test "x$ac_cv_type_uint64_t" = xyes then : and64="/uint64_t" -else case e in #( - e) and64="" ;; -esac +else $as_nop + and64="" fi ac_cv_stdint_result="(seen uintptr_t$and64 in $i)" @@ -8031,8 +7823,7 @@ fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uintptr_t" >&5 printf %s "checking for stdint uintptr_t... " >&6; } - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_x" >&5 printf "%s\n" "$ac_cv_header_stdint_x" >&6; } @@ -8045,8 +7836,8 @@ printf %s "checking for stdint uint32_t... " >&6; } if test ${ac_cv_header_stdint_o+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + ac_cv_header_stdint_o="" # the 1995 typedefs (sys/inttypes.h) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 printf "%s\n" "(..)" >&6; } @@ -8059,9 +7850,8 @@ printf "%s\n" "(..)" >&6; } if test "x$ac_cv_type_uint32_t" = xyes then : ac_cv_header_stdint_o=$i -else case e in #( - e) continue ;; -esac +else $as_nop + continue fi ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "#include<$i> @@ -8069,9 +7859,8 @@ fi if test "x$ac_cv_type_uint64_t" = xyes then : and64="/uint64_t" -else case e in #( - e) and64="" ;; -esac +else $as_nop + and64="" fi ac_cv_stdint_result="(seen uint32_t$and64 in $i)" @@ -8080,8 +7869,7 @@ fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint uint32_t" >&5 printf %s "checking for stdint uint32_t... " >&6; } - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_o" >&5 printf "%s\n" "$ac_cv_header_stdint_o" >&6; } @@ -8096,8 +7884,8 @@ printf %s "checking for stdint u_int32_t... " >&6; } if test ${ac_cv_header_stdint_u+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + ac_cv_header_stdint_u="" # the BSD typedefs (sys/types.h) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: (..)" >&5 printf "%s\n" "(..)" >&6; } @@ -8109,9 +7897,8 @@ printf "%s\n" "(..)" >&6; } if test "x$ac_cv_type_u_int32_t" = xyes then : ac_cv_header_stdint_u=$i -else case e in #( - e) continue ;; -esac +else $as_nop + continue fi ac_fn_c_check_type "$LINENO" "u_int64_t" "ac_cv_type_u_int64_t" "#include<$i> @@ -8119,9 +7906,8 @@ fi if test "x$ac_cv_type_u_int64_t" = xyes then : and64="/u_int64_t" -else case e in #( - e) and64="" ;; -esac +else $as_nop + and64="" fi ac_cv_stdint_result="(seen u_int32_t$and64 in $i)" @@ -8130,8 +7916,7 @@ fi done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdint u_int32_t" >&5 printf %s "checking for stdint u_int32_t... " >&6; } - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdint_u" >&5 printf "%s\n" "$ac_cv_header_stdint_u" >&6; } @@ -8146,30 +7931,28 @@ 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]];'. +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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 case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default" +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (char))" "ac_cv_sizeof_char" "$ac_includes_default" then : -else case e in #( - e) if test "$ac_cv_type_char" = 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;} +else $as_nop + if test "$ac_cv_type_char" = 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 77 "cannot compute sizeof (char) -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_char=0 - fi ;; -esac + fi fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_char" >&5 printf "%s\n" "$ac_cv_sizeof_char" >&6; } @@ -8181,30 +7964,28 @@ 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]];'. +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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 case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short))" "ac_cv_sizeof_short" "$ac_includes_default" then : -else case e in #( - e) if test "$ac_cv_type_short" = 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;} +else $as_nop + if test "$ac_cv_type_short" = 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 77 "cannot compute sizeof (short) -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_short=0 - fi ;; -esac + fi fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short" >&5 printf "%s\n" "$ac_cv_sizeof_short" >&6; } @@ -8216,30 +7997,28 @@ 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]];'. +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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 case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default" then : -else case e in #( - e) if test "$ac_cv_type_int" = 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;} +else $as_nop + if test "$ac_cv_type_int" = 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 77 "cannot compute sizeof (int) -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_int=0 - fi ;; -esac + fi fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 printf "%s\n" "$ac_cv_sizeof_int" >&6; } @@ -8251,30 +8030,28 @@ 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]];'. +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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 case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long))" "ac_cv_sizeof_long" "$ac_includes_default" then : -else case e in #( - e) if test "$ac_cv_type_long" = 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;} +else $as_nop + if test "$ac_cv_type_long" = 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 77 "cannot compute sizeof (long) -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_long=0 - fi ;; -esac + fi fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long" >&5 printf "%s\n" "$ac_cv_sizeof_long" >&6; } @@ -8286,30 +8063,28 @@ 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]];'. +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. # This bug is HP SR number 8606223364. { 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 case e in #( - e) if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default" +else $as_nop + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void*))" "ac_cv_sizeof_voidp" "$ac_includes_default" then : -else case e in #( - e) if test "$ac_cv_type_voidp" = 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;} +else $as_nop + if test "$ac_cv_type_voidp" = 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 77 "cannot compute sizeof (void*) -See 'config.log' for more details" "$LINENO" 5; } +See \`config.log' for more details" "$LINENO" 5; } else ac_cv_sizeof_voidp=0 - fi ;; -esac + fi fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_voidp" >&5 printf "%s\n" "$ac_cv_sizeof_voidp" >&6; } @@ -8483,8 +8258,8 @@ printf %s "checking types of arguments for select... " >&6; } if test ${ac_cv_func_select_args+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_func_select_args='int,int *,struct timeval *' +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 @@ -8516,8 +8291,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext done done done - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_select_args" >&5 printf "%s\n" "$ac_cv_func_select_args" >&6; } @@ -8544,12 +8318,12 @@ rm -rf conftest* 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;} + { { 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8567,14 +8341,12 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes -else case e in #( - e) found_b64_ntop=no - ;; -esac +else $as_nop + found_b64_ntop=no + fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "x$found_b64_ntop" = xno; then @@ -8587,12 +8359,12 @@ printf %s "checking for b64_ntop with -lresolv... " >&6; } LIBS="$LIBS -lresolv" 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;} + { { 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8610,14 +8382,12 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes -else case e in #( - e) found_b64_ntop=no - ;; -esac +else $as_nop + found_b64_ntop=no + fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "x$found_b64_ntop" = xno; then @@ -8631,12 +8401,12 @@ printf %s "checking for b64_ntop with -lnetwork... " >&6; } LIBS="-lnetwork" 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;} + { { 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +See \`config.log' for more details" "$LINENO" 5; } +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -8654,14 +8424,12 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : found_b64_ntop=yes -else case e in #( - e) found_b64_ntop=no - ;; -esac +else $as_nop + found_b64_ntop=no + fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi if test "x$found_b64_ntop" = xno; then @@ -8707,8 +8475,8 @@ printf %s "checking for working mmap... " >&6; } if test ${ac_cv_func_mmap_fixed_mapped+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test "$cross_compiling" = yes +else $as_nop + if test "$cross_compiling" = yes then : case "$host_os" in # (( # Guess yes on platforms where we know the result. @@ -8716,8 +8484,8 @@ then : # If we don't know, assume the worst. *) ac_cv_func_mmap_fixed_mapped=no ;; esac -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default /* malloc might have been renamed as rpl_malloc. */ @@ -8738,21 +8506,21 @@ $ac_includes_default VM page cache was not coherent with the file system buffer cache like early versions of FreeBSD and possibly contemporary NetBSD.) For shared mappings, we should conversely verify that changes get - propagated back to all the places they're supposed to be. */ + propagated back to all the places they're supposed to be. + + Grep wants private fixed already mapped. + The main things grep needs to know about mmap are: + * does it exist and is it safe to write into the mmap'd area + * how to use it (BSD variants) */ #include #include -#ifndef getpagesize -/* Prefer sysconf to the legacy getpagesize function, as getpagesize has - been removed from POSIX and is limited to page sizes that fit in 'int'. */ +/* This mess was copied from the GNU getpagesize.h. */ +#ifndef HAVE_GETPAGESIZE # ifdef _SC_PAGESIZE -# define getpagesize() sysconf (_SC_PAGESIZE) -# elif defined _SC_PAGE_SIZE -# define getpagesize() sysconf (_SC_PAGE_SIZE) -# elif HAVE_GETPAGESIZE -int getpagesize (); -# else +# define getpagesize() sysconf(_SC_PAGESIZE) +# else /* no _SC_PAGESIZE */ # ifdef HAVE_SYS_PARAM_H # include # ifdef EXEC_PAGESIZE @@ -8776,15 +8544,16 @@ int getpagesize (); # else /* no HAVE_SYS_PARAM_H */ # define getpagesize() 8192 /* punt totally */ # endif /* no HAVE_SYS_PARAM_H */ -# endif -#endif +# endif /* no _SC_PAGESIZE */ + +#endif /* no HAVE_GETPAGESIZE */ int main (void) { char *data, *data2, *data3; const char *cdata2; - long i, pagesize; + int i, pagesize; int fd, fd2; pagesize = getpagesize (); @@ -8818,7 +8587,8 @@ main (void) if (*(data2 + i)) return 7; close (fd2); - /* 'return 8;' not currently used. */ + if (munmap (data2, pagesize)) + return 8; /* Next, try to mmap the file at a fixed address which already has something else allocated at it. If we can, also make sure that @@ -8855,16 +8625,13 @@ _ACEOF if ac_fn_c_try_run "$LINENO" then : ac_cv_func_mmap_fixed_mapped=yes -else case e in #( - e) ac_cv_func_mmap_fixed_mapped=no ;; -esac +else $as_nop + ac_cv_func_mmap_fixed_mapped=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - ;; -esac + fi { 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; } @@ -8896,8 +8663,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF @@ -8927,14 +8694,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote + # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. + # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -9128,8 +8895,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CYGPATH"; then +else $as_nop + if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9152,8 +8919,7 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" -fi ;; -esac +fi fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then @@ -9241,8 +9007,8 @@ printf %s "checking for Tcl configuration... " >&6; } if test ${ac_cv_c_tclconfig+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + # First check to see if --with-tcl was specified. if test x"${with_tclconfig}" != x ; then @@ -9354,8 +9120,7 @@ printf "%s\n" "$as_me: WARNING: --with-tcl argument should refer to directory co fi done fi - ;; -esac + fi @@ -9463,8 +9228,8 @@ then : TEA_PLATFORM="unix" CYGPATH=echo -else case e in #( - e) +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 @@ -9473,8 +9238,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CYGPATH+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CYGPATH"; then +else $as_nop + if test -n "$CYGPATH"; then ac_cv_prog_CYGPATH="$CYGPATH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -9497,8 +9262,7 @@ done IFS=$as_save_IFS test -z "$ac_cv_prog_CYGPATH" && ac_cv_prog_CYGPATH="echo" -fi ;; -esac +fi fi CYGPATH=$ac_cv_prog_CYGPATH if test -n "$CYGPATH"; then @@ -9510,8 +9274,7 @@ printf "%s\n" "no" >&6; } fi - ;; -esac + fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CC=$hold_cc @@ -9549,9 +9312,8 @@ printf "%s\n" "#define BUILD_${PACKAGE_NAME} /**/" >>confdefs.h if test "x$ac_cv_func_sin" = xyes then : MATH_LIBS="" -else case e in #( - e) MATH_LIBS="-lm" ;; -esac +else $as_nop + MATH_LIBS="-lm" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lieee" >&5 @@ -9559,8 +9321,8 @@ printf %s "checking for main in -lieee... " >&6; } if test ${ac_cv_lib_ieee_main+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lieee $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9577,14 +9339,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ieee_main=yes -else case e in #( - e) ac_cv_lib_ieee_main=no ;; -esac +else $as_nop + ac_cv_lib_ieee_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ieee_main" >&5 printf "%s\n" "$ac_cv_lib_ieee_main" >&6; } @@ -9604,8 +9364,8 @@ printf %s "checking for main in -linet... " >&6; } if test ${ac_cv_lib_inet_main+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-linet $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -9622,14 +9382,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_inet_main=yes -else case e in #( - e) ac_cv_lib_inet_main=no ;; -esac +else $as_nop + ac_cv_lib_inet_main=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_inet_main" >&5 printf "%s\n" "$ac_cv_lib_inet_main" >&6; } @@ -9671,9 +9429,8 @@ fi if test "x$ac_cv_func_connect" = xyes then : tcl_checkSocket=0 -else case e in #( - e) tcl_checkSocket=1 ;; -esac +else $as_nop + tcl_checkSocket=1 fi if test "$tcl_checkSocket" = 1; then @@ -9681,28 +9438,22 @@ fi if test "x$ac_cv_func_setsockopt" = xyes then : -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setsockopt in -lsocket" >&5 +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 case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char setsockopt (void); + builtin and then its argument prototype would still apply. */ +char setsockopt (); int main (void) { @@ -9714,26 +9465,22 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_socket_setsockopt=yes -else case e in #( - e) ac_cv_lib_socket_setsockopt=no ;; -esac +else $as_nop + ac_cv_lib_socket_setsockopt=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { 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 case e in #( - e) tcl_checkBoth=1 ;; -esac +else $as_nop + tcl_checkBoth=1 fi - ;; -esac + fi fi @@ -9744,9 +9491,8 @@ fi if test "x$ac_cv_func_accept" = xyes then : tcl_checkNsl=0 -else case e in #( - e) LIBS=$tk_oldLibs ;; -esac +else $as_nop + LIBS=$tk_oldLibs fi fi @@ -9754,28 +9500,22 @@ fi if test "x$ac_cv_func_gethostbyname" = xyes then : -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +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 case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char gethostbyname (void); + builtin and then its argument prototype would still apply. */ +char gethostbyname (); int main (void) { @@ -9787,14 +9527,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_nsl_gethostbyname=yes -else case e in #( - e) ac_cv_lib_nsl_gethostbyname=no ;; -esac +else $as_nop + ac_cv_lib_nsl_gethostbyname=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 printf "%s\n" "$ac_cv_lib_nsl_gethostbyname" >&6; } @@ -9802,8 +9540,7 @@ if test "x$ac_cv_lib_nsl_gethostbyname" = xyes then : LIBS="$LIBS -lnsl" fi - ;; -esac + fi @@ -9919,90 +9656,80 @@ EOF if test ${enable_debug+y} then : enableval=$enable_debug; enable_debug="$enableval" -else case e in #( - e) enable_debug="auto" ;; -esac +else $as_nop + enable_debug="auto" fi # Check whether --enable-debug was given. if test ${enable_debug+y} then : enableval=$enable_debug; enable_debug="$enableval" -else case e in #( - e) enable_debug="auto" ;; -esac +else $as_nop + enable_debug="auto" fi # Check whether --enable-debug-assert was given. if test ${enable_debug_assert+y} then : enableval=$enable_debug_assert; enable_debug_assert="$enableval" -else case e in #( - e) enable_debug_assert="auto" ;; -esac +else $as_nop + enable_debug_assert="auto" fi # Check whether --enable-debug-assert was given. if test ${enable_debug_assert+y} then : enableval=$enable_debug_assert; enable_debug_assert="$enableval" -else case e in #( - e) enable_debug_assert="auto" ;; -esac +else $as_nop + enable_debug_assert="auto" fi # Check whether --enable-debug-mem was given. if test ${enable_debug_mem+y} then : enableval=$enable_debug_mem; enable_debug_mem="$enableval" -else case e in #( - e) enable_debug_mem="auto" ;; -esac +else $as_nop + enable_debug_mem="auto" fi # Check whether --enable-debug-mem was given. if test ${enable_debug_mem+y} then : enableval=$enable_debug_mem; enable_debug_mem="$enableval" -else case e in #( - e) enable_debug_mem="auto" ;; -esac +else $as_nop + enable_debug_mem="auto" fi # Check whether --enable-debug-dns was given. if test ${enable_debug_dns+y} then : enableval=$enable_debug_dns; enable_debug_dns="$enableval" -else case e in #( - e) enable_debug_dns="auto" ;; -esac +else $as_nop + enable_debug_dns="auto" fi # Check whether --enable-debug-dns was given. if test ${enable_debug_dns+y} then : enableval=$enable_debug_dns; enable_debug_dns="$enableval" -else case e in #( - e) enable_debug_dns="auto" ;; -esac +else $as_nop + enable_debug_dns="auto" fi # Check whether --enable-debug-context was given. if test ${enable_debug_context+y} then : enableval=$enable_debug_context; enable_debug_context="$enableval" -else case e in #( - e) enable_debug_context="auto" ;; -esac +else $as_nop + enable_debug_context="auto" fi # Check whether --enable-debug-context was given. if test ${enable_debug_context+y} then : enableval=$enable_debug_context; enable_debug_context="$enableval" -else case e in #( - e) enable_debug_context="auto" ;; -esac +else $as_nop + enable_debug_context="auto" fi @@ -10189,8 +9916,8 @@ printf %s "checking for system IPv6 support... " >&6; } if test ${egg_cv_var_ipv6_supported+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + if test "$cross_compiling" = yes then : @@ -10221,16 +9948,15 @@ then : egg_cv_var_ipv6_supported="yes" -else case e in #( - e) +else $as_nop + egg_cv_var_ipv6_supported="no" - ;; -esac + fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include @@ -10257,19 +9983,16 @@ then : egg_cv_var_ipv6_supported="yes" -else case e in #( - e) +else $as_nop + egg_cv_var_ipv6_supported="no" - ;; -esac + fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac + conftest.$ac_objext conftest.beam conftest.$ac_ext fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $egg_cv_var_ipv6_supported" >&5 printf "%s\n" "$egg_cv_var_ipv6_supported" >&6; } @@ -10280,9 +10003,8 @@ printf "%s\n" "$egg_cv_var_ipv6_supported" >&6; } if test ${enable_ipv6+y} then : enableval=$enable_ipv6; enable_ipv6="$enableval" -else case e in #( - e) enable_ipv6="$egg_cv_var_ipv6_supported" ;; -esac +else $as_nop + enable_ipv6="$egg_cv_var_ipv6_supported" fi # Check whether --enable-ipv6 was given. @@ -10318,9 +10040,8 @@ then : printf "%s\n" "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h egg_cv_var_have_in6_addr="yes" -else case e in #( - e) egg_cv_var_have_in6_addr="no" ;; -esac +else $as_nop + egg_cv_var_have_in6_addr="no" fi if test "$egg_cv_var_have_in6_addr" = "yes"; then @@ -10330,8 +10051,8 @@ printf %s "checking for the in6addr_any constant... " >&6; } if test ${egg_cv_var_have_in6addr_any+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10349,13 +10070,11 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : egg_cv_var_have_in6addr_any="yes" -else case e in #( - e) egg_cv_var_have_in6addr_any="no" ;; -esac +else $as_nop + egg_cv_var_have_in6addr_any="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac + fi { 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; } @@ -10370,8 +10089,8 @@ printf %s "checking for the in6addr_loopback constant... " >&6; } if test ${egg_cv_var_have_in6addr_loopback+y} then : printf %s "(cached) " >&6 -else case e in #( - e) +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -10389,13 +10108,11 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : egg_cv_var_have_in6addr_loopback="yes" -else case e in #( - e) egg_cv_var_have_in6addr_loopback="no" ;; -esac +else $as_nop + egg_cv_var_have_in6addr_loopback="no" fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac + fi { 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; } @@ -10433,9 +10150,8 @@ printf %s "checking whether to enable TLS support... " >&6; } if test ${enable_tls+y} then : enableval=$enable_tls; tls_enabled="$enableval" -else case e in #( - e) tls_enabled="yes" ;; -esac +else $as_nop + tls_enabled="yes" fi @@ -10457,7 +10173,7 @@ then : CPP="$CPP -I$withval" for ac_header in openssl/ssl.h openssl/x509v3.h do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_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 @@ -10469,16 +10185,15 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF sslinc="-I$withval" -else case e in #( - e) +else $as_nop + as_fn_error $? "Invalid path to OpenSSL headers. $withval/openssl/ doesn't contain the required files." "$LINENO" 5 sslinc="" break - ;; -esac + fi done @@ -10506,22 +10221,16 @@ printf %s "checking for X509_digest in -lcrypto... " >&6; } if test ${ac_cv_lib_crypto_X509_digest+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto -L$withval -lssl $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char X509_digest (void); + builtin and then its argument prototype would still apply. */ +char X509_digest (); int main (void) { @@ -10533,14 +10242,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_crypto_X509_digest=yes -else case e in #( - e) ac_cv_lib_crypto_X509_digest=no ;; -esac +else $as_nop + ac_cv_lib_crypto_X509_digest=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { 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; } @@ -10550,9 +10257,8 @@ then : LIBS="-lcrypto $LIBS" -else case e in #( - e) havessllib="no" ;; -esac +else $as_nop + havessllib="no" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 @@ -10560,22 +10266,16 @@ printf %s "checking for SSL_accept in -lssl... " >&6; } if test ${ac_cv_lib_ssl_SSL_accept+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lssl -L$withval -lcrypto $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char SSL_accept (void); + builtin and then its argument prototype would still apply. */ +char SSL_accept (); int main (void) { @@ -10587,14 +10287,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssl_SSL_accept=yes -else case e in #( - e) ac_cv_lib_ssl_SSL_accept=no ;; -esac +else $as_nop + ac_cv_lib_ssl_SSL_accept=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { 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; } @@ -10604,9 +10302,8 @@ then : LIBS="-lssl $LIBS" -else case e in #( - e) havessllib="no" ;; -esac +else $as_nop + havessllib="no" fi if test "$havessllib" = "no"; then @@ -10629,7 +10326,7 @@ fi if test -z "$SSL_INCLUDES"; then for ac_header in openssl/ssl.h openssl/x509v3.h do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_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 @@ -10641,12 +10338,11 @@ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" " if eval test \"x\$"$as_ac_Header"\" = x"yes" then : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 +#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF -else case e in #( - e) havesslinc="no" ;; -esac +else $as_nop + havesslinc="no" fi done @@ -10657,22 +10353,16 @@ printf %s "checking for X509_digest in -lcrypto... " >&6; } if test ${ac_cv_lib_crypto_X509_digest+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lcrypto -lssl $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char X509_digest (void); + builtin and then its argument prototype would still apply. */ +char X509_digest (); int main (void) { @@ -10684,14 +10374,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_crypto_X509_digest=yes -else case e in #( - e) ac_cv_lib_crypto_X509_digest=no ;; -esac +else $as_nop + ac_cv_lib_crypto_X509_digest=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { 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; } @@ -10701,9 +10389,8 @@ then : LIBS="-lcrypto $LIBS" -else case e in #( - e) havessllib="no" ;; -esac +else $as_nop + havessllib="no" fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_accept in -lssl" >&5 @@ -10711,22 +10398,16 @@ printf %s "checking for SSL_accept in -lssl... " >&6; } if test ${ac_cv_lib_ssl_SSL_accept+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lssl -lcrypto $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char SSL_accept (void); + builtin and then its argument prototype would still apply. */ +char SSL_accept (); int main (void) { @@ -10738,14 +10419,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_ssl_SSL_accept=yes -else case e in #( - e) ac_cv_lib_ssl_SSL_accept=no ;; -esac +else $as_nop + ac_cv_lib_ssl_SSL_accept=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { 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; } @@ -10755,28 +10434,26 @@ then : LIBS="-lssl $LIBS" -else case e in #( - e) havessllib="no" ;; -esac +else $as_nop + havessllib="no" fi for ac_func in EVP_sha1 a2i_IPADDRESS do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_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 : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else case e in #( - e) +else $as_nop + havessllib="no" break - ;; -esac + fi done @@ -10792,48 +10469,44 @@ fi if test "x$ac_cv_func_OPENSSL_buf2hexstr" = xyes then : -else case e in #( - e) ac_fn_c_check_func "$LINENO" "hex_to_string" "ac_cv_func_hex_to_string" +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 : printf "%s\n" "#define OPENSSL_buf2hexstr hex_to_string" >>confdefs.h -else case e in #( - e) +else $as_nop + havessllib="no" break - ;; -esac + fi - ;; -esac + fi ac_fn_c_check_func "$LINENO" "OPENSSL_hexstr2buf" "ac_cv_func_OPENSSL_hexstr2buf" if test "x$ac_cv_func_OPENSSL_hexstr2buf" = xyes then : -else case e in #( - e) ac_fn_c_check_func "$LINENO" "string_to_hex" "ac_cv_func_string_to_hex" +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 : printf "%s\n" "#define OPENSSL_hexstr2buf string_to_hex" >>confdefs.h -else case e in #( - e) +else $as_nop + havessllib="no" break - ;; -esac + fi - ;; -esac + fi if test "$havesslinc" = "no"; then @@ -10866,13 +10539,12 @@ printf "%s\n" "yes" >&6; } if test "x$ac_cv_type___int64" = xyes then : -else case e in #( - e) +else $as_nop + printf "%s\n" "#define __int64 long long" >>confdefs.h - ;; -esac + fi fi @@ -10886,12 +10558,11 @@ then : printf "%s\n" "#define egg_ASN1_string_data ASN1_STRING_get0_data" >>confdefs.h -else case e in #( - e) +else $as_nop + printf "%s\n" "#define egg_ASN1_string_data ASN1_STRING_data" >>confdefs.h - ;; -esac + fi ac_fn_c_check_func "$LINENO" "EVP_PKEY_get1_EC_KEY" "ac_cv_func_EVP_PKEY_get1_EC_KEY" @@ -10916,17 +10587,16 @@ then : for ac_func in MD5_Init MD5_Update MD5_Final do : - as_ac_var=`printf "%s\n" "ac_cv_func_$ac_func" | sed "$as_sed_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 : cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_func" | sed "$as_sed_cpp"` 1 +#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF -else case e in #( - e) havesslmd5="no" ;; -esac +else $as_nop + havesslmd5="no" fi done @@ -10952,9 +10622,8 @@ printf "%s\n" "#define HAVE_OPENSSL_MD5 1" >>confdefs.h if test ${enable_tdns+y} then : enableval=$enable_tdns; tdns_enabled="$enableval" -else case e in #( - e) tdns_enabled="yes" ;; -esac +else $as_nop + tdns_enabled="yes" fi if test "x$ax_pthread_ok" = "xno"; then @@ -11029,11 +10698,10 @@ then : EGG_CROSS_COMPILING=yes -else case e in #( - e) +else $as_nop + EGG_CROSS_COMPILING=no - ;; -esac + fi @@ -11051,8 +10719,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF @@ -11082,14 +10750,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote + # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. + # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -11180,6 +10848,7 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -11188,13 +10857,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -11266,7 +10934,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -11295,6 +10963,7 @@ as_fn_error () } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -11334,12 +11003,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -11353,12 +11021,11 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } fi # as_fn_arith @@ -11441,9 +11108,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -11524,12 +11191,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 @@ -11545,7 +11210,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.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -11577,7 +11242,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions +\`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -11614,10 +11279,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop config.status 1.9.5 -configured by $0, generated by GNU Autoconf 2.72, +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2023 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." @@ -11678,8 +11343,8 @@ do ac_need_defaults=false;; --he | --h) # Conflict between --help and --header - as_fn_error $? "ambiguous option: '$1' -Try '$0 --help' for more information.";; + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ @@ -11687,8 +11352,8 @@ Try '$0 --help' for more information.";; ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -11735,7 +11400,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 PACKAGE="$PACKAGE" VERSION="$VERSION" ac_stdint_h="$ac_stdint_h" -_ac_stdint_h=`printf "%s\n" "_$PACKAGE-$ac_stdint_h" | sed "$as_sed_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" @@ -11773,7 +11438,7 @@ do "src/md5/Makefile") CONFIG_FILES="$CONFIG_FILES src/md5/Makefile" ;; "src/mod/Makefile") CONFIG_FILES="$CONFIG_FILES src/mod/Makefile" ;; - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -11793,7 +11458,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. +# after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= @@ -11817,7 +11482,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -11975,13 +11640,13 @@ fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with './config.status Makefile'. +# This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF -# Transform confdefs.h into an awk script 'defines.awk', embedded as +# Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. @@ -12091,7 +11756,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -12113,19 +11778,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. + # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is 'configure' which instantiates (i.e., don't + # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -12253,7 +11918,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when '$srcdir' = '.'. +# Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -12283,9 +11948,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index ab13fc34a..1c23a76d4 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac bc7bc2ee. +# From configure.ac 95f630ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for Eggdrop Compress Module 1.9.5. +# Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # @@ -20,6 +20,7 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -28,13 +29,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,14 +136,15 @@ case $- in # (((( 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'. +# out after a failed `exec'. 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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -151,13 +152,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi " @@ -175,9 +175,8 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac +else \$as_nop + exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -190,15 +189,14 @@ test -x / || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac +else $as_nop + as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 @@ -231,13 +229,12 @@ IFS=$as_save_IFS if $as_found then : -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +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 ;; -esac +fi fi @@ -259,7 +256,7 @@ case $- in # (((( 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'. +# out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -279,8 +276,7 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi ;; -esac +fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -319,6 +315,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 # ------------- @@ -387,12 +391,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -406,14 +409,21 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } 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] # ---------------------------------------- @@ -487,8 +497,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' - t clear - :clear s/[$]LINENO.*/&-/ t lineno b @@ -537,6 +545,7 @@ esac 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 @@ -548,9 +557,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -575,12 +584,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -839,7 +846,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1052,7 +1059,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1068,7 +1075,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1098,8 +1105,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) @@ -1107,7 +1114,7 @@ Try '$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1157,7 +1164,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: '$host' +# There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1225,7 +1232,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1253,7 +1260,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures Eggdrop Compress Module 1.9.5 to adapt to many kinds of systems. +\`configure' configures Eggdrop Compress Module 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1267,11 +1274,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' + -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] + --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1279,10 +1286,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. For better control, use the options below. @@ -1329,7 +1336,7 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory -Use these variables to override the choices made by 'configure' or to help +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 . @@ -1397,9 +1404,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop Compress Module configure 1.9.5 -generated by GNU Autoconf 2.72 +generated by GNU Autoconf 2.71 -Copyright (C) 2023 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. @@ -1440,12 +1447,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1483,12 +1489,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1512,8 +1517,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -1521,12 +1526,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac +else $as_nop + eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1559,7 +1562,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Eggdrop Compress Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1805,10 +1808,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -1844,7 +1847,9 @@ 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 (char **p, int i) +static char *e (p, i) + char **p; + int i; { return p[i]; } @@ -1858,21 +1863,6 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - /* 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 @@ -1900,19 +1890,16 @@ 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? */ +// Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif -// See if C++-style comments work. - #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); -extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -1962,6 +1949,7 @@ 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) @@ -2027,8 +2015,6 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; - // Work around memory leak warnings. - free (ia); // Check named initializers. struct named_init ni = { @@ -2050,7 +2036,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -/* Does the compiler advertise C11 conformance? */ +// Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -2173,12 +2159,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -2187,18 +2173,18 @@ printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -2214,11 +2200,11 @@ printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -2263,8 +2249,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then +else $as_nop + if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2286,8 +2272,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2313,8 +2298,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then +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 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2336,8 +2321,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -2366,10 +2350,10 @@ esac fi -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;} +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; } +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -2441,8 +2425,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 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' + # 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, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -2462,7 +2446,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' + # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -2473,9 +2457,8 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else case e in #( - e) ac_file='' ;; -esac +else $as_nop + ac_file='' fi if test -z "$ac_file" then : @@ -2484,14 +2467,13 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } +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; } @@ -2515,10 +2497,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 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 -# 'rm'. + # 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 +# `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -2528,12 +2510,11 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$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; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -2549,8 +2530,6 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; return ferror (f) || fclose (f) != 0; ; @@ -2590,27 +2569,26 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { 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: 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; } +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } fi fi fi { 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.o conftest.obj conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2642,18 +2620,16 @@ then : break;; esac done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -2664,8 +2640,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2682,14 +2658,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac +else $as_nop + ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -2707,8 +2681,8 @@ printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -2726,8 +2700,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" +else $as_nop + CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2742,8 +2716,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2760,15 +2734,12 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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 ;; -esac +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 - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac + ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -2795,8 +2766,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c11=no +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2813,28 +2784,25 @@ 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 ;; -esac +CC=$ac_save_CC fi 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 case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac + ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno @@ -2844,8 +2812,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c99=no +else $as_nop + ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2862,28 +2830,25 @@ 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 ;; -esac +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 case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac + ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno @@ -2893,8 +2858,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c89=no +else $as_nop + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2911,28 +2876,25 @@ 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 ;; -esac +CC=$ac_save_CC fi 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 case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac + ac_prog_cc_stdc=c89 fi fi @@ -2950,22 +2912,16 @@ printf %s "checking for gzopen in -lz... " >&6; } if test ${ac_cv_lib_z_gzopen+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS +else $as_nop + ac_check_lib_save_LIBS=$LIBS LIBS="-lz $LIBS" 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. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char gzopen (void); + builtin and then its argument prototype would still apply. */ +char gzopen (); int main (void) { @@ -2977,14 +2933,12 @@ _ACEOF if ac_fn_c_try_link "$LINENO" then : ac_cv_lib_z_gzopen=yes -else case e in #( - e) ac_cv_lib_z_gzopen=no ;; -esac +else $as_nop + ac_cv_lib_z_gzopen=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac +LIBS=$ac_check_lib_save_LIBS fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzopen" >&5 printf "%s\n" "$ac_cv_lib_z_gzopen" >&6; } @@ -3070,8 +3024,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF @@ -3101,14 +3055,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote + # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. + # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -3172,7 +3126,9 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g s/\$/$$/g H :any @@ -3232,6 +3188,7 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -3240,13 +3197,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -3318,7 +3274,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -3347,6 +3303,7 @@ as_fn_error () } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -3386,12 +3343,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -3405,12 +3361,11 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } fi # as_fn_arith @@ -3493,9 +3448,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -3576,12 +3531,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 @@ -3597,7 +3550,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop Compress Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -3624,7 +3577,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions +\`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -3652,10 +3605,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop Compress Module config.status 1.9.5 -configured by $0, generated by GNU Autoconf 2.72, +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2023 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." @@ -3712,8 +3665,8 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -3763,7 +3716,7 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -3781,7 +3734,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. +# after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= @@ -3805,7 +3758,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -3971,7 +3924,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -3993,19 +3946,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. + # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is 'configure' which instantiates (i.e., don't + # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -4129,7 +4082,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when '$srcdir' = '.'. +# Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -4158,9 +4111,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 283b1bb1b..6f348a637 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac bc7bc2ee. +# From configure.ac 95f630ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for Eggdrop DNS Module 1.9.5. +# Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # @@ -20,6 +20,7 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -28,13 +29,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,14 +136,15 @@ case $- in # (((( 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'. +# out after a failed `exec'. 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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -151,13 +152,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi " @@ -175,9 +175,8 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac +else \$as_nop + exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -190,15 +189,14 @@ test -x / || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac +else $as_nop + as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 @@ -231,13 +229,12 @@ IFS=$as_save_IFS if $as_found then : -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +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 ;; -esac +fi fi @@ -259,7 +256,7 @@ case $- in # (((( 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'. +# out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -279,8 +276,7 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi ;; -esac +fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -319,6 +315,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 # ------------- @@ -387,12 +391,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -406,14 +409,21 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } 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] # ---------------------------------------- @@ -487,8 +497,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' - t clear - :clear s/[$]LINENO.*/&-/ t lineno b @@ -537,6 +545,7 @@ esac 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 @@ -548,9 +557,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -575,12 +584,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -808,7 +815,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1021,7 +1028,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1037,7 +1044,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1067,8 +1074,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) @@ -1076,7 +1083,7 @@ Try '$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1126,7 +1133,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: '$host' +# There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1194,7 +1201,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1222,7 +1229,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures Eggdrop DNS Module 1.9.5 to adapt to many kinds of systems. +\`configure' configures Eggdrop DNS Module 1.9.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1236,11 +1243,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' + -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] + --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1248,10 +1255,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. For better control, use the options below. @@ -1298,7 +1305,7 @@ Some influential environment variables: CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory -Use these variables to override the choices made by 'configure' or to help +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 . @@ -1366,9 +1373,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop DNS Module configure 1.9.5 -generated by GNU Autoconf 2.72 +generated by GNU Autoconf 2.71 -Copyright (C) 2023 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. @@ -1409,12 +1416,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } && test -s conftest.$ac_objext then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval @@ -1433,8 +1439,8 @@ printf %s "checking for $2... " >&6; } if eval test \${$3+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> @@ -1442,12 +1448,10 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac +else $as_nop + eval "$3=no" fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi eval ac_res=\$$3 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 @@ -1487,12 +1491,11 @@ printf "%s\n" "$ac_try_echo"; } >&5 } then : ac_retval=0 -else case e in #( - e) printf "%s\n" "$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 ;; -esac + ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would @@ -1528,7 +1531,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Eggdrop DNS Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1774,10 +1777,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -1813,7 +1816,9 @@ 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 (char **p, int i) +static char *e (p, i) + char **p; + int i; { return p[i]; } @@ -1827,21 +1832,6 @@ static char *f (char * (*g) (char **, int), char **p, ...) return s; } -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - /* 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 @@ -1869,19 +1859,16 @@ 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? */ +// Does the compiler advertise C99 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L # error "Compiler does not advertise C99 conformance" #endif -// See if C++-style comments work. - #include extern int puts (const char *); extern int printf (const char *, ...); extern int dprintf (int, const char *, ...); extern void *malloc (size_t); -extern void free (void *); // Check varargs macros. These examples are taken from C99 6.10.3.5. // dprintf is used instead of fprintf to avoid needing to declare @@ -1931,6 +1918,7 @@ 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) @@ -1996,8 +1984,6 @@ ac_c_conftest_c99_main=' ia->datasize = 10; for (int i = 0; i < ia->datasize; ++i) ia->data[i] = i * 1.234; - // Work around memory leak warnings. - free (ia); // Check named initializers. struct named_init ni = { @@ -2019,7 +2005,7 @@ ac_c_conftest_c99_main=' # Test code for whether the C compiler supports C11 (global declarations) ac_c_conftest_c11_globals=' -/* Does the compiler advertise C11 conformance? */ +// Does the compiler advertise C11 conformance? #if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L # error "Compiler does not advertise C11 conformance" #endif @@ -2133,12 +2119,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -2147,18 +2133,18 @@ printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -2174,11 +2160,11 @@ printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -2223,8 +2209,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then +else $as_nop + if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2246,8 +2232,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then @@ -2273,8 +2258,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CC+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then +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 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2296,8 +2281,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then @@ -2326,10 +2310,10 @@ esac fi -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;} +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; } +See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 @@ -2401,8 +2385,8 @@ printf "%s\n" "$ac_try_echo"; } >&5 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' + # 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, # so that the user can short-circuit this test for compilers unknown to # Autoconf. @@ -2422,7 +2406,7 @@ do ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' + # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. @@ -2433,9 +2417,8 @@ do done test "$ac_cv_exeext" = no && ac_cv_exeext= -else case e in #( - e) ac_file='' ;; -esac +else $as_nop + ac_file='' fi if test -z "$ac_file" then : @@ -2444,14 +2427,13 @@ printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } +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; } @@ -2475,10 +2457,10 @@ printf "%s\n" "$ac_try_echo"; } >&5 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 -# 'rm'. + # 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 +# `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in @@ -2488,12 +2470,11 @@ for ac_file in conftest.exe conftest conftest.*; do * ) break;; esac done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$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; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 @@ -2509,8 +2490,6 @@ int main (void) { FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; return ferror (f) || fclose (f) != 0; ; @@ -2550,27 +2529,26 @@ printf "%s\n" "$ac_try_echo"; } >&5 if test "$cross_compiling" = maybe; then cross_compiling=yes else - { { 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: 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; } +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } fi fi fi { 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.o conftest.obj conftest.out +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { 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 case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2602,18 +2580,16 @@ then : break;; esac done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 +else $as_nop + printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 -{ { 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: 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; } ;; -esac +See \`config.log' for more details" "$LINENO" 5; } fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } @@ -2624,8 +2600,8 @@ printf %s "checking whether the compiler supports GNU C... " >&6; } if test ${ac_cv_c_compiler_gnu+y} then : printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +else $as_nop + cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int @@ -2642,14 +2618,12 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac +else $as_nop + ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } @@ -2667,8 +2641,8 @@ printf %s "checking whether $CC accepts -g... " >&6; } if test ${ac_cv_prog_cc_g+y} then : printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag +else $as_nop + ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" @@ -2686,8 +2660,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" +else $as_nop + CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2702,8 +2676,8 @@ _ACEOF if ac_fn_c_try_compile "$LINENO" then : -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag +else $as_nop + ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2720,15 +2694,12 @@ if ac_fn_c_try_compile "$LINENO" then : ac_cv_prog_cc_g=yes fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac +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 ;; -esac +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 - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac + ac_c_werror_flag=$ac_save_c_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 printf "%s\n" "$ac_cv_prog_cc_g" >&6; } @@ -2755,8 +2726,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c11=no +else $as_nop + ac_cv_prog_cc_c11=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2773,28 +2744,25 @@ 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 ;; -esac +CC=$ac_save_CC fi 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 case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c11" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac + ac_prog_cc_stdc=c11 fi fi if test x$ac_prog_cc_stdc = xno @@ -2804,8 +2772,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c99=no +else $as_nop + ac_cv_prog_cc_c99=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2822,28 +2790,25 @@ 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 ;; -esac +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 case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c99" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac + ac_prog_cc_stdc=c99 fi fi if test x$ac_prog_cc_stdc = xno @@ -2853,8 +2818,8 @@ 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 case e in #( - e) ac_cv_prog_cc_c89=no +else $as_nop + ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -2871,28 +2836,25 @@ 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 ;; -esac +CC=$ac_save_CC fi 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 case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x +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 case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +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" ;; -esac + CC="$CC $ac_cv_prog_cc_c89" fi ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac + ac_prog_cc_stdc=c89 fi fi @@ -3100,8 +3062,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF @@ -3131,14 +3093,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote + # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. + # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -3202,7 +3164,9 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g s/\$/$$/g H :any @@ -3262,6 +3226,7 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -3270,13 +3235,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -3348,7 +3312,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -3377,6 +3341,7 @@ as_fn_error () } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -3416,12 +3381,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -3435,12 +3399,11 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } fi # as_fn_arith @@ -3523,9 +3486,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -3606,12 +3569,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 @@ -3627,7 +3588,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop DNS Module $as_me 1.9.5, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -3654,7 +3615,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions +\`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -3682,10 +3643,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop DNS Module config.status 1.9.5 -configured by $0, generated by GNU Autoconf 2.72, +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2023 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." @@ -3742,8 +3703,8 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -3793,7 +3754,7 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -3811,7 +3772,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. +# after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= @@ -3835,7 +3796,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -4001,7 +3962,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -4023,19 +3984,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. + # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is 'configure' which instantiates (i.e., don't + # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -4159,7 +4120,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when '$srcdir' = '.'. +# Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -4188,9 +4149,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index 34cf355ad..f5bb2e5c7 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,12 +1,12 @@ #! /bin/sh -# From configure.ac bc7bc2ee. +# From configure.ac 95f630ee. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72 for Eggdrop Python Module 1.10.0. +# Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. # # Report bugs to . # # -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, +# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # @@ -20,6 +20,7 @@ # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -28,13 +29,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -106,7 +106,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -136,14 +136,15 @@ case $- in # (((( 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'. +# out after a failed `exec'. 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 \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 + as_bourne_compatible="as_nop=: +if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: @@ -151,13 +152,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( +else \$as_nop + case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi " @@ -175,9 +175,8 @@ as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac +else \$as_nop + exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) @@ -191,15 +190,14 @@ test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac +else $as_nop + as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +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 @@ -232,13 +230,12 @@ IFS=$as_save_IFS if $as_found then : -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +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 ;; -esac +fi fi @@ -260,7 +257,7 @@ case $- in # (((( 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'. +# out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi @@ -280,8 +277,7 @@ $0: manually run the script under such a shell if you do $0: have one." fi exit 1 -fi ;; -esac +fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} @@ -320,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 # ------------- @@ -388,12 +392,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -407,14 +410,21 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } 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] # ---------------------------------------- @@ -488,8 +498,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits /[$]LINENO/= ' <$as_myself | sed ' - t clear - :clear s/[$]LINENO.*/&-/ t lineno b @@ -538,6 +546,7 @@ esac 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 @@ -549,9 +558,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -576,12 +585,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 /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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -807,7 +814,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1020,7 +1027,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1036,7 +1043,7 @@ 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=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in @@ -1066,8 +1073,8 @@ do | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" ;; *=*) @@ -1075,7 +1082,7 @@ Try '$0 --help' for more information" # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; @@ -1125,7 +1132,7 @@ do as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done -# There might be people who depend on the old broken behavior: '$host' +# There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias @@ -1193,7 +1200,7 @@ if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` @@ -1221,7 +1228,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -'configure' configures Eggdrop Python Module 1.10.0 to adapt to many kinds of systems. +\`configure' configures Eggdrop Python Module 1.10.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1235,11 +1242,11 @@ Configuration: --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages + -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' + -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] + --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX @@ -1247,10 +1254,10 @@ Installation directories: --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. For better control, use the options below. @@ -1299,7 +1306,7 @@ Some influential environment variables: string will be appended to the Python interpreter canonical name. -Use these variables to override the choices made by 'configure' or to help +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 . @@ -1367,9 +1374,9 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF Eggdrop Python Module configure 1.10.0 -generated by GNU Autoconf 2.72 +generated by GNU Autoconf 2.71 -Copyright (C) 2023 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. @@ -1406,7 +1413,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by Eggdrop Python Module $as_me 1.10.0, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -1652,10 +1659,10 @@ esac printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ - || { { 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: 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; } +See \`config.log' for more details" "$LINENO" 5; } fi done @@ -1686,12 +1693,12 @@ for ac_var in $ac_precious_vars; do 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;} + { 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;} + { 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=: ;; ,);; *) @@ -1700,18 +1707,18 @@ printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} 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;} + { 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;} + { 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;} + { 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. @@ -1727,11 +1734,11 @@ printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} 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: 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' + as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## @@ -1757,8 +1764,8 @@ 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 case e in #( - e) if test -z "$GREP"; then +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 @@ -1777,10 +1784,9 @@ do 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 #( +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" @@ -1815,8 +1821,7 @@ IFS=$as_save_IFS else ac_cv_path_GREP=$GREP fi - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 printf "%s\n" "$ac_cv_path_GREP" >&6; } @@ -1828,8 +1833,8 @@ printf %s "checking for fgrep... " >&6; } if test ${ac_cv_path_FGREP+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 +else $as_nop + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then @@ -1851,10 +1856,9 @@ do as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in #( +case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -#( *) ac_count=0 printf %s 0123456789 >"conftest.in" @@ -1890,8 +1894,7 @@ else ac_cv_path_FGREP=$FGREP fi - fi ;; -esac + fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 printf "%s\n" "$ac_cv_path_FGREP" >&6; } @@ -1930,8 +1933,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_python_config_bin+y} then : printf %s "(cached) " >&6 -else case e in #( - e) case $python_config_bin in +else $as_nop + case $python_config_bin in [\\/]* | ?:[\\/]*) ac_cv_path_python_config_bin="$python_config_bin" # Let the user override the test with a path. ;; @@ -1956,7 +1959,6 @@ done IFS=$as_save_IFS ;; -esac ;; esac fi python_config_bin=$ac_cv_path_python_config_bin @@ -1985,8 +1987,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_python_config_bin+y} then : printf %s "(cached) " >&6 -else case e in #( - e) case $python_config_bin in +else $as_nop + case $python_config_bin in [\\/]* | ?:[\\/]*) ac_cv_path_python_config_bin="$python_config_bin" # Let the user override the test with a path. ;; @@ -2011,7 +2013,6 @@ done IFS=$as_save_IFS ;; -esac ;; esac fi python_config_bin=$ac_cv_path_python_config_bin @@ -2052,14 +2053,13 @@ then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } -else case e in #( - e) +else $as_nop + PYTHON_CONFIG_ARGS="" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } - ;; -esac + fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for python C flags" >&5 @@ -2088,8 +2088,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_path_PYTHON+y} then : printf %s "(cached) " >&6 -else case e in #( - e) case $PYTHON in +else $as_nop + case $PYTHON in [\\/]* | ?:[\\/]*) ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. ;; @@ -2114,7 +2114,6 @@ done IFS=$as_save_IFS ;; -esac ;; esac fi PYTHON=$ac_cv_path_PYTHON @@ -2149,8 +2148,8 @@ printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$AWK"; then +else $as_nop + if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -2172,8 +2171,7 @@ done done IFS=$as_save_IFS -fi ;; -esac +fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then @@ -2265,8 +2263,8 @@ cat >confcache <<\_ACEOF # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF @@ -2296,14 +2294,14 @@ printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote + # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. + # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | @@ -2367,7 +2365,9 @@ s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote -s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\[/\\&/g +s/\]/\\&/g s/\$/$$/g H :any @@ -2427,6 +2427,7 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh +as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh @@ -2435,13 +2436,12 @@ then : # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( +else $as_nop + case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; -esac ;; esac fi @@ -2513,7 +2513,7 @@ IFS=$as_save_IFS ;; esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' +# We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 @@ -2542,6 +2542,7 @@ as_fn_error () } # as_fn_error + # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. @@ -2581,12 +2582,11 @@ then : { eval $1+=\$2 }' -else case e in #( - e) as_fn_append () +else $as_nop + as_fn_append () { eval $1=\$$1\$2 - } ;; -esac + } fi # as_fn_append # as_fn_arith ARG... @@ -2600,12 +2600,11 @@ then : { as_val=$(( $* )) }' -else case e in #( - e) as_fn_arith () +else $as_nop + as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` - } ;; -esac + } fi # as_fn_arith @@ -2688,9 +2687,9 @@ if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then @@ -2771,12 +2770,10 @@ as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 @@ -2792,7 +2789,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # values after options handling. ac_log=" This file was extended by Eggdrop Python Module $as_me 1.10.0, which was -generated by GNU Autoconf 2.72. Invocation command line was +generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -2819,7 +2816,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions +\`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. @@ -2847,10 +2844,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ Eggdrop Python Module config.status 1.10.0 -configured by $0, generated by GNU Autoconf 2.72, +configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" -Copyright (C) 2023 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." @@ -2908,8 +2905,8 @@ do ac_cs_silent=: ;; # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; @@ -2959,7 +2956,7 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done @@ -2977,7 +2974,7 @@ fi # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. +# after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= @@ -3001,7 +2998,7 @@ ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. +# This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then @@ -3167,7 +3164,7 @@ do esac case $ac_mode$ac_tag in :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac @@ -3189,19 +3186,19 @@ do -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. + # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; 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 - # Let's still pretend it is 'configure' which instantiates (i.e., don't + # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` @@ -3325,7 +3322,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 esac _ACEOF -# Neutralize VPATH when '$srcdir' = '.'. +# Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 @@ -3354,9 +3351,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"; } && - { printf "%s\n" "$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 -printf "%s\n" "$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" From 4c421166aac2ca4d35cc1942c55c34713433e55b Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sun, 16 Jun 2024 21:56:18 +0200 Subject: [PATCH 297/320] CI: Dependency check cannot depend on other workflow --- .github/workflows/dependencies.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index ae9dfcfa1..d76a5e6c7 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -9,7 +9,6 @@ on: jobs: tcl-versions: name: Tcl Versions - needs: default-build strategy: matrix: tcl_version: [ '8.5.19', '8.6.14', '8.7a5', '9.0b2' ] @@ -30,7 +29,6 @@ jobs: run: ./configure --with-tcl=$HOME/tcl/lib && LD_LIBRARY_PATH=$HOME/tcl/lib make config eggdrop ssl-version-10: name: OpenSSL 1.0 - needs: default-build continue-on-error: true runs-on: ubuntu-latest steps: @@ -47,7 +45,6 @@ jobs: 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 - needs: default-build continue-on-error: true runs-on: ubuntu-latest steps: @@ -68,7 +65,6 @@ jobs: 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 - needs: default-build strategy: matrix: ssl_version: [ '3.0', '3.1', '3.2', '3.3' ] From 2fa304210a86b69651d287260456f54181cd1eea Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 29 Jun 2024 11:54:55 -0400 Subject: [PATCH 298/320] add lookup_user_record() (#1618) Found by: Mystery-X Patch by: Geo, thommey It was discovered after the latest rewrite lookup up user records based on account that there are situations where m might not be known, and m being NULL can cause a crash if not properly checked. This creates a wrapper function to a) check which lookup to use based on the provided input, b) fallback to a different lookup in case something returns NULL. --- src/cmds.c | 5 ++-- src/mod/irc.mod/chan.c | 46 +++++++----------------------- src/mod/irc.mod/cmdsirc.c | 1 - src/mod/irc.mod/irc.c | 14 ++++++---- src/mod/irc.mod/mode.c | 4 +-- src/mod/irc.mod/msgcmds.c | 6 ++-- src/mod/module.h | 3 +- src/mod/server.mod/servmsg.c | 12 ++++---- src/modules.c | 3 +- src/userrec.c | 54 ++++++++++++++++++++++++++++++++++++ src/users.c | 2 -- src/users.h | 2 ++ 12 files changed, 93 insertions(+), 59 deletions(-) diff --git a/src/cmds.c b/src/cmds.c index e1730507a..507c69687 100644 --- a/src/cmds.c +++ b/src/cmds.c @@ -1908,11 +1908,11 @@ static int add_to_handle(struct userrec *u, int idx, char *handle, char *host, i } } if ( !type && !glob_botmast(fr) && !chan_master(fr) && get_user_by_host(host)) { - dprintf(idx, "You cannot add %s matching another user!\n", - type ? "an account" : "a host"); + dprintf(idx, "You cannot add a host matching another user!\n"); return 1; } if (type) { + // host-variable contains account u2 = get_user_by_account(host); if (u2) { dprintf(idx, "That account already exists for user %s\n", u2->handle); @@ -1920,6 +1920,7 @@ static int add_to_handle(struct userrec *u, int idx, char *handle, char *host, i } addaccount_by_handle(handle, host); } else { + // host for (q = get_user(&USERENTRY_HOSTS, u); q; q = q->next) { if (!strcasecmp(q->extra, host)) { dprintf(idx, "That %s is already there.\n", diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index f0cb827d7..9124d428c 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -240,15 +240,7 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, if (!m && (which != FLOOD_JOIN)) return 0; - if (m) { - u = get_user_from_member(m); - } else { - u = victim_or_account ? get_user_by_account(victim_or_account) : NULL; - if (!u) { - u = get_user_by_host(from); - } - } - + u = lookup_user_record(m, victim_or_account, from); get_user_flagrec(u, &fr, chan->dname); if (glob_bot(fr) || ((which == FLOOD_DEOP) && (glob_master(fr) || chan_master(fr)) && (glob_friend(fr) || chan_friend(fr))) || @@ -333,7 +325,6 @@ static int detect_chan_flood(char *floodnick, char *floodhost, char *from, chan->floodwho[which][0] = 0; if (which == FLOOD_DEOP) chan->deopd[0] = 0; - u = get_user_from_member(m); if (check_tcl_flud(floodnick, floodhost, u, ftype, chan->dname)) return 0; switch (which) { @@ -1843,7 +1834,7 @@ static int gottopic(char *from, char *msg) if (m != NULL) m->last = now; set_topic(chan, msg); - u = get_user_from_member(m); + u = lookup_user_record(m, NULL, from); // TODO: get account from msgtags check_tcl_topc(nick, from, u, chan->dname, msg); } return 0; @@ -2079,9 +2070,8 @@ static int gotjoin(char *from, char *channame) strlcpy(m->userhost, uhost, sizeof m->userhost); m->flags |= STOPWHO; - u = get_user_from_member(m); - if (extjoin) { + u = lookup_user_record(m, account, from); /* calls check_tcl_account which can delete the channel */ setaccount(nick, account); @@ -2089,6 +2079,8 @@ static int gotjoin(char *from, char *channame) /* The channel doesn't exist anymore, so get out of here. */ goto exit; } + } else { + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags } check_tcl_join(nick, uhost, u, chan->dname); @@ -2129,9 +2121,9 @@ static int gotjoin(char *from, char *channame) if (u) { struct laston_info *li = 0; - cr = get_chanrec(get_user_from_member(m), chan->dname); + cr = get_chanrec(u, chan->dname); if (!cr && no_chanrec_info) - li = get_user(&USERENTRY_LASTON, get_user_from_member(m)); + li = get_user(&USERENTRY_LASTON, u); if (channel_greet(chan) && use_info && ((cr && now - cr->laston > wait_info) || (no_chanrec_info && (!li || now - li->laston > wait_info)))) { @@ -2353,7 +2345,7 @@ static int gotkick(char *from, char *origmsg) return 0; m = ismember(chan, whodid); - u = get_user_from_member(m); + u = lookup_user_record(m, NULL, from); // TODO: get account from msgtags if (m) m->last = now; /* This _needs_ to use chan->dname */ @@ -2569,7 +2561,6 @@ static int gotmsg(char *from, char *msg) int ctcp_count = 0, ignoring; struct chanset_t *chan; struct userrec *u; - memberlist *m; /* Only handle if message is to a channel, or to @#channel. */ /* FIXME: Properly handle ovNotices (@+#channel), vNotices (+#channel), etc. */ @@ -2613,15 +2604,7 @@ static int gotmsg(char *from, char *msg) ctcp_count++; if (ctcp[0] != ' ') { code = newsplit(&ctcp); - u = NULL; - for (chan = chanset; chan; chan = chan->next) { - for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - if (!rfc_casecmp(m->nick, nick)) { - u = get_user_from_member(m); - break; - } - } - } + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags if (!ignoring || trigger_on_ignore) { if (!check_tcl_ctcp(nick, uhost, u, to, code, ctcp)) { chan = findchan(realto); @@ -2700,7 +2683,6 @@ static int gotnotice(char *from, char *msg) char *ctcp, *code; struct userrec *u; struct chanset_t *chan; - memberlist *m; int ignoring; if (!strchr(CHANMETA "@", *msg)) @@ -2714,15 +2696,7 @@ static int gotnotice(char *from, char *msg) fixcolon(msg); strlcpy(uhost, from, sizeof buf); nick = splitnick(&uhost); - u = NULL; - for (chan = chanset; chan; chan = chan->next) { - for (m = chan->channel.member; m && m->nick[0]; m = m->next) { - if (!rfc_casecmp(m->nick, nick)) { - u = get_user_from_member(m); - break; - } - } - } + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags /* Check for CTCP: */ p = strchr(msg, 1); while (p && *p) { diff --git a/src/mod/irc.mod/cmdsirc.c b/src/mod/irc.mod/cmdsirc.c index 3b387c8f6..c9bf58ab1 100644 --- a/src/mod/irc.mod/cmdsirc.c +++ b/src/mod/irc.mod/cmdsirc.c @@ -751,7 +751,6 @@ static void cmd_channel(struct userrec *u, int idx, char *par) } else strlcpy(s, " --- ", sizeof s); egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); - u = get_user_from_member(m); if (u == NULL) strlcpy(handle, "*", sizeof handle); diff --git a/src/mod/irc.mod/irc.c b/src/mod/irc.mod/irc.c index dc03c7f24..bc3f578e4 100644 --- a/src/mod/irc.mod/irc.c +++ b/src/mod/irc.mod/irc.c @@ -224,7 +224,7 @@ static void punish_badguy(struct chanset_t *chan, char *whobad, static void maybe_revenge(struct chanset_t *chan, char *whobad, char *whovictim, int type) { - char *badnick, *victim; + char *badnick, *victim, buf[NICKLEN + UHOSTLEN]; int mevictim; struct userrec *u, *u2; memberlist *m; @@ -233,14 +233,16 @@ static void maybe_revenge(struct chanset_t *chan, char *whobad, return; /* Get info about offender */ + strlcpy(buf, whobad, sizeof buf); badnick = splitnick(&whobad); m = ismember(chan, badnick); - u = get_user_from_member(m); + u = lookup_user_record(m, NULL, buf); // TODO: get account from msgtags /* Get info about victim */ + strlcpy(buf, whovictim, sizeof buf); victim = splitnick(&whovictim); m = ismember(chan, victim); - u2 = get_user_from_member(m); + u2 = lookup_user_record(m, NULL, buf); // TODO: get account from msgtags mevictim = match_my_nick(victim); /* Do we want to revenge? */ @@ -908,7 +910,7 @@ static int check_tcl_pub(char *nick, char *from, char *chname, char *msg) int x; char buf[512], *args = buf, *cmd, host[161], *hand; struct chanset_t *chan; - struct userrec *u; + struct userrec *u = NULL; memberlist *m; strlcpy(buf, msg, sizeof buf); @@ -916,7 +918,7 @@ static int check_tcl_pub(char *nick, char *from, char *chname, char *msg) simple_sprintf(host, "%s!%s", nick, from); chan = findchan(chname); m = ismember(chan, nick); - u = get_user_from_member(m); + u = lookup_user_record(m ? m : find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags hand = u ? u->handle : "*"; get_user_flagrec(u, &fr, chname); Tcl_SetVar(interp, "_pub1", nick, 0); @@ -946,7 +948,7 @@ static int check_tcl_pubm(char *nick, char *from, char *chname, char *msg) simple_sprintf(host, "%s!%s", nick, from); chan = findchan(chname); m = ismember(chan, nick); - u = get_user_from_member(m); + u = lookup_user_record(m ? m : find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags get_user_flagrec(u, &fr, chname); Tcl_SetVar(interp, "_pubm1", nick, 0); Tcl_SetVar(interp, "_pubm2", from, 0); diff --git a/src/mod/irc.mod/mode.c b/src/mod/irc.mod/mode.c index 88814d3bf..5350fafd7 100644 --- a/src/mod/irc.mod/mode.c +++ b/src/mod/irc.mod/mode.c @@ -52,11 +52,11 @@ static struct chanset_t *modebind_refresh(char *chname, if (!chname || !(chan = findchan(chname))) return NULL; if (usrhost) { - u = get_user_by_host(usrhost); + u = lookup_user_record(NULL, NULL, usrhost); // TODO: get account from somewhere get_user_flagrec(u, usr, chan->dname); } if (vcrhost) { - u = get_user_by_host(vcrhost); + u = lookup_user_record(NULL, NULL, vcrhost); // TODO: get account from somewhere get_user_flagrec(u, vcr, chan->dname); } return chan; diff --git a/src/mod/irc.mod/msgcmds.c b/src/mod/irc.mod/msgcmds.c index 282687425..1c8a45f6b 100644 --- a/src/mod/irc.mod/msgcmds.c +++ b/src/mod/irc.mod/msgcmds.c @@ -383,6 +383,7 @@ static int msg_who(char *nick, char *host, struct userrec *u, char *par) struct userrec *u; egg_snprintf(s, sizeof s, "%s!%s", m->nick, m->userhost); + /* Don't use s for host here, b/c if we don't have m, we won't have s */ u = get_user_from_member(m); info = get_user(&USERENTRY_INFO, u); if (u && (u->flags & USER_BOT)) @@ -431,7 +432,7 @@ static int msg_who(char *nick, char *host, struct userrec *u, char *par) static int msg_whois(char *nick, char *host, struct userrec *u, char *par) { - char s1[143], *s2, stime[14]; + char s1[143], *s2, stime[14], uhost[NICKLEN + UHOSTLEN]; int ok; struct chanset_t *chan; memberlist *m; @@ -454,7 +455,8 @@ static int msg_whois(char *nick, char *host, struct userrec *u, char *par) } if (strlen(par) > NICKMAX) par[NICKMAX] = 0; - putlog(LOG_CMDS, "*", "(%s!%s) !%s! WHOIS %s", nick, host, u->handle, par); + egg_snprintf(uhost, sizeof uhost, "%s!%s", nick, host); + putlog(LOG_CMDS, "*", "(%s) !%s! WHOIS %s", uhost, u->handle, par); u2 = get_user_by_handle(userlist, par); if (!u2) { /* No such handle -- maybe it's a nickname of someone on a chan? */ diff --git a/src/mod/module.h b/src/mod/module.h index da1651c0a..488664322 100644 --- a/src/mod/module.h +++ b/src/mod/module.h @@ -524,8 +524,9 @@ typedef void (*chanout_butfunc)(int, int, const char *, ...) ATTRIBUTE_FORMAT(pr #define bind_bind_entry ((int(*)(tcl_bind_list_t *, const char *, const char *, const char *))global[320]) #define unbind_bind_entry ((int(*)(tcl_bind_list_t *, const char *, const char *, const char *))global[321]) #define argv0 ((char *)global[322]) -#define get_user_from_member ((struct userrec * (*)(memberlist *))global[323]) +#define lookup_user_record ((struct userrec * (*)(memberlist *, char *, char *))global[323]) /* 324 - 327 */ +#define find_member_from_nick ((memberlist * (*) (char *))global[324]) /* hostmasking */ diff --git a/src/mod/server.mod/servmsg.c b/src/mod/server.mod/servmsg.c index 952ff70bf..91a50e2e9 100644 --- a/src/mod/server.mod/servmsg.c +++ b/src/mod/server.mod/servmsg.c @@ -493,7 +493,7 @@ static int detect_flood(char *floodnick, char *floodhost, char *from, int which) if (!strcasecmp(floodhost, botuserhost)) return 0; - u = get_user_by_host(from); + u = lookup_user_record(NULL, NULL, from); // TODO: get account somehow atr = u ? u->flags : 0; if (atr & (USER_BOT | USER_FRIEND)) return 0; @@ -539,7 +539,7 @@ static int detect_flood(char *floodnick, char *floodhost, char *from, int which) lastmsgs[which] = 0; lastmsgtime[which] = 0; lastmsghost[which][0] = 0; - u = get_user_by_host(from); + u = lookup_user_record(NULL, NULL, from); // TODO: get account somehow if (check_tcl_flud(floodnick, floodhost, u, ftype, "*")) return 0; /* Private msg */ @@ -607,7 +607,7 @@ static int gotmsg(char *from, char *msg) putlog(LOG_PUBLIC, to, "CTCP %s: %s from %s (%s) to %s", code, ctcp, nick, uhost, to); } else { - u = get_user_by_host(from); + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags if (!ignoring || trigger_on_ignore) { if (!check_tcl_ctcp(nick, uhost, u, to, code, ctcp) && !ignoring) { if ((lowercase_ctcp && !strcasecmp(code, "DCC")) || @@ -670,7 +670,7 @@ static int gotmsg(char *from, char *msg) } detect_flood(nick, uhost, from, FLOOD_PRIVMSG); - u = get_user_by_host(from); + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags code = newsplit(&msg); rmspace(msg); @@ -730,7 +730,7 @@ static int gotnotice(char *from, char *msg) "CTCP reply %s: %s from %s (%s) to %s", code, ctcp, nick, uhost, to); } else { - u = get_user_by_host(from); + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags if (!ignoring || trigger_on_ignore) { check_tcl_ctcr(nick, uhost, u, to, code, ctcp); if (!ignoring) @@ -766,7 +766,7 @@ static int gotnotice(char *from, char *msg) } detect_flood(nick, uhost, from, FLOOD_NOTICE); - u = get_user_by_host(from); + u = lookup_user_record(find_member_from_nick(nick), NULL, from); // TODO: get account from msgtags if (!ignoring || trigger_on_ignore) if (check_tcl_notc(nick, uhost, u, botname, msg) == 2) diff --git a/src/modules.c b/src/modules.c index 61ae64716..b2ebf37ae 100644 --- a/src/modules.c +++ b/src/modules.c @@ -627,8 +627,9 @@ Function global_table[] = { (Function) bind_bind_entry, (Function) unbind_bind_entry, (Function) & argv0, - (Function) get_user_from_member + (Function) lookup_user_record, /* 324 - 327 */ + (Function) find_member_from_nick }; void init_modules(void) diff --git a/src/userrec.c b/src/userrec.c index 084dbcd64..66bb8f16c 100644 --- a/src/userrec.c +++ b/src/userrec.c @@ -171,6 +171,23 @@ static struct userrec *check_dcclist_hand(char *handle) return NULL; } +/* Search every channel record for the provided nickname. Used in cases where + * we are searching for a user record but don't have a memberlist to start from + */ +memberlist *find_member_from_nick(char *nick) { + struct chanset_t *chan; + memberlist *m = NULL; + + for (chan = chanset; chan; chan = chan->next) { + for (m = chan->channel.member; m && m->nick[0]; m = m->next) { + if (!rfc_casecmp(m->nick, nick)) { + return m; + } + } + } + return m; +} + /* Search userlist for a provided account name * Returns: userrecord for user containing the account */ @@ -255,6 +272,43 @@ struct userrec *get_user_from_member(memberlist *m) return NULL; } +/* Wrapper function to find an Eggdrop user record based on either a provided + * channel memberlist record, host, or account. This function will first check + * a provided memberlist and return the result. If no user record is found (or + * the memberlist itself was NULL), this function will try again based on a + * provided account, and then again on a provided host. + * + * When calling this function it is best to provide all available independent + * variables- ie, if you provide 'm' for the memberlist, don't provide + * 'm->account' for the account, use the independent source variable 'account' + * if available. This allows redundant checking in case of unexpected NULLs + */ +struct userrec *lookup_user_record(memberlist *m, char *host, char *account) +{ + struct userrec *u = NULL; + +/* First check for a user record tied to a memberlist */ + if (m) { + u = get_user_from_member(m); + if (u) { + return u; + } + } +/* Next check for a user record tied to an account */ + if (account && account[0]) { + u = get_user_by_account(account); + if (u) { + return u; + } + } +/* Last check for a user record tied to a hostmask */ + if (host && host[0]) { + u = get_user_by_host(host); + return u; + } + return NULL; +} + /* Fix capitalization, etc */ void correct_handle(char *handle) diff --git a/src/users.c b/src/users.c index d5c48f234..928f85ae9 100644 --- a/src/users.c +++ b/src/users.c @@ -523,8 +523,6 @@ void tell_user_ident(int idx, char *id) struct userrec *u; u = get_user_by_handle(userlist, id); - if (u == NULL) - u = get_user_by_host(id); if (u == NULL) { dprintf(idx, "%s.\n", USERF_NOMATCH); return; diff --git a/src/users.h b/src/users.h index a273ca95c..6bc27c1ce 100644 --- a/src/users.h +++ b/src/users.h @@ -185,7 +185,9 @@ struct userrec *get_user_by_host(char *); struct userrec *get_user_by_account(char *); struct userrec *get_user_by_nick(char *); struct userrec *get_user_from_member(memberlist *); +struct userrec *lookup_user_record(memberlist *, char *, char *); struct userrec *check_chanlist(const char *); +memberlist *find_member_from_nick(char *); /* All the default userentry stuff, for code re-use */ From 3302c4a70e653d3a6d9d59a1ab45f0808353ff69 Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 29 Jun 2024 12:06:14 -0400 Subject: [PATCH 299/320] Fix python configure Found by: Csibesz` Patch by: Geo Fixes: #1587 --- configure.ac | 1 - doc/sphinx_source/modules/mod/python.rst | 107 +-------------------- doc/sphinx_source/using/python.rst | 113 +++++++++++++++++++++++ eggdrop.conf | 23 ++--- src/mod/python.mod/scripts/urlTitle.py | 1 + 5 files changed, 128 insertions(+), 117 deletions(-) create mode 100644 doc/sphinx_source/using/python.rst diff --git a/configure.ac b/configure.ac index 1100e99d1..9a5e1b7c2 100644 --- a/configure.ac +++ b/configure.ac @@ -164,7 +164,6 @@ EGG_TLS_DETECT EGG_TDNS_ENABLE # Check for Python -EGG_PYTHON_ENABLE EGG_PYTHON_WITHCONFIG diff --git a/doc/sphinx_source/modules/mod/python.rst b/doc/sphinx_source/modules/mod/python.rst index 55307eb6f..5e06a45b2 100644 --- a/doc/sphinx_source/modules/mod/python.rst +++ b/doc/sphinx_source/modules/mod/python.rst @@ -8,6 +8,11 @@ Python Module This module adds a Python interpreter to Eggdrop, allowing you to run Python scripts. +------------------- +System Requirements +------------------- +This module requires Python version 3.8 or higher in order to run. Similar to Tcl requirements, Eggdrop requires both python and python development libraries to be installed on the host machine. On Debian/Ubuntu machines, this means the packages ``python``, ``python-dev`` AND ``python-is-python3`` to be installed. The python-is-python3 updates symlinks on the host system that allow Eggdrop to find it. + -------------- Loading Python -------------- @@ -50,105 +55,3 @@ pysource ^^^^^^^^^^^^^^^^^^^^^^^ The ``pysource`` command is analogous 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 -^^^^^^^^^^^^^^^^ - -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 :ref:`bind_types`. The eggdrop.tcl.bind command should not be used as it will attempt to call a Tcl proc. - -^^^^^^^^^^^^^^^^^^^^^^^ -parse_tcl_list -^^^^^^^^^^^^^^^^^^^^^^^ - -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 -^^^^^^^^^^^^^^^^^^^^^^^ - -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. - -.. glossary:: - - 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 usable 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 diff --git a/doc/sphinx_source/using/python.rst b/doc/sphinx_source/using/python.rst new file mode 100644 index 000000000..520aa1810 --- /dev/null +++ b/doc/sphinx_source/using/python.rst @@ -0,0 +1,113 @@ +======================= +Using the Python Module +======================= + +In Eggdrop 1.10.0, Eggdrop was shipped with a Python module that, similar to the existing core Tcl capability, allows Eggdrop to run python scripts. + +------------------- +System Requirements +------------------- +Similar to Tcl requirements, Eggdrop requires both python and python development libraries to be installed on the host machine. On Debian/Ubuntu machines, this requires the packages python-dev AND python-is-python3 to be installed. The python-is-python3 updates symlinks on the host system that allow Eggdrop to find it. + +-------------- +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 + +----------------------- +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`` + +^^^^^^^^^^^^^^^^ +bind +^^^^^^^^^^^^^^^^ + +An important difference to note is that Eggdrop Python has its own ``bind`` command implemented. You will generally want to create binds using the Python ``bind`` command and not import bind from eggdrop.tcl because a Python bind will call a Python function, whereas using the Tcl bind will call a Tcl function (not one from the script you are writing). + +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 :ref:`bind_types`. The eggdrop.tcl.bind command should not be used as it will attempt to call a Tcl proc. + +^^^^^^^^^^^^^^^^^^^^^^^ +parse_tcl_list +^^^^^^^^^^^^^^^^^^^^^^^ + +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 +^^^^^^^^^^^^^^^^^^^^^^^ + +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 convert the Tcl-formatted dict into a Python list, which can then freely be used within the Python script. + +-------------------------------- +Writing an Eggdrop Python script +-------------------------------- + +Some example scripts, complete with documentation, are included with the Python module that ships with Eggdrop (src/mod/python.mod/scripts). These scripts are included to help demonstrate script formatting and usage. The scripts are: + + +.. glossary:: + + 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 usable 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 +^^^^^^^^^^^^^^ + +Python is able to call any Tcl command by importing the ``eggdrop`` module. For example, to use the ``putlog`` command in a python script, you would import it as:: + + from eggdrop.tcl import putlog + +and then call it using:: + + putlog("This is a logged message") + + +An important difference to note is that Eggdrop Python has its own ``bind`` command implemented. You will generally want to create binds using the Python ``bind`` command and not import bind from eggdrop.tcl because a Python bind will call a Python function, whereas using the Tcl bind will call a Tcl function (not one from the script you are writing). + +Where does python print go? + +------------------------------------- +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 + diff --git a/eggdrop.conf b/eggdrop.conf index 86ac99e64..520e8546d 100755 --- a/eggdrop.conf +++ b/eggdrop.conf @@ -656,6 +656,7 @@ loadmodule pbkdf2 # This setting is planned to be enabled by default in Eggdrop 2.0. #set remove-pass 0 + #### BLOWFISH MODULE #### # # This module is planned to be removed in Eggdrop 2.0 @@ -676,21 +677,14 @@ loadmodule blowfish set blowfish-use-mode cbc -#### DNS MODULE (Deprecated) #### - -## This module provided asynchronous dns support, but as of v1.9.2, this -## functionality was moved into the core code. If you are having issues with the -## new DNS functionality, or just want to continue using this module, compile -## Eggdrop with the --disable-tdns flag (./configure --disdable-tdns). -# -## You really probably don't want to uncomment this!!!! +#### PYTHON MODULE ##### # -#loadmodule dns -#set dns-servers "8.8.8.8 1.1.1.1 185.222.222.222" -#set dns-cache 86400 -#set dns-negcache 600 -#set dns-maxsends 4 -#set dns-retrydelay 3 +# This module gives Eggdrop the ability to run python scripts. if loaded, +# Python scripts can be loaded at the end of the config file using the pysouce +# command to tell Eggdrop where the file is loaded. The module requires Python +# version 3.8 or higher to run. To load the python module, uncomment it below. +#loadmodule python + #### CHANNELS MODULE #### @@ -1448,6 +1442,7 @@ set xfer-timeout 30 # be v1.9.0 or higher). #set sharefail-unlink 1 + #### SHARE MODULE #### # This module provides userfile sharing support between two directly diff --git a/src/mod/python.mod/scripts/urlTitle.py b/src/mod/python.mod/scripts/urlTitle.py index f8b498226..b2d35899a 100644 --- a/src/mod/python.mod/scripts/urlTitle.py +++ b/src/mod/python.mod/scripts/urlTitle.py @@ -17,6 +17,7 @@ def pubGetTitle(nick, host, handle, channel, text, **kwargs): try: reqs = requests.get(text) soup = BeautifulSoup(reqs.text, 'html.parser') + putlog("Found title for "+text) putmsg(channel, "The title of the webpage is: "+soup.find_all('title')[0].get_text()) except Exception as e: putmsg(channel, "Error: " + str(e)) From ee8b2d314720db7d4bd53e16fc1fd8c1994c5287 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sat, 29 Jun 2024 18:26:56 +0200 Subject: [PATCH 300/320] Allow python threads and async io Patch by: thommey Python threads were not given a chance to run in the background so far because we held onto the GIL. Now we release it around our select() which should give Python threads or asyncio runners (in a separate thread) enough room to work. The concern of having multithreaded code call into our Tcl interpreter against its will turns out to be unwarranted - the GIL takes care of this. --- configure | 3 +-- src/Makefile.in | 3 ++- src/main.c | 4 ++++ src/mod/compress.mod/configure | 2 +- src/mod/dns.mod/configure | 2 +- src/mod/modvals.h | 6 +++++- src/mod/python.mod/configure | 2 +- src/mod/python.mod/python.c | 16 ++++++++++++++++ src/net.c | 3 +++ 9 files changed, 34 insertions(+), 7 deletions(-) diff --git a/configure b/configure index 4b2385d1d..a59374034 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 95f630ee. +# From configure.ac 9068a673. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # @@ -10638,7 +10638,6 @@ printf "%s\n" "#define EGG_TDNS 1" >>confdefs.h # Check for Python -EGG_PYTHON_ENABLE # Check whether --with-python-config was given. diff --git a/src/Makefile.in b/src/Makefile.in index 4a3cc4d7e..21e359131 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -176,7 +176,8 @@ modules.o: modules.c main.h ../config.h ../eggint.h ../lush.h lang.h \ net.o: net.c main.h ../config.h ../eggint.h ../lush.h lang.h eggdrop.h \ compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h tclhash.h \ chan.h users.h compat/compat.h compat/base64.h compat/inet_aton.h \ - ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h + ../src/main.h compat/snprintf.h compat/explicit_bzero.h compat/strlcpy.h \ + modules.h mod/modvals.h rfc1459.o: rfc1459.c main.h ../config.h ../eggint.h ../lush.h lang.h \ eggdrop.h compat/in6.h flags.h proto.h misc_file.h cmdt.h tclegg.h \ tclhash.h chan.h users.h compat/compat.h compat/base64.h \ diff --git a/src/main.c b/src/main.c index 82ed9ef80..e78b18dd3 100644 --- a/src/main.c +++ b/src/main.c @@ -1023,6 +1023,10 @@ int main(int arg_c, char **arg_v) sigaction(SIGILL, &sv, NULL); sv.sa_handler = got_alarm; sigaction(SIGALRM, &sv, NULL); + // Added for python.mod because the _signal handler otherwise overwrites it + // see https://discuss.python.org/t/asyncio-skipping-signal-handling-setup-during-import-for-python-embedded-context/37054/6 + sv.sa_handler = got_term; + sigaction(SIGINT, &sv, NULL); /* Initialize variables and stuff */ now = time(NULL); diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 1c23a76d4..2d3dc6c26 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 95f630ee. +# From configure.ac 9068a673. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 6f348a637..7a99e8b4f 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 95f630ee. +# From configure.ac 9068a673. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. # diff --git a/src/mod/modvals.h b/src/mod/modvals.h index 6b955cad3..a840e09cf 100644 --- a/src/mod/modvals.h +++ b/src/mod/modvals.h @@ -39,7 +39,11 @@ #define HOOK_LOADED 13 #define HOOK_BACKUP 14 #define HOOK_DIE 15 -#define REAL_HOOKS 16 +#define HOOK_PRE_SELECT 16 +#define HOOK_POST_SELECT 17 + +#define REAL_HOOKS 18 + #define HOOK_SHAREOUT 105 #define HOOK_SHAREIN 106 #define HOOK_ENCRYPT_PASS 107 diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index f5bb2e5c7..6b0a130f5 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 95f630ee. +# From configure.ac 9068a673. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. # diff --git a/src/mod/python.mod/python.c b/src/mod/python.mod/python.c index 7a4ed7fce..9ce10d673 100644 --- a/src/mod/python.mod/python.c +++ b/src/mod/python.mod/python.c @@ -43,6 +43,7 @@ static PyObject *pirp, *pglobals; #undef global static Function *global = NULL, *irc_funcs = NULL; +static PyThreadState *_pythreadsave; #include "src/mod/python.mod/pycmds.c" #include "src/mod/python.mod/tclpython.c" @@ -53,6 +54,16 @@ static int python_expmem() return 0; // TODO } +static int python_gil_unlock() { + _pythreadsave = PyEval_SaveThread(); + return 0; +} + +static int python_gil_lock() { + PyEval_RestoreThread(_pythreadsave); + return 0; +} + // TODO: Do we really have to exit eggdrop on module load failure? static void init_python() { PyObject *pmodule; @@ -119,6 +130,8 @@ static void python_report(int idx, int details) static char *python_close() { Context; + del_hook(HOOK_PRE_SELECT, (Function)python_gil_unlock); + del_hook(HOOK_POST_SELECT, (Function)python_gil_lock); kill_python(); rem_builtins(H_dcc, mydcc); rem_tcl_commands(my_tcl_cmds); @@ -160,5 +173,8 @@ char *python_start(Function *global_funcs) /* Add command table to bind list */ add_builtins(H_dcc, mydcc); add_tcl_commands(my_tcl_cmds); + add_hook(HOOK_PRE_SELECT, (Function)python_gil_unlock); + add_hook(HOOK_POST_SELECT, (Function)python_gil_lock); + return NULL; } diff --git a/src/net.c b/src/net.c index 3e23acb97..6ec1d5b3a 100644 --- a/src/net.c +++ b/src/net.c @@ -27,6 +27,7 @@ #include #include "main.h" +#include "modules.h" #include #include #include @@ -924,11 +925,13 @@ int sockread(char *s, int *len, sock_list *slist, int slistmax, int tclonly) t.tv_sec = td->blocktime.tv_sec; t.tv_usec = td->blocktime.tv_usec; + call_hook(HOOK_PRE_SELECT); x = select((SELECT_TYPE_ARG1) maxfd + 1, SELECT_TYPE_ARG234 (maxfd_r >= 0 ? &fdr : NULL), SELECT_TYPE_ARG234 (maxfd_w >= 0 ? &fdw : NULL), SELECT_TYPE_ARG234 (maxfd_e >= 0 ? &fde : NULL), SELECT_TYPE_ARG5 &t); + call_hook(HOOK_POST_SELECT); if (x == -1) return -2; /* socket error */ if (x == 0) From 5c34bd631d93f0cfd8efa3424b5e6369dcab250b Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sun, 30 Jun 2024 18:48:53 +0200 Subject: [PATCH 301/320] Fix module export for get_user_from_member (#1633) Found by: Mystery-X Patch by: thommey Also enable RTLD_NOW linking so module loading fails as early as possible. --- src/mod/module.h | 1 + src/modules.c | 9 +++------ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/mod/module.h b/src/mod/module.h index 488664322..9f84411ea 100644 --- a/src/mod/module.h +++ b/src/mod/module.h @@ -527,6 +527,7 @@ typedef void (*chanout_butfunc)(int, int, const char *, ...) ATTRIBUTE_FORMAT(pr #define lookup_user_record ((struct userrec * (*)(memberlist *, char *, char *))global[323]) /* 324 - 327 */ #define find_member_from_nick ((memberlist * (*) (char *))global[324]) +#define get_user_from_member ((struct userrec * (*) (memberlist *))global[325]) /* hostmasking */ diff --git a/src/modules.c b/src/modules.c index b2ebf37ae..e9e7a759f 100644 --- a/src/modules.c +++ b/src/modules.c @@ -60,11 +60,7 @@ # ifndef RTLD_NOW # define RTLD_NOW 1 # endif -# ifdef RTLD_LAZY -# define DLFLAGS RTLD_LAZY|RTLD_GLOBAL -# else -# define DLFLAGS RTLD_NOW|RTLD_GLOBAL -# endif +# define DLFLAGS RTLD_NOW|RTLD_GLOBAL # endif /* MOD_USE_DL */ #endif /* !STATIC */ @@ -629,7 +625,8 @@ Function global_table[] = { (Function) & argv0, (Function) lookup_user_record, /* 324 - 327 */ - (Function) find_member_from_nick + (Function) find_member_from_nick, + (Function) get_user_from_member, }; void init_modules(void) From ffb125c164d630be72c73b0dd75805a849802d05 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 16:36:15 +0200 Subject: [PATCH 302/320] Enhance ssl log --- src/net.c | 7 ++++++- src/tls.c | 36 ++++++++++++++++++++++++++++++------ 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/net.c b/src/net.c index 6ec1d5b3a..53d55546d 100644 --- a/src/net.c +++ b/src/net.c @@ -976,7 +976,12 @@ int sockread(char *s, int *len, sock_list *slist, int slistmax, int tclonly) { if (slist[i].ssl) { x = SSL_read(slist[i].ssl, s, grab); - if (x < 0) { + if (!x && (SSL_get_shutdown(slist[i].ssl) == SSL_RECEIVED_SHUTDOWN)) { + *len = slist[i].sock; + slist[i].flags &= ~SOCK_CONNECT; + debug1("net: SSL_read(): received shutdown sock %i", slist[i].sock); + return -1; + } else if (x < 0) { int err = SSL_get_error(slist[i].ssl, x); if (err == SSL_ERROR_WANT_READ || err == SSL_ERROR_WANT_WRITE) errno = EAGAIN; diff --git a/src/tls.c b/src/tls.c index 180af6b37..d3af0c6ea 100644 --- a/src/tls.c +++ b/src/tls.c @@ -531,6 +531,12 @@ static char *ssl_printname(X509_NAME *name) /* X509_NAME_oneline() is easier and shorter, but is deprecated and the manual discourages it's usage, so let's not be lazy ;) */ + if (!bio) { + debug0("TLS: ssl_printname(): BIO_new(): error"); + buf = nmalloc(1); + *buf = 0; + return buf; + } if (X509_NAME_print_ex(bio, name, 0, XN_FLAG_ONELINE & ~XN_FLAG_SPC_EQ)) { len = BIO_get_mem_data(bio, &data); if (len > 0) { @@ -564,6 +570,12 @@ static char *ssl_printtime(ASN1_UTCTIME *t) char *data, *buf; BIO *bio = BIO_new(BIO_s_mem()); + if (!bio) { + debug0("TLS: ssl_printtime(): BIO_new(): error"); + buf = nmalloc(1); + *buf = 0; + return buf; + } ASN1_UTCTIME_print(bio, t); len = BIO_get_mem_data(bio, &data); if (len > 0) { @@ -591,6 +603,12 @@ static char *ssl_printnum(ASN1_INTEGER *i) char *data, *buf; BIO *bio = BIO_new(BIO_s_mem()); + if (!bio) { + debug0("TLS: ssl_printnum(): BIO_new(): error"); + buf = nmalloc(1); + *buf = 0; + return buf; + } i2a_ASN1_INTEGER(bio, i); len = BIO_get_mem_data(bio, &data); if (len > 0) { @@ -712,7 +730,7 @@ int ssl_verify(int ok, X509_STORE_CTX *ctx) !(data->verify & TLS_VERIFYFROM)) || ((err == X509_V_ERR_CERT_HAS_EXPIRED) && !(data->verify & TLS_VERIFYTO))) { - debug1("TLS: peer certificate warning: %s", + putlog(data->loglevel, "*", "TLS: peer certificate warning: %s", X509_verify_cert_error_string(err)); ok = 1; } @@ -799,7 +817,7 @@ static void ssl_info(const SSL *ssl, int where, int ret) SSL_alert_desc_string_long(ret)); } else { /* Ignore close notify warnings */ - debug1("Received close notify warning during %s", + debug1("TLS: Received close notify during %s", (where & SSL_CB_READ) ? "read" : "write"); } } else if (where & SSL_CB_EXIT) { @@ -819,10 +837,16 @@ static void ssl_info(const SSL *ssl, int where, int ret) SSL_state_string_long(ssl)); } } - } else { - /* Display the state of the engine for debugging purposes */ - debug1("TLS: state change: %s", SSL_state_string_long(ssl)); } + /* Display the state of the engine for debugging purposes */ + else if (where == SSL_CB_HANDSHAKE_START) + debug1("TLS: handshake start: %s", SSL_state_string_long(ssl)); + else if (where == SSL_CB_CONNECT_LOOP) + debug1("TLS: connect loop: %s", SSL_state_string_long(ssl)); + else if (where == SSL_CB_ACCEPT_LOOP) + debug1("TLS: accept loop: %s", SSL_state_string_long(ssl)); + else + debug1("TLS: state change: %s", SSL_state_string_long(ssl)); } /* Switch a socket to SSL communication @@ -902,9 +926,9 @@ int ssl_handshake(int sock, int flags, int verify, int loglevel, char *host, SSL_set_mode(td->socklist[i].ssl, SSL_MODE_ENABLE_PARTIAL_WRITE | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER); if (data->flags & TLS_CONNECT) { - struct timespec req = { 0, 1000000L }; SSL_set_verify(td->socklist[i].ssl, SSL_VERIFY_PEER, ssl_verify); /* Introduce 1ms lag so an unpatched hub has time to setup the ssl handshake */ + const struct timespec req = { 0, 1000000L }; nanosleep(&req, NULL); #ifdef SSL_set_tlsext_host_name if (*data->host) From c635a8df73363551d60f7cb4940882f514750fac Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 16:43:37 +0200 Subject: [PATCH 303/320] Restore exported functions for module back-compat --- src/modules.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules.c b/src/modules.c index e9e7a759f..1fd1dfb97 100644 --- a/src/modules.c +++ b/src/modules.c @@ -297,7 +297,7 @@ Function global_table[] = { (Function) open_telnet, /* 88 - 91 */ (Function) check_tcl_event, - (Function) 0, /* was egg_memcpy -- use memcpy() instead */ + (Function) memcpy, /* was egg_memcpy -- use memcpy() instead */ (Function) my_atoul, (Function) my_strcpy, /* 92 - 95 */ @@ -520,10 +520,10 @@ Function global_table[] = { /* 252 - 255 */ (Function) egg_snprintf, (Function) egg_vsnprintf, - (Function) 0, /* was egg_memset -- use memset() or egg_bzero() instead */ - (Function) 0, /* was egg_strcasecmp -- use strcasecmp() instead */ + (Function) memset, /* was egg_memset -- use memset() or egg_bzero() instead */ + (Function) strcasecmp, /* was egg_strcasecmp -- use strcasecmp() instead */ /* 256 - 259 */ - (Function) 0, /* was egg_strncasecmp -- use strncasecmp() instead */ + (Function) strncasecmp, /* was egg_strncasecmp -- use strncasecmp() instead */ (Function) is_file, (Function) & must_be_owner, /* int */ (Function) & tandbot, /* tand_t * */ From e23f8b7efea9071952473962e9b0b45c8e4ac0ac Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:14:34 +0200 Subject: [PATCH 304/320] Remove runtime python version check artifact --- src/mod/python.mod/python.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/src/mod/python.mod/python.c b/src/mod/python.mod/python.c index 9ce10d673..b2521661e 100644 --- a/src/mod/python.mod/python.c +++ b/src/mod/python.mod/python.c @@ -31,7 +31,6 @@ #undef interp #define tclinterp (*(Tcl_Interp **)(global[128])) #undef days -#include #include #include #include "src/mod/irc.mod/irc.h" @@ -64,42 +63,33 @@ static int python_gil_lock() { return 0; } -// TODO: Do we really have to exit eggdrop on module load failure? -static void init_python() { +static char *init_python() { PyObject *pmodule; PyStatus status; PyConfig config; - if (PY_VERSION_HEX < 0x0308) { - putlog(LOG_MISC, "*", "Python: Python version %d is lower than 3.8, not loading Python module", PY_VERSION_HEX); - return; - } PyConfig_InitPythonConfig(&config); config.install_signal_handlers = 0; config.parse_argv = 0; status = PyConfig_SetBytesString(&config, &config.program_name, argv0); if (PyStatus_Exception(status)) { PyConfig_Clear(&config); - putlog(LOG_MISC, "*", "Python: Fatal error: Could not set program base path"); - Py_ExitStatusException(status); + return "Python: Fatal error: Could not set program base path"; } if (PyImport_AppendInittab("eggdrop", &PyInit_eggdrop) == -1) { - putlog(LOG_MISC, "*", "Python: Error: could not extend in-built modules table"); - exit(1); + PyConfig_Clear(&config); + return "Python: Error: could not extend in-built modules table"; } status = Py_InitializeFromConfig(&config); if (PyStatus_Exception(status)) { PyConfig_Clear(&config); - putlog(LOG_MISC, "*", "Python: Fatal error: Could not initialize config"); - fatal(1); + return "Python: Fatal error: Could not initialize config"; } PyConfig_Clear(&config); PyDateTime_IMPORT; pmodule = PyImport_ImportModule("eggdrop"); if (!pmodule) { - PyErr_Print(); - putlog(LOG_MISC, "*", "Error: could not import module 'eggdrop'"); - fatal(1); + return "Error: could not import module 'eggdrop'"; } pirp = PyImport_AddModule("__main__"); @@ -111,7 +101,7 @@ static void init_python() { PyRun_SimpleString("import eggdrop"); PyRun_SimpleString("sys.displayhook = eggdrop.__displayhook__"); - return; + return NULL; } static void kill_python() { @@ -148,6 +138,7 @@ static Function python_table[] = { char *python_start(Function *global_funcs) { + char *s; /* Assign the core function table. After this point you use all normal * functions defined in src/mod/modules.h */ @@ -168,7 +159,8 @@ char *python_start(Function *global_funcs) } // irc.mod depends on server.mod and channels.mod, so those were implicitely loaded - init_python(); + if ((s = init_python())) + return s; /* Add command table to bind list */ add_builtins(H_dcc, mydcc); From df66050905c366a35cbae74c1b180e51e838722a Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:22:10 +0200 Subject: [PATCH 305/320] Change strncpyz define to strlcpy --- src/mod/module.h | 10 +++++----- src/modules.c | 4 +--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/mod/module.h b/src/mod/module.h index 9f84411ea..efab4174f 100644 --- a/src/mod/module.h +++ b/src/mod/module.h @@ -202,7 +202,7 @@ typedef void (*chanout_butfunc)(int, int, const char *, ...) ATTRIBUTE_FORMAT(pr #define open_telnet ((int (*) (int, char *, int))global[87]) /* 88 - 91 */ #define check_tcl_event ((void (*) (const char *))global[88]) -/* was my_memcpy -- use memcpy() instead */ +/* was my_memcpy() -- use memcpy() instead */ #define my_atoul ((IP(*)(char *))global[90]) #define my_strcpy ((int (*)(char *, const char *))global[91]) /* 92 - 95 */ @@ -426,10 +426,10 @@ typedef void (*chanout_butfunc)(int, int, const char *, ...) ATTRIBUTE_FORMAT(pr /* 252 - 255 */ #define egg_snprintf (global[252]) #define egg_vsnprintf ((int (*)(char *, size_t, const char *, va_list))global[253]) -/* was egg_memset -- use memset() instead */ -/* was egg_strcasecmp -- use strcasecmp instead */ +/* was egg_memset() -- use memset() instead */ +/* was egg_strcasecmp() -- use strcasecmp() instead */ /* 256 - 259 */ -/* was egg_strncasecmp -- use strncasecmp instead */ +/* was egg_strncasecmp() -- use strncasecmp() instead */ #define is_file ((int (*)(const char *))global[257]) #define must_be_owner (*(int *)(global[258])) #define tandbot (*(tand_t **)(global[259])) @@ -497,7 +497,7 @@ typedef void (*chanout_butfunc)(int, int, const char *, ...) ATTRIBUTE_FORMAT(pr # define strlcpy ((size_t (*) (char *, const char *, size_t))global[303]) #endif /* 304 - 307 */ -#define strncpyz ((size_t (*) (char *, const char *, size_t))global[304]) +#define strncpyz strlcpy /* strncpyz() is deprecated, use strlcpy() instead */ #ifndef HAVE_BASE64 # define b64_ntop ((int (*) (uint8_t const *, size_t, char *, size_t))global[305]) # define b64_pton ((int (*) (const char *, uint8_t *, size_t))global[306]) diff --git a/src/modules.c b/src/modules.c index 1fd1dfb97..42b5953ee 100644 --- a/src/modules.c +++ b/src/modules.c @@ -64,8 +64,6 @@ # endif /* MOD_USE_DL */ #endif /* !STATIC */ -#define strncpyz strlcpy - extern struct dcc_t *dcc; extern struct userrec *userlist, *lastuser; extern struct chanset_t *chanset; @@ -591,7 +589,7 @@ Function global_table[] = { (Function) 0, #endif /* 304 - 307 */ - (Function) strncpyz, + (Function) strlcpy, /* was strncpyz() -- use strlcpy() instead */ #ifndef HAVE_BASE64 (Function) b64_ntop, (Function) b64_pton, From 085583e80f64314ef08360fd66531f23c84654b8 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:23:28 +0200 Subject: [PATCH 306/320] Only configure modules containing code --- misc/modconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/modconfig b/misc/modconfig index 0fd07b063..a8bb1610d 100755 --- a/misc/modconfig +++ b/misc/modconfig @@ -274,7 +274,7 @@ xdetect-modules) mc_new_mod_state=enabled fi fi - if test "${mc_new_mod_state}" = enabled; then + if test "${mc_new_mod_state}" = enabled && [[ -n $(find $mc_mod_bin_dir/${mc_mod}".mod" -name \*.c) ]]; then ${mc_self_call} -q add ${mc_mod} else ${mc_self_call} -q del ${mc_mod} From c960f05cd48f66f6b94efac9e352417d62463791 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:36:04 +0200 Subject: [PATCH 307/320] Add error reporting, increase path limits for module loads --- eggdrop-basic.conf | 5 ++--- eggdrop.conf | 5 ++--- src/modules.c | 13 +++++++++---- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/eggdrop-basic.conf b/eggdrop-basic.conf index d14753d0e..ab54423f7 100755 --- a/eggdrop-basic.conf +++ b/eggdrop-basic.conf @@ -300,9 +300,8 @@ set ssl-capath "/etc/ssl/" ## Eggdrop, things change. ## This path specifies the path were Eggdrop should look for its modules. -## If you run the bot from the compilation directory, you will want to set -## this to "". If you use 'make install' (like all good kiddies do ;), this -## is a fine default. Otherwise, use your head :) +## If you use 'make install' (like all good kiddies do ;), this is a fine +## default. Otherwise, use your head :) set mod-path "modules/" #### CHANNELS MODULE #### diff --git a/eggdrop.conf b/eggdrop.conf index 520e8546d..f41ec0c4b 100755 --- a/eggdrop.conf +++ b/eggdrop.conf @@ -605,9 +605,8 @@ die "Please make sure you edit your config file completely." # Eggdrop, things change. # This path specifies the path were Eggdrop should look for its modules. -# If you run the bot from the compilation directory, you will want to set -# this to "". If you use 'make install' (like all good kiddies do ;), this -# is a fine default. Otherwise, use your head :) +# If you use 'make install' (like all good kiddies do ;), this is a fine +# default. Otherwise, use your head :) set mod-path "modules/" diff --git a/src/modules.c b/src/modules.c index 42b5953ee..0fd005760 100644 --- a/src/modules.c +++ b/src/modules.c @@ -23,6 +23,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#include #include #include "main.h" #include "modules.h" @@ -694,6 +695,7 @@ int module_register(char *name, Function *funcs, int major, int minor) const char *module_load(char *name) { + size_t len; module_entry *p; char *e; Function f; @@ -702,7 +704,7 @@ const char *module_load(char *name) #endif #ifndef STATIC - char workbuf[1024]; + char workbuf[PATH_MAX]; # ifdef MOD_USE_SHL shl_t hand; # endif @@ -728,11 +730,14 @@ const char *module_load(char *name) #ifndef STATIC if (moddir[0] != '/') { - if (getcwd(workbuf, 1024) == NULL) + if (getcwd(workbuf, sizeof workbuf) == NULL) { + debug1("modules: getcwd(): %s\n", strerror(errno)); return MOD_BADCWD; - sprintf(&(workbuf[strlen(workbuf)]), "/%s%s." EGG_MOD_EXT, moddir, name); + } + len = strlen(workbuf); + snprintf(workbuf + len, (sizeof workbuf) - len, "/%s%s." EGG_MOD_EXT, moddir, name); } else { - sprintf(workbuf, "%s%s." EGG_MOD_EXT, moddir, name); + snprintf(workbuf, sizeof workbuf, "%s%s." EGG_MOD_EXT, moddir, name); } # ifdef MOD_USE_SHL From 2bf13c3b0cf931105b171dd126ffafe42fc539e2 Mon Sep 17 00:00:00 2001 From: crazycatdevs <44431938+crazycatdevs@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:42:35 +0200 Subject: [PATCH 308/320] Update switch logic Patch by: @crazycatdevs --- eggdrop-basic.conf | 5 +---- eggdrop.conf | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/eggdrop-basic.conf b/eggdrop-basic.conf index ab54423f7..849575610 100755 --- a/eggdrop-basic.conf +++ b/eggdrop-basic.conf @@ -415,10 +415,7 @@ if {[file exists aclocal.m4]} { die {You are attempting to run Eggdrop from the if {[info exists net-type]} { switch -- ${net-type} { - "EFnet" { - # EFnet - source scripts/quotepong.tcl - } + "EFnet" - "0" { # EFnet source scripts/quotepong.tcl diff --git a/eggdrop.conf b/eggdrop.conf index f41ec0c4b..852758286 100755 --- a/eggdrop.conf +++ b/eggdrop.conf @@ -1704,10 +1704,7 @@ loadhelp userinfo.help if {[info exists net-type]} { switch -- ${net-type} { - "EFnet" { - # EFnet - source scripts/quotepong.tcl - } + "EFnet" - "0" { # EFnet source scripts/quotepong.tcl From 31b360ed1b2fc25aa7fb58d22be2a3146668284f Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:45:02 +0200 Subject: [PATCH 309/320] Remove strcats --- src/net.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/net.c b/src/net.c index 53d55546d..5a63d5808 100644 --- a/src/net.c +++ b/src/net.c @@ -1224,9 +1224,10 @@ int sockgets(char *s, int *len) /* Might be necessary to prepend stored-up data! */ if (socklist[ret].handler.sock.inbuf != NULL) { p = socklist[ret].handler.sock.inbuf; - socklist[ret].handler.sock.inbuf = nmalloc(strlen(p) + strlen(xx) + 1); - strcpy(socklist[ret].handler.sock.inbuf, p); - strcat(socklist[ret].handler.sock.inbuf, xx); + len2 = strlen(p); + socklist[ret].handler.sock.inbuf = nmalloc(len2 + strlen(xx) + 1); + memcpy(socklist[ret].handler.sock.inbuf, p, len2); + strcpy(socklist[ret].handler.sock.inbuf + len2, xx); nfree(p); if (strlen(socklist[ret].handler.sock.inbuf) < READMAX + 2) { strcpy(xx, socklist[ret].handler.sock.inbuf); @@ -1277,10 +1278,11 @@ int sockgets(char *s, int *len) /* Prepend old data back */ if (socklist[ret].handler.sock.inbuf != NULL) { p = socklist[ret].handler.sock.inbuf; - socklist[ret].handler.sock.inbuflen = strlen(p) + strlen(xx); + len2 = strlen(xx); + socklist[ret].handler.sock.inbuflen = len2 + strlen(p); socklist[ret].handler.sock.inbuf = nmalloc(socklist[ret].handler.sock.inbuflen + 1); - strcpy(socklist[ret].handler.sock.inbuf, xx); - strcat(socklist[ret].handler.sock.inbuf, p); + memcpy(socklist[ret].handler.sock.inbuf, xx, len2); + strcpy(socklist[ret].handler.sock.inbuf + len2, p); nfree(p); } else { socklist[ret].handler.sock.inbuflen = strlen(xx); From e1f8bdcedb311e223ea7f187fa9519b29368c340 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sat, 6 Jul 2024 17:49:27 +0200 Subject: [PATCH 310/320] Fix copyrights Patch by: michaelortmann --- INSTALL | 2 +- README | 2 +- misc/updatecopyright | 4 ++-- src/main.c | 14 +++++++------- 4 files changed, 11 insertions(+), 11 deletions(-) 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/README b/README index 2d74900ca..468549297 100644 --- a/README +++ b/README @@ -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/misc/updatecopyright b/misc/updatecopyright index a17b5edaf..a220e45d0 100755 --- a/misc/updatecopyright +++ b/misc/updatecopyright @@ -49,8 +49,8 @@ update_copyright() { mv ${i}_ $i fi # Cats and Dogs - sed -i '/Eggdrop v%s (C) 1997 Robey Pointer/c\ "Eggdrop v%s (C) 1997 Robey Pointer (C) 2010-'$YEAR' Eggheads",' src/main.c - sed -i '/Eggdrop v%s+%s (C) 1997 Robey Pointer/c\ "Eggdrop v%s+%s (C) 1997 Robey Pointer (C) 2010-'$YEAR' Eggheads",' src/main.c + sed -i '/Eggdrop v" EGG_STRINGVER " (C) 1997 Robey Pointer (C) 1999-/c\ "Eggdrop v" EGG_STRINGVER " (C) 1997 Robey Pointer (C) 1999-'$YEAR' Eggheads Development Team",' src/main.c + sed -i '/Eggdrop v" EGG_STRINGVER "+" EGG_PATCH " (C) 1997 Robey Pointer (C) 1999-/c\ "Eggdrop v" EGG_STRINGVER "+" EGG_PATCH " (C) 1997 Robey Pointer (C) 1999-'$YEAR' Eggheads Development Team",' src/main.c } diff --git a/src/main.c b/src/main.c index e78b18dd3..0b321d025 100644 --- a/src/main.c +++ b/src/main.c @@ -123,7 +123,7 @@ int make_userfile = 0; /* Using bot in userfile-creation mode? */ int save_users_at = 0; /* Minutes past the hour to save the userfile? */ int notify_users_at = 0; /* Minutes past the hour to notify users of notes? */ -char version[81]; /* Version info (long form) */ +char version[128]; /* Version info (long form) */ char ver[41]; /* Version info (short form) */ volatile sig_atomic_t do_restart = 0; /* .restart has been called, restart ASAP */ @@ -976,15 +976,15 @@ int main(int arg_c, char **arg_v) #ifdef EGG_PATCH egg_snprintf(egg_version, sizeof egg_version, "%s+%s %u", EGG_STRINGVER, EGG_PATCH, egg_numver); egg_snprintf(ver, sizeof ver, "eggdrop v%s+%s", EGG_STRINGVER, EGG_PATCH); - egg_snprintf(version, sizeof version, - "Eggdrop v%s+%s (C) 1997 Robey Pointer (C) 2010-2024 Eggheads", - EGG_STRINGVER, EGG_PATCH); + strlcpy(version, + "Eggdrop v" EGG_STRINGVER "+" EGG_PATCH " (C) 1997 Robey Pointer (C) 1999-2024 Eggheads Development Team", + sizeof version); #else egg_snprintf(egg_version, sizeof egg_version, "%s %u", EGG_STRINGVER, egg_numver); egg_snprintf(ver, sizeof ver, "eggdrop v%s", EGG_STRINGVER); - egg_snprintf(version, sizeof version, - "Eggdrop v%s (C) 1997 Robey Pointer (C) 2010-2024 Eggheads", - EGG_STRINGVER); + strlcpy(version, + "Eggdrop v" EGG_STRINGVER " (C) 1997 Robey Pointer (C) 1999-2024 Eggheads Development Team", + sizeof version); #endif /* For OSF/1 */ From 31d426fbba90b1432849caa8880db35cfd7e2e86 Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Sat, 6 Jul 2024 19:57:17 +0200 Subject: [PATCH 311/320] Fix for sh-compatibility in 085583e80f64314ef08360fd66531f23c84654b8 --- misc/modconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/modconfig b/misc/modconfig index a8bb1610d..a22acd9dd 100755 --- a/misc/modconfig +++ b/misc/modconfig @@ -274,7 +274,7 @@ xdetect-modules) mc_new_mod_state=enabled fi fi - if test "${mc_new_mod_state}" = enabled && [[ -n $(find $mc_mod_bin_dir/${mc_mod}".mod" -name \*.c) ]]; then + if test "${mc_new_mod_state}" = enabled && test -n "`find $mc_mod_bin_dir/${mc_mod}.mod -name \*.c`"; then ${mc_self_call} -q add ${mc_mod} else ${mc_self_call} -q del ${mc_mod} From da8746235f54a90e87cbfee985726efafce22dda Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 7 Jul 2024 03:36:49 +0200 Subject: [PATCH 312/320] Remove old Contexts --- src/mod/python.mod/python.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mod/python.mod/python.c b/src/mod/python.mod/python.c index b2521661e..c4221efac 100644 --- a/src/mod/python.mod/python.c +++ b/src/mod/python.mod/python.c @@ -119,7 +119,6 @@ static void python_report(int idx, int details) static char *python_close() { - Context; del_hook(HOOK_PRE_SELECT, (Function)python_gil_unlock); del_hook(HOOK_POST_SELECT, (Function)python_gil_lock); kill_python(); @@ -144,7 +143,6 @@ char *python_start(Function *global_funcs) */ global = global_funcs; - Context; /* Register the module. */ module_register(MODULE_NAME, python_table, 0, 1); From 25683aba274a6a9d983302755266ec834cca9430 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 7 Jul 2024 15:47:50 +0200 Subject: [PATCH 313/320] Remove isacii from configure.ac --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 9a5e1b7c2..86756534d 100644 --- a/configure.ac +++ b/configure.ac @@ -112,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 memset_explicit explicit_memset getrandom inet_aton isascii memset_s 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 From c329e86e9a868455eeaac3e88ae257319bc9ed70 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 7 Jul 2024 21:33:56 +0200 Subject: [PATCH 314/320] Add python configure search paths Patch by: michaelortmann Fixes: #1605 --- src/mod/python.mod/configure.ac | 37 ++++++++++++--------------------- 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/src/mod/python.mod/configure.ac b/src/mod/python.mod/configure.ac index d91c6e503..ddb3f28d2 100644 --- a/src/mod/python.mod/configure.ac +++ b/src/mod/python.mod/configure.ac @@ -21,16 +21,15 @@ python_avail="false" if test "x$egg_enable_python" != "xno"; then if test "x$egg_with_python_config" = "x"; then - AC_PATH_PROGS([python_config_bin], [python3-config python-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config]) + # based on serial 20 https://www.gnu.org/software/autoconf-archive/ax_python.html + AC_PATH_PROGS([python_config_bin], [python3-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config python-config]) else if test -d "$egg_with_python_config"; then AC_MSG_NOTICE([Checking for python-config binaries in $egg_with_python_config]) - AC_PATH_PROGS([python_config_bin], [python3-config python-config], [], [$egg_with_python_config]) + AC_PATH_PROGS([python_config_bin], [python3-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config python-config], [], [$egg_with_python_config]) else if test -x "$egg_with_python_config"; then python_config_bin="$egg_with_python_config" - else - AC_MSG_WARN([Specified --with-python-config=$egg_with_python_config does not exist.]) fi fi fi @@ -66,28 +65,18 @@ version to use, for example '2.3'. This string will be appended to the Python interpreter canonical name.]) -AC_PATH_PROG([PYTHON],[python[$PYTHON_VERSION]]) - if test -z "$PYTHON"; then - AC_MSG_WARN([Cannot find python$PYTHON_VERSION in your system path]) - if ! $ax_python_devel_optional; then - AC_MSG_ERROR([Giving up, python development not available]) - fi - ax_python_devel_found=no - PYTHON_VERSION="" -fi +PYTHON_VERSION=`echo $PYTHON_LDFLAGS | sed 's/.*-lpython\(.*[[0-9]]\).*/\1/'` # Check for python version - python_ver=`$PYTHON -c "import sys; \ - print(sys.version.split ()[[0]])"` - AX_COMPARE_VERSION([$python_ver],[ge],[3.8.0], [ax_check_ver="yes"], [ax_check_ver="no"]) - AC_MSG_CHECKING([$PYTHON version is >= 3.8.0]) - if test "x$ax_check_ver" = x"no"; then - python_avail="false" - AC_MSG_RESULT([no ($python_ver)]) - AC_MSG_WARN([Eggdrop requires python version 3.8.0 or higher]) - else - AC_MSG_RESULT([yes ($python_ver)]) - fi +AX_COMPARE_VERSION([$PYTHON_VERSION],[ge],[3.8.0], [ax_check_ver="yes"], [ax_check_ver="no"]) +AC_MSG_CHECKING([python version is >= 3.8.0]) +if test "x$ax_check_ver" = x"no"; then + python_avail="false" + AC_MSG_RESULT([no ($PYTHON_VERSION)]) + AC_MSG_WARN([Eggdrop requires python version 3.8.0 or higher]) +else + AC_MSG_RESULT([yes ($PYTHON_VERSION)]) +fi # Disable the module if test "x$python_avail" = "xfalse"; then From 4af46aa3eea1e5eaec72c08a1cbe4afe8fb29b1a Mon Sep 17 00:00:00 2001 From: Geo Date: Sat, 6 Jul 2024 13:35:31 -0400 Subject: [PATCH 315/320] run autotools --- configure | 2 +- src/mod/compress.mod/configure | 2 +- src/mod/dns.mod/configure | 2 +- src/mod/python.mod/configure | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/configure b/configure index a59374034..d4e60c1f6 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 9068a673. +# From configure.ac e1f8bdce. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 2d3dc6c26..5ffba9dc5 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 9068a673. +# From configure.ac e1f8bdce. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 7a99e8b4f..7b706fb9b 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 9068a673. +# From configure.ac e1f8bdce. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. # diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index 6b0a130f5..4f5e64077 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac 9068a673. +# From configure.ac e1f8bdce. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. # From 1e47285ce9c87781f3646cc154321527c35edb7f Mon Sep 17 00:00:00 2001 From: Geo Date: Sun, 7 Jul 2024 15:38:46 -0400 Subject: [PATCH 316/320] run autotools/makedepend --- config.h.in | 3 -- configure | 8 +-- src/mod/compress.mod/configure | 2 +- src/mod/dns.mod/configure | 2 +- src/mod/python.mod/configure | 94 +++++++--------------------------- 5 files changed, 21 insertions(+), 88 deletions(-) diff --git a/config.h.in b/config.h.in index 22e26d5c8..4ac55ced2 100644 --- a/config.h.in +++ b/config.h.in @@ -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 diff --git a/configure b/configure index d4e60c1f6..9c1c4eeb9 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac e1f8bdce. +# From configure.ac 4af46aa3. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop 1.9.5. # @@ -8218,12 +8218,6 @@ if test "x$ac_cv_func_inet_aton" = xyes then : printf "%s\n" "#define HAVE_INET_ATON 1" >>confdefs.h -fi -ac_fn_c_check_func "$LINENO" "isascii" "ac_cv_func_isascii" -if test "x$ac_cv_func_isascii" = xyes -then : - printf "%s\n" "#define HAVE_ISASCII 1" >>confdefs.h - fi ac_fn_c_check_func "$LINENO" "memset_s" "ac_cv_func_memset_s" if test "x$ac_cv_func_memset_s" = xyes diff --git a/src/mod/compress.mod/configure b/src/mod/compress.mod/configure index 5ffba9dc5..21927d124 100755 --- a/src/mod/compress.mod/configure +++ b/src/mod/compress.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac e1f8bdce. +# From configure.ac 4af46aa3. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Compress Module 1.9.5. # diff --git a/src/mod/dns.mod/configure b/src/mod/dns.mod/configure index 7b706fb9b..54e38bf94 100755 --- a/src/mod/dns.mod/configure +++ b/src/mod/dns.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac e1f8bdce. +# From configure.ac 4af46aa3. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop DNS Module 1.9.5. # diff --git a/src/mod/python.mod/configure b/src/mod/python.mod/configure index 4f5e64077..def84c793 100755 --- a/src/mod/python.mod/configure +++ b/src/mod/python.mod/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac e1f8bdce. +# From configure.ac 4af46aa3. # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for Eggdrop Python Module 1.10.0. # @@ -623,7 +623,6 @@ ac_unique_file="python.c" ac_subst_vars='LTLIBOBJS LIBOBJS AWK -PYTHON PYTHON_VERSION PYTHON_LDFLAGS PYTHON_CFLAGS @@ -1924,7 +1923,8 @@ python_avail="false" if test "x$egg_enable_python" != "xno"; then if test "x$egg_with_python_config" = "x"; then - for ac_prog in python3-config python-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config + # based on serial 20 https://www.gnu.org/software/autoconf-archive/ax_python.html + for ac_prog in python3-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config python-config do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -1978,7 +1978,7 @@ done if test -d "$egg_with_python_config"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Checking for python-config binaries in $egg_with_python_config" >&5 printf "%s\n" "$as_me: Checking for python-config binaries in $egg_with_python_config" >&6;} - for ac_prog in python3-config python-config + for ac_prog in python3-config python3.12-config python3.11-config python3.10-config python3.9-config python3.8-config python-config do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -2031,9 +2031,6 @@ done else if test -x "$egg_with_python_config"; then python_config_bin="$egg_with_python_config" - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Specified --with-python-config=$egg_with_python_config does not exist." >&5 -printf "%s\n" "$as_me: WARNING: Specified --with-python-config=$egg_with_python_config does not exist." >&2;} fi fi fi @@ -2081,65 +2078,10 @@ fi # Check python path -# Extract the first word of "python[$PYTHON_VERSION]", so it can be a program name with args. -set dummy python$PYTHON_VERSION; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_path_PYTHON+y} -then : - printf %s "(cached) " >&6 -else $as_nop - case $PYTHON in - [\\/]* | ?:[\\/]*) - ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - 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 - ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -PYTHON=$ac_cv_path_PYTHON -if test -n "$PYTHON"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 -printf "%s\n" "$PYTHON" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - if test -z "$PYTHON"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Cannot find python$PYTHON_VERSION in your system path" >&5 -printf "%s\n" "$as_me: WARNING: Cannot find python$PYTHON_VERSION in your system path" >&2;} - if ! $ax_python_devel_optional; then - as_fn_error $? "Giving up, python development not available" "$LINENO" 5 - fi - ax_python_devel_found=no - PYTHON_VERSION="" -fi +PYTHON_VERSION=`echo $PYTHON_LDFLAGS | sed 's/.*-lpython\(.*[0-9]\).*/\1/'` # Check for python version - python_ver=`$PYTHON -c "import sys; \ - print(sys.version.split ()[0])"` - for ac_prog in gawk mawk nawk awk +for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 @@ -2198,7 +2140,7 @@ done # 0001001200050617. In other words, each number is zero padded to four # digits, and non digits are removed. - ax_compare_version_A=`echo "$python_ver" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ + ax_compare_version_A=`echo "$PYTHON_VERSION" | sed -e 's/\([0-9]*\)/Z\1Z/g' \ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \ @@ -2222,18 +2164,18 @@ x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version else ax_check_ver="no" fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking $PYTHON version is >= 3.8.0" >&5 -printf %s "checking $PYTHON version is >= 3.8.0... " >&6; } - if test "x$ax_check_ver" = x"no"; then - python_avail="false" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no ($python_ver)" >&5 -printf "%s\n" "no ($python_ver)" >&6; } - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Eggdrop requires python version 3.8.0 or higher" >&5 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python version is >= 3.8.0" >&5 +printf %s "checking python version is >= 3.8.0... " >&6; } +if test "x$ax_check_ver" = x"no"; then + python_avail="false" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no ($PYTHON_VERSION)" >&5 +printf "%s\n" "no ($PYTHON_VERSION)" >&6; } + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Eggdrop requires python version 3.8.0 or higher" >&5 printf "%s\n" "$as_me: WARNING: Eggdrop requires python version 3.8.0 or higher" >&2;} - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($python_ver)" >&5 -printf "%s\n" "yes ($python_ver)" >&6; } - fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes ($PYTHON_VERSION)" >&5 +printf "%s\n" "yes ($PYTHON_VERSION)" >&6; } +fi # Disable the module if test "x$python_avail" = "xfalse"; then From 6649e8dffcbff86fdb77c2ca4f160e6688966846 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Sun, 7 Jul 2024 22:28:49 +0200 Subject: [PATCH 317/320] Add tcl pbkdf2 function Patch by: michaelortmann Useful for tcl scripts that add SASL SCRAM mechanism which, when implemented in Tcl, are very slow. This PR will help with a fast replacement function exported by eggdrop. The new tcl function pbkdf2() returns as hexadecimal string by default and -bin by option, which is similar, to what tcllibs sha256() does (older tcllibs md5 had it the other way around), see https://core.tcl-lang.org/tcllib/doc/trunk/embedded/md/tcllib/files/modules/sha1/sha256.md --- doc/sphinx_source/using/tcl-commands.rst | 20 +++++++ src/mod/pbkdf2.mod/pbkdf2.c | 18 +----- src/mod/pbkdf2.mod/tclpbkdf2.c | 70 ++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 src/mod/pbkdf2.mod/tclpbkdf2.c diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst index 6a662052c..339c728c3 100644 --- a/doc/sphinx_source/using/tcl-commands.rst +++ b/doc/sphinx_source/using/tcl-commands.rst @@ -2200,6 +2200,26 @@ setflags [ [channel]] Module: filesys +PBKDF2 Module +------------- + +^^^^^^^^^^^^^^^ +encpass2 +^^^^^^^^^^^^^^^ + + + Returns: a hash in the format of "$pbkdf2-$rounds=$$" where digest is the digest set in the config variable pbkdf2-method, rounds is the number of rounds set in the config variable pbkdf2-rounds, salt is the base64 salt used to generate the hash, and hash is the generated base64 hash. + + Module: pbkdf2 + +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +pbkdf2 [-bin] +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + Returns: a derived key from the provided "pass" string using "salt" and "rounds" count as specified in RFC 2898 as a hexadecimal string. Using the optional -bin flag will return the result as binary data. + + Module: pbkdf2 + Miscellaneous Commands ---------------------- diff --git a/src/mod/pbkdf2.mod/pbkdf2.c b/src/mod/pbkdf2.mod/pbkdf2.c index 169d92bc8..2eda85038 100644 --- a/src/mod/pbkdf2.mod/pbkdf2.c +++ b/src/mod/pbkdf2.mod/pbkdf2.c @@ -8,6 +8,7 @@ */ #include "src/mod/module.h" +#include "src/mod/pbkdf2.mod/tclpbkdf2.c" #if OPENSSL_VERSION_NUMBER >= 0x1000000fL /* 1.0.0 */ #define MODULE_NAME "encryption2" @@ -108,7 +109,7 @@ static char *pbkdf2_hash(const char *pass, const char *digest_name, digestlen, buf)) { explicit_bzero(buf, digestlen); explicit_bzero(out, outlen); - putlog(LOG_MISC, "*", "PBKDF2 error: PKCS5_PBKDF2_HMAC(): %s.", + putlog(LOG_MISC, "*", "PBKDF2 key derivation error: %s.", ERR_error_string(ERR_get_error(), NULL)); nfree(buf); return NULL; @@ -223,21 +224,6 @@ static char *pbkdf2_verify(const char *pass, const char *encrypted) return (char *) encrypted; } -static int tcl_encpass2 STDVAR -{ - BADARGS(2, 2, " string"); - if (strlen(argv[1]) > 0) - Tcl_AppendResult(irp, pbkdf2_encrypt(argv[1]), NULL); - else - Tcl_AppendResult(irp, "", NULL); - return TCL_OK; -} - -static tcl_cmds my_tcl_cmds[] = { - {"encpass2", tcl_encpass2}, - {NULL, NULL} -}; - static tcl_ints my_tcl_ints[] = { {"pbkdf2-re-encode", &pbkdf2_re_encode, 0}, {"pbkdf2-rounds", &pbkdf2_rounds, 0}, diff --git a/src/mod/pbkdf2.mod/tclpbkdf2.c b/src/mod/pbkdf2.mod/tclpbkdf2.c new file mode 100644 index 000000000..8fa7bf8dd --- /dev/null +++ b/src/mod/pbkdf2.mod/tclpbkdf2.c @@ -0,0 +1,70 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * tclpbkdf2.c -- tcl functions for pbkdf2.mod + * + * Written by thommey and Michael Ortmann + * + * Copyright (C) 2017 - 2024 Eggheads Development Team + */ + +#include +#include + +static char *pbkdf2_encrypt(const char *); + +static int tcl_encpass2 STDVAR +{ + BADARGS(2, 2, " string"); + Tcl_SetResult(irp, pbkdf2_encrypt(argv[1]), TCL_STATIC); + return TCL_OK; +} + +static int tcl_pbkdf2 STDVAR +{ + int hex, digestlen, i; + unsigned int rounds; + const EVP_MD *digest; + unsigned char buf[256]; + char buf_hex[256]; + Tcl_Obj *result = 0; + + BADARGS(5, 6, " ?-bin? pass salt rounds digest"); + if (argc == 6) { + if (!strcmp(argv[1], "-bin")) + hex = 0; + else { + Tcl_AppendResult(irp, "bad option ", argv[1], ": must be -bin", NULL); + return TCL_ERROR; + } + } + else + hex = 1; + rounds = atoi(argv[3 + !hex]); + digest = EVP_get_digestbyname(argv[4 + !hex]); + if (!digest) { + Tcl_AppendResult(irp, "PBKDF2 error: Unknown message digest '", argv[4 + !hex], "'.", NULL); + return TCL_ERROR; + } + digestlen = EVP_MD_size(digest); + if (!PKCS5_PBKDF2_HMAC(argv[1 + !hex], strlen(argv[1 + !hex]), (const unsigned char *) argv[2+ !hex], strlen(argv[2 + !hex]), rounds, digest, digestlen, buf)) { + Tcl_AppendResult(irp, "PBKDF2 key derivation error: ", ERR_error_string(ERR_get_error(), NULL), ".", NULL); + return TCL_ERROR; + } + if (hex) { + for (i = 0; i < digestlen; i++) + sprintf(buf_hex + (i * 2), "%.2X", buf[i]); + result = Tcl_NewByteArrayObj((unsigned char *) buf_hex, digestlen * 2); + explicit_bzero(buf_hex, digestlen * 2); + } + else + result = Tcl_NewByteArrayObj(buf, digestlen); + explicit_bzero(buf, digestlen); + Tcl_SetObjResult(irp, result); + return TCL_OK; +} + +static tcl_cmds my_tcl_cmds[] = { + {"encpass2", tcl_encpass2}, + {"pbkdf2", tcl_pbkdf2}, + {NULL, NULL} +}; From 2cb88646ca0e226f68b67339d178d81e6cd946f5 Mon Sep 17 00:00:00 2001 From: Michael Ortmann <41313082+michaelortmann@users.noreply.github.com> Date: Mon, 8 Jul 2024 00:04:02 +0200 Subject: [PATCH 318/320] Fix --disable-tls breakage from pbkdf2 tcl --- src/mod/pbkdf2.mod/Makefile | 3 ++- src/mod/pbkdf2.mod/pbkdf2.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mod/pbkdf2.mod/Makefile b/src/mod/pbkdf2.mod/Makefile index 6cf40c584..38e70d0fe 100644 --- a/src/mod/pbkdf2.mod/Makefile +++ b/src/mod/pbkdf2.mod/Makefile @@ -36,4 +36,5 @@ distclean: clean ../../../src/compat/compat.h ../../../src/compat/base64.h \ ../../../src/compat/inet_aton.h ../../../src/compat/snprintf.h \ ../../../src/compat/explicit_bzero.h ../../../src/compat/strlcpy.h \ - ../../../src/mod/modvals.h ../../../src/tandem.h + ../../../src/mod/modvals.h ../../../src/tandem.h \ + .././pbkdf2.mod/tclpbkdf2.c diff --git a/src/mod/pbkdf2.mod/pbkdf2.c b/src/mod/pbkdf2.mod/pbkdf2.c index 2eda85038..faf7313d2 100644 --- a/src/mod/pbkdf2.mod/pbkdf2.c +++ b/src/mod/pbkdf2.mod/pbkdf2.c @@ -8,9 +8,10 @@ */ #include "src/mod/module.h" -#include "src/mod/pbkdf2.mod/tclpbkdf2.c" #if OPENSSL_VERSION_NUMBER >= 0x1000000fL /* 1.0.0 */ +#include "tclpbkdf2.c" + #define MODULE_NAME "encryption2" #include /* base64 encode b64_ntop() and base64 decode b64_pton() */ From d2ffcea0ee46efa9967caca7d8896c846e60a3ae Mon Sep 17 00:00:00 2001 From: Thomas Sader Date: Tue, 9 Jul 2024 22:44:34 +0200 Subject: [PATCH 319/320] Github Actions: Test OpenSSL 0.9.8 (#1642) --- .github/workflows/dependencies.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dependencies.yml b/.github/workflows/dependencies.yml index d76a5e6c7..246f35043 100644 --- a/.github/workflows/dependencies.yml +++ b/.github/workflows/dependencies.yml @@ -27,6 +27,24 @@ jobs: 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 @@ -39,7 +57,9 @@ jobs: 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 && tar xzf openssl-1.0.2u.tar.gz && \ + 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 From 41a0acc7b6fa707534b449e6a3866f5a55c8e708 Mon Sep 17 00:00:00 2001 From: Geo Date: Wed, 10 Jul 2024 10:38:21 -0400 Subject: [PATCH 320/320] Fix accidentally removed hostmask from #1585 --- src/mod/irc.mod/chan.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mod/irc.mod/chan.c b/src/mod/irc.mod/chan.c index 9124d428c..7899eed6e 100644 --- a/src/mod/irc.mod/chan.c +++ b/src/mod/irc.mod/chan.c @@ -429,6 +429,7 @@ static void kick_all(struct chanset_t *chan, char *hostmask, char *comment, flushed = 0; kicknick[0] = 0; for (m = chan->channel.member; m && m->nick[0]; m = m->next) { + sprintf(s, "%s!%s", m->nick, m->userhost); get_user_flagrec(get_user_from_member(m), &fr, chan->dname); if ((me_op(chan) || (me_halfop(chan) && !chan_hasop(m))) && match_addr(hostmask, s) && !chan_sentkick(m) &&