The new implementation calls into strlen() and memmove(), and is safe to use even if the arguments don't
point into the same string.
The return value is now the same as the first argument (just like strcpy()), but no existing callers care
about the return value anyway.
This code contained a bug where any argument to /HISTORY that _didn't_ start with "-CL" would clear history,
so no number or pattern argument could successfully be passed.
With this fix only an argument that case-insensitively matches "-clear" will clear history, so a pattern
argument will also work correctly.
This should have no functional effect, but groups together the variables required to
'rewind' prepare_display() to a particular point in the source string all together.
This also counts beeps, tabs and non-destructive spaces in the same way.
To maintain historical behaviour, BEEP_MAX of zero indicates no beeps allowed (the same
as /SET BEEP OFF), but TAB_MAX and ND_SPACE_MAX of zero indicates no limit.
This fixes a regression in commmit 70ac43ce77,
where the original screen size would be used to scroll after the terminal had
been resized. If the screen was shrunk, this caused display problems when
running under GNU Screen.
Using output_screen size means that it stands a better chance of working on
non-default screens, too.
There should be no change in behaviour. Replaces a code block of the form:
if (a || b)
{
if (c && a)
{
/* one */
}
else if (b)
{
/* two */
}
}
with the simpler equivalent:
if (c && a)
{
/* one */
}
else if (b)
{
/* two */
}
Change remove_all_dcc_binds() so that it only removes DCC binds for the module supplied, as it's supposed to.
get_dcc_type() should ignore the first entry in dcc_types[] ("<none>") otherwise the client will try to
respond to DCC requests with that name.
Explicitly track the number of entries in the dcc_types[] array rather than using a NULL terminator. This
allows us to change dcc_types[] to use NULL entries to mark unused slots in the array, rather than pointers
to entries with a NULL .name element. Together, this means that the dcc_types[] array is only resized when it
actually needs to be grown and removal works correctly (without eg. prematurely marking the end of the array).
Make add_dcc_bind() fail if the requested DCC type has already been bound by a module (this still allows one
module at a time to rebind a built-in DCC type). Previously the behaviour was ill-defined in this case.
The idea here is that if you have a module which implements a new DCC type that is essentially
a lightly-modified version of CHAT or SEND you can reuse these functions.
This function gets the status of a single umode flag identified by umode char rather than
internal server flag number.
This also lets us remove all the USER_MODE* constants because they're no longer required.
Invert the sense of the +w check in e_wall() - we only echo our OPERWALL if we're *not* +w,
because if we are +w then the server will echo it back to us anyway.
The idea here is not to expose the internal server implementation for storing umodes,
but instead have callers just work in terms of umode characters.
The 'possible umodes' have always been the same for all servers anyway. We just assume
that [a-zA-Z] is the bounding set.
server.ctx is now allocated once for each server on first connection, then reused for subsequent connections.
server.ctx wasn't being cleared when the server was closed (as server.ssl_fd is), so this was causing
reconnection to fail until try_connect() got called.
This also removes the last uses of the CHK_* macros in ssl.h, so remove them.
This avoids leaking memory.
Also change to always call SSL_shutdown() regardless of whether a QUIT message was sent. No
need to call SSL_shutdown() from write_to_server(), close_server() will do it for us.
Remove "Closing SSL connection" message.
The -s flag resets after the next server on the command line, but it was also incorrectly resetting
if a nickname was seen as well. This meant that a command line like this failed to use SSL:
BitchX -s -p 9999 gauze irc.choopa.net
Also update the help text to correctly reflect the operation of the -s flag.
Reported by gauze.
It is only called in one place, where from_server is already set to the same as the argument.
Rename rebuild_all_ison() to rebuild_notify_ison_all().
Make rebuild_notify_ison() and rebuild_notify_ison_all() static, they are only called from
this file.
There's no need for the conditional compilation - tcl_bx.h itself has the WANT_TCL guards
necessary.
This makes generating the Makefile target dependencies easier.
The only external change here is that it now always sets *cnt to 0 when it returns NULL
Previously, it could set it to -1 in some cases, in particular when dll_commands is NULL.
This led to a bug where /HELP would show the wrong number of matching commands, because it
added the return value of find_dll_command() to the number of matching internal commands.
Also fixes a set-but-unused-variable warning.
Rename global variable 's' to a longer name. Rename function 'ignore' to a name that reflects what
it actually does.
Make sigint_handler() and my_exit() static, because they're only used in this file.
Remove the 'how' parameter to rsindex(), making it reverse-search for only the first matching character,
as sindex() already does. There are only two callers, and one already passed a hardcoded value of 1.
Also change rsindex() so that it starts searching at the character BEFORE the passed in position. This
makes it easier to repeatedly call rsindex() in a loop to search for the Nth matching character, and
also fixes a technical instance of undefined behaviour where a pointer is decremented to point before
the start of the string.
Remove the 'mark' parameter to strsearch(). Instead, always forward-search from the beginning of the
string and reverse-search from the end of the string, as this is what the two callers want anyway.
Bump the module ABI version because these functions are exported to modules.