diff --git a/INSTALL b/INSTALL
index 44e691dbd..064b9ea37 100644
--- a/INSTALL
+++ b/INSTALL
@@ -64,8 +64,6 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier.
Note that you must use full path for every file to be correctly
installed.
- [The following is performed from the directory installed above.]
-
5. Since version 1.8, Eggdrop can use SSL to protect botnet links. If
you intend on protecting botnet traffic between Eggdrops, you must
generate SSL certificates by running:
@@ -84,6 +82,9 @@ Eggdrop uses the GNU autoconfigure scripts to make things easier.
Read docs/TLS for more info on this process.
+[The following steps are performed in the directory you just installed
+Eggdrop into from the previous step]
+
6. Edit your config file completely.
7. Start the bot with the "-m" option to create a user file, i.e. :
diff --git a/NEWS b/NEWS
index e0dbe26b2..44a6d3594 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,32 @@ Last revised: December 4, 2021
_________________________________________________________________
+Eggdrop v1.9.4:
+
+ General changes:
+ - Fixed a DNS bug causing Eggdrop to often hang on DCC or telnet
+ connections
+ - 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.
+ - Fixed some inaccurate log messages
+ - Fixed some format specifiers that could cause crashes in certain
+ situations
+ - Fixed logging of TAGMSG messages
+ - Fixed unspecified behavior of freeaddrinfo() on some BSD systems
+
+ Botnet changes:
+ - None
+
+ Tcl API changes:
+ - 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
+
+Eggdrop config changes:
+ - None
+
+
Eggdrop v1.9.3:
General changes:
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/configure.ac b/configure.ac
index 96e906230..f6c66bbae 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,7 +1,7 @@
dnl configure.ac: this file is processed by autoconf to produce ./configure.
AC_PREREQ(2.61)
-AC_INIT([Eggdrop],[1.9.3],[bugs@eggheads.org])
+AC_INIT([Eggdrop],[1.9.4],[bugs@eggheads.org])
AC_COPYRIGHT([Copyright (C) 1999 - 2022 Eggheads Development Team])
AC_LANG([C])
AC_REVISION([m4_esyscmd([misc/getcommit])])
diff --git a/doc/BOTNET b/doc/BOTNET
index d44584818..d3e700766 100644
--- a/doc/BOTNET
+++ b/doc/BOTNET
@@ -7,7 +7,7 @@ Botnet Sharing and Linking
WHAT IS A BOTNET?
- A botnet consists of one or more bots linked together. This can allow
+ A botnet consists of two or more bots linked together. This can allow
bots to op each other securely, control floods efficiently, and share
user lists, ban lists, exempt/invite lists, and ignore lists (if
sharing is enabled).
@@ -18,7 +18,7 @@ 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
diff --git a/doc/PBKDF2 b/doc/PBKDF2
index dd5b1a058..cbb4e5e81 100644
--- a/doc/PBKDF2
+++ b/doc/PBKDF2
@@ -66,8 +66,6 @@ there).
1. Ensure
-::
-
loadmodule pbkdf2
is uncommented in the config file (or added, if this is a config file
diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js
index aec678252..c0721a95a 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.3',
+ VERSION: '1.9.4',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
diff --git a/doc/html/about/about.html b/doc/html/about/about.html
index 7949b3d1c..aaa966ae2 100644
--- a/doc/html/about/about.html
+++ b/doc/html/about/about.html
@@ -6,7 +6,7 @@
- About Eggdrop — Eggdrop 1.9.2 documentation
+ About Eggdrop — Eggdrop 1.9.4 documentation
@@ -24,7 +24,7 @@
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.
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 Eggdrop cannnot guarantee the accuracy of account association at any given time.
+
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 assoicated 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 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 eserver, and then query for the account 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.
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 accuracy and can help with scripts that react to user commands/messages.
+
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.
The Eggdrop Tcl ACCOUNT bind is triggered whenver 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).
+
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.
A botnet consists of one or more bots linked together. This can allow bots to op each other securely, control floods efficiently, and share user lists, ban lists, exempt/invite lists, and ignore lists (if sharing is enabled).
+
A botnet consists of two or more bots linked together. This can allow bots to op each other securely, control floods efficiently, and share user lists, ban lists, exempt/invite lists, and ignore lists (if sharing is enabled).
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 @@
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
-
-
-
-
-
Returns: 1 if the specified user has the flags matching the provided mask; 0 otherwise
+
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. 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
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.
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.
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>”.
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.
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.
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 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”.
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.
ACCOUNT (stackable)
@@ -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.
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/sphinx_source/conf.py b/doc/sphinx_source/conf.py
index bcb0d64ed..77f7b8fe7 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.3'
+version = '1.9.4'
# The full version, including alpha/beta/rc tags.
-release = '1.9.3'
+release = '1.9.4'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/doc/sphinx_source/using/tcl-commands.rst b/doc/sphinx_source/using/tcl-commands.rst
index 360997675..2f9132808 100644
--- a/doc/sphinx_source/using/tcl-commands.rst
+++ b/doc/sphinx_source/using/tcl-commands.rst
@@ -13,7 +13,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, v1.4,
+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 modification. Commands which have
@@ -367,8 +367,6 @@ botattr [changes [channel]]
Module: core
-.. _matchattr:
-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
matchattr [channel]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -377,43 +375,7 @@ 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 |
-+------------+-----------------------------------------------------------------+
+ 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. 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
@@ -1374,7 +1336,7 @@ onchansplit [channel]
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).
+ 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.
@@ -2922,10 +2884,55 @@ 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 next section, you will see several references to "flags". The "flags" argument 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), or a "-" or "*" can be used to denote "any user". For example, a flag mask of "ov" would allow a bind to be triggered by a user added to Eggdrop with either the o or v global flags. A flag mask of of "-\|m" would allow a bind to be triggered by a user with the m channel flag. For more advanced information on how flag matching works, please see the matchattr_ description.
+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 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
diff --git a/doc/sphinx_source/using/text-sub.rst b/doc/sphinx_source/using/text-sub.rst
index 70bab7fff..92dfaf013 100644
--- a/doc/sphinx_source/using/text-sub.rst
+++ b/doc/sphinx_source/using/text-sub.rst
@@ -25,9 +25,9 @@ respective values:
+------+---------------------------------------------------------+
| %B | bot's nickname (i.e. "LamestBot") |
+------+---------------------------------------------------------+
-| %V | current Eggdrop version (i.e. "eggdrop v1.9.3") |
+| %V | current Eggdrop version (i.e. "eggdrop v1.9.4") |
+------+---------------------------------------------------------+
-| %E | long form of %V (i.e. "Eggdrop v1.9.3 (C) 1997 Robey |
+| %E | long form of %V (i.e. "Eggdrop v1.9.4 (C) 1997 Robey |
| | Pointer (C) 2010 Eggheads Development Team") |
+------+---------------------------------------------------------+
| %C | channels the bot is on (i.e. "#lamest, #botnetcentral") |
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
diff --git a/src/flags.c b/src/flags.c
index ce60b2e3d..26285fdbd 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/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/compress.mod/configure.ac b/src/mod/compress.mod/configure.ac
index 8602d757a..aa6c416e4 100644
--- a/src/mod/compress.mod/configure.ac
+++ b/src/mod/compress.mod/configure.ac
@@ -4,7 +4,7 @@ AC_PREREQ(2.58)
sinclude(../eggmod.m4)
-AC_INIT([Eggdrop Compress Module],[1.9.3],[bugs@eggheads.org])
+AC_INIT([Eggdrop Compress Module],[1.9.4],[bugs@eggheads.org])
AC_CONFIG_SRCDIR(compress.c)
AC_CONFIG_AUX_DIR(../../../misc)
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\\"
diff --git a/src/mod/dns.mod/configure.ac b/src/mod/dns.mod/configure.ac
index 0b850a53d..cbb695e5b 100644
--- a/src/mod/dns.mod/configure.ac
+++ b/src/mod/dns.mod/configure.ac
@@ -4,7 +4,7 @@ AC_PREREQ(2.60)
sinclude(../eggmod.m4)
-AC_INIT([Eggdrop DNS Module],[1.9.3],[bugs@eggheads.org])
+AC_INIT([Eggdrop DNS Module],[1.9.4],[bugs@eggheads.org])
AC_CONFIG_SRCDIR(coredns.c)
AC_CONFIG_AUX_DIR(../../../misc)
diff --git a/src/tcluser.c b/src/tcluser.c
index 85e5587aa..987a0e6dc 100644
--- a/src/tcluser.c
+++ b/src/tcluser.c
@@ -269,8 +269,9 @@ static int tcl_matchattr STDVAR
nom = 1;
if (!plus.global && !plus.udef_global && !plus.chan &&
!plus.udef_chan && !plus.bot) {
- Tcl_AppendResult(irp, "Unknown flag specified for matching", NULL);
- return TCL_ERROR;
+ /* No flags (e.g. "-" or "+" or "-|-" matches anyone */
+ Tcl_AppendResult(irp, "1", NULL);
+ return TCL_OK;
}
}
if (flagrec_eq(&plus, &user)) {
diff --git a/src/version.h b/src/version.h
index f173917d1..202b920d1 100644
--- a/src/version.h
+++ b/src/version.h
@@ -26,6 +26,6 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#define EGG_STRINGVER "1.9.3"
-#define EGG_NUMVER 1090303
-#define EGG_PATCH "gotmsg"
+#define EGG_STRINGVER "1.9.4"
+#define EGG_NUMVER 1090400
+#define EGG_PATCH "alpha"