CVS log for epic5/source/ircaux.c |
![]() |
Request diff between arbitrary revisions
* Add support for /ignore'ing a server (for undernet) * Add --without-wserv flag to configure (see UPDATES) * Add checks in configure for posix-like job control * Add support so no job control -> no wserv support.
* Phase two of larne's patch is to isolate features that require job control * You can #define NO_JOB_CONTROL to turn off fork/exec type stuff. * Soon, the configure script will auto-grok this.
* Roll in a bunch of changes from larne to make epic5 more vms-friendly * Rename if.h -> ifcmd.h (larne) -- Make sure you rerun configure! * Run make depend to pick up name change of if.h * Check for <sys/param.h> in configure (larne) * Extern funcs are case insensitive in strict c90, fix (larne) * Rename options -> options.h since vms requires a dot in filename (larne) * Change "readonly" -> "rdonly" since "readonly" is a symbol in vms. (larne) * Pull in "compat.h" for gailib.c and glob.c (larne) * Set stdout to be explciitly line buffered at startup (larne) * Returning a value from void functino forbidden by strict c90. fix (larne) * Fix some compiler warnings that were lying around. * There are more changes forthcoming, these were the easy ones.
* Roll forward portability changes from epic4-2.10 (larne) * This also includes term.h -> termx.h -- Make sure you rerun configure!
* Add /on signal (pegasus) * Fix build on interix (twincest) * Fix compile warnings and a c99-ism * Fix another panic() causable by /echo. ugh.
Fix all the compile warnings that I let go way too long.
* Put 'sig.inc' in include rather than source to fix build for r/o srcdir * #undef strtoimax() if we are going to define our own to fix build * Fix printf() qualification for syserr() * Fix $write(@W<num> ...) so uppercase W works * Nix strip_control() which isn't used any more. * Make #define WINDOW_CREATE go away -- it's now mandatory. * Reorganize do_screens() in prep for future work
* Fix new math parser comparison operators to work properly with numbers. * Add function $check_code(), looks for unmatched parens or braces in string.
* Add a new internal function prepare_display2() a reduced version of p_d(). * Add a new internal function fix_string_width(), the guts of $fix_string() * Fix /set indent to use prepare_display2(). Now you can use ^C codes. yay! * Fix fd leak if fork() fails for /exec. * Fix window toplines so they extend the width of the screen like statusbars.
Fix build
* Everything below is from fusion (Alexander Grotewohl) * If libarchive is present, support zip/tar files in /load and $open() * Create a new "epic load file" data type that wraps FILE or libarchive. * Extend uzfopen() to use the new "epic load file" data type. * Extend the loader to honor the new "epic load file" data type * Extend $open() [read only for now] to honor the epic load file data type * Not all operations are supported on zip files. * Add new function $fix_width() returns string with a guaranteed printable len * End of things contributed by fusion (Alexander Grotewohl)
* Create aliases for [url|b64][en|de]code, sedcrypt, and sha256 into builtins. * Comment out builtin [url|b64][en|de]code, sedcrypt, sha256 builtin functions. * Change /xquote -u to use xform() instead of urldecode(). * Change dcc_url[en|de]code to use xform() instead of urldecode(). * Change /on ssl_server_cert to use xform() isntead of urldecode(). * This allows me to comment out old urldcode/base64decode stuff. yay!
* Fix apparantly bogus test that prevented .files from being /load'ed (rb wjr)
* Add split_string() which converts a general delimited string to (char **) * Add $splitw(delim string) which converts delimited string into a dword list * Use $unsplit() to convert $splitw() into a uword list (see UPDATES) * Fix ./configure --without-ipv6 to allow compiling on opensewer.
* The dot (".") and tilde ("~") are unreserved characters in rfc3986 (urlencode)
* Revert commit 1498 (the dcc stuff) -- it was half baked. * Fix warnings found with --with-warns.
* Commit 1500! * Added function $isutf8(). This function "guesses" whether or not a string is UTF-8, and will return the number of UTF-8 symbols, if it is recognised as UTF-8.
* Fix missing NULL for $hookctl(list ...) [rb howl] * Fix various other issues that valgrind found (yay!)
--- This is a bunch of stuff I've been sitting on while I wait for howl to finish what he was doing. --- * Add support for ./configure --localdir * Add support for ./configure --with-iconv=/usr/local * Add support for looking for iconv in configure in various places * Make configure check for nanosleep(). * Add function decls for [sg]et_server_realname() * New version of screen.e * Change "filename" to "local_filename" in dcc's, in prep of further work. * Un-revert a few minor things.
* Added $serverctl(get/set -1 realname/default_realname). * $Y now is a synonym for $serverctl(get -1 realname). * Added $xform(iconv fromcode/tocode ...) wrapper around iconv(3). With this epic5 takes babysteps towards supporting Unicode.
* Add /SET DEFAULT_REALNAME and DEFAULT_USERNAME * Add scripted /set realname and /ircuser in builtins for backwards compat.
* Fix configure so --with-threaded-stdout pulls in -pthread * Include some commented out code that I'm ruminating over for input line * Create CURSOR_LEFT and CURSOR_RIGHT macros to avoid assigning LOGICAL_CURSOR * Default xforms now don't need to be ordered, or have default refnums.
Make $xform() support dynamic at runtime. I'll be using this soon to remove the #ifdef HAVE_SSL in ircaux.c
Remove u_* bsd-isms so we can compile with -ansi on linux.
* Fix it so it compiles without ssl support again. * Add "ALL" $xform() encoder, returns all valid xforms
* Allow encryption $xform() handlers to reformat their keys, so we can... * Add SHA256/AES/AESSHA $xform() encoders
* Fix happykey(). Sometimes, I just don't pay enough attention. * Don't trim 1 too many chars on incoming encrypted messages. Important! * Fix buffer sizes being too small to hold buffer for enc/dec short strings. * Add $xform() handlers for blowfish and cast5 * Whip the $xform() callback functions into usable shape. * Fix base64 encoding both via $xform() and $b64encode(). * Rewrite $xform(), see UPDATES. Strong crypto now supported! YAY!
* Add a server param to what_channel() so i can use it in send_text() later. * Add length of 'meta' arg to ciphers so 'meta' doesn't have to be c string
Flush recent changes.
* Add arg to panic() controlling whether panic is sent via QUIT (rb black)
* Make the build work with socks5 again, for freebsd ports support * Add malloc_strcat3_c(). * Optimize malloc_strcat_word_c
* Change last_arg() so it dequotes the retval according to the word type * Change $pop() so it only takes an lvalue * Change $revw() to use the last_arg() improvements * Improve /xdebug so it takes a block as an argument * Improve $push() so it pushes the hole argument as dword
* Add support for "conditional dequoting" in universal_next_arg_count * Change next_earg() and next_func_arg() to use the conditional dequoting. * This permits me to implement $qword() which returns a $word() literally! yay!
This is the start of a major project to normalize the behavior of word handling in built in functions. The project involves stipulating that every place that handles a "word list" define what a "word" is and use it consistenly, and to output the same type of "words" that it accepts as input. This leverages /xdebug dword to control optional support for dwords in many built in functions.
* Make $urlencode() rfc3986-ish, converting all non-unreserved chars * Change ServerInfo to use const char's since we don't modify them directly. * Reorganize how ServerInfos are used, into "temporary" and "permanent" types * Convert Server's use of ServerInfo's into safe permanent types. * Add /server -update <refnum> <desc> to change server descs on the fly. * Fix typo in /invite. * Fix 'country' script by wrapping it with xdebug dwords.
Don't call happykey() on a plain text password.
* MORON. Don't replace a 'return' with something that doesn't return!
* Fix valgrind bugs that nullie found (yay!) * Fix bug with '' in the new math parser being NULL instead of empty string * Add support for @#chan via notices to show up in #chan's window
* Desupport dwords in a lot of builtin functions (see updates) [nullie] * Make /window foo kill fail for want of 'foo' (see updates)
Fix a typo reported by kev, who never ceases to astound me with how dilligently he reviews the cvs changes!
* Fix finite()/isfinite() madness. * Look for clock_gettime() in -lrt for ubuntu. * Automatic reconnect from nullie. yay! * Change /xecho -v to always output to current window if it's visible. * Fix /on's with arglists, so lower serial nums don't corrupt $*. [rb nullie] * Fix memory leak with $url(en|de)code() [rb nullie] * Change /server - so it calls disconnect() directly * Fix const correctness problems with sha2.c
* Fix /whois so trailing spaces don't look like real words. * Change ltoa() to my_ltoa() for hpux's sake * Change finite() to isfinite() for hpux's sake
___ WARNING ___ This stuff is all wildly un(der)tested. I will get to that soon! But I'm too excited about this to sit on it. * Add AESSHA256 support (AES256 using the SHA256 digest of your passkey) * Rename "EXTCRYPT" to "PROGCRYPT" * Migrate SED support from crypt.c to crypto.c * Integrate SED and extprog support into the mainline [de]cipher_message() * Refactor [de]cipher_message() to be less lame. * Support "anycrypt" support (AESSHA, AES, BLOWFISH, CAST5, SED, PROG) * Include sha256 implementation from Karll. Thanks Karll! * Unify the ctcp handling of all crypto ctcps * Add $sha256() function to test sha support (digest) * Make funcs in crypto.c static and just expose [de]crypt_msg(). * This finishes the divide between crypt.c (front end) and crypto.c (back end) * Fix a gazillion compiler warnings and sort out const/unsigned char issues.
* Support cast5/blowfish encryption a la ircII. * Fix build for non-ssl users.
* Eliminate the third argument to expand_alias(), the statement spanner. * Rename parse_line() to parse_block() to better reflect its duties. * Make parse_block() static. Everything needs to call runcmds() now. * Eliminate the local-stack-creating feature of parse_block(), callers do this. * Rename 'line' to 'stmt' in parse_statement(). * Sort of forget to re-implement /set cmdchars. The / is the cmdchar. * Try to optimize parse_statement() and next_statement() some.
Fix various compiler issues.
Fix up the url encoders to encode the + char.
Implement xforming for CTCP.
* Add partial implementation of $xform() (see UPDATES) * Add shell of implementation of new_send_text() which i hope to finish... * Fix bug in $b64decode()
* Switch users of LEVEL_CRAP to LEVEL_OTHER. yay! * Whack some unused functions and decls, make *toa() funcs return const. * Roll get_window_by_name() into get_window_by_desc(), it's only user.
* Include <stddef.h> if we can, for no particular reason... * Nix now unused mangle_line(). yay! * Use (intptr_t) instead of (intmax_t) to treat pointers as integers... * Try to handle failures from the dns helpers with more grace.
For a little while at least, $stripcrap() acts differently from the /set mangle_* type stuff. This is a work in progress. Please be patient =) * Nix the last vestiges of the unsupported ROM_CHAR feature. * Nix some now unused function decls in screen.h * Add new_normalize_line, which is a unified normalizer/mangler (*gulp*) * Cut over $stripcrap() to use new_normalize_line (*double gulp*) * Rename "ANSI" mangle type to "NORMALIZE", but still accept "ANSI" * Nix the gxlate table, and change ^T from State 4 to State 6 character.
* Fix some bugs, naturally. * Nix the (apparantly) unused normalize_never_xlate global variable. * Add function comments to some stuff in screen.c (comments! the horor!) * Move read_esc_seq so it's closer to read_color_seq. * State 1 chars (C1 chars) are stripped unless /set allow_c1_chars * State 6 chars (Control chars) are stripped unless TERM_CAN_GCHAR is set * State 4 chars (Highlight chars) are handled singly * Plus, ALL_OFF is not generated unless you do an ALL_OFF! HUZZAH!
* Fix $stripc() to be a clone of $stripcrap(), just to strip colors * Nix the now unused strcpy_nocolorcodes(). * Fix up read_color_seq() to return an offset, not ptr, a la skip_ctl_c_seq(). * Fix mangle_line() to use read_color_seq instead of skip_ctl_c_seq * Nix the now unused skip_ctl_c_seq(). Only one thing now reads ^C's! HUZZAH. * Rename skip_esc_seq() to read_esc_seq() just because. * Begin moving logic|display_attributes towards a change model system * Begin a radical change on how characters are given "state" (see source) * Basically 8 bit chars (except c1 chars) are treated as "always printable" now * Mangle a few other callers to logic_attributes, i'm sure these are b0rked.
* Split handling of ESC seqs out of normalize_string() into skip_esc_seq().
Add configure glop for intmax_t for c90 systems. Will start using later.
Round 1 of an attempt to support 64 bit ints without breaking the build for systems with only 32 bit ints (ie, vms). I will phase in support for c99's "intmax_t" and hacks for backwards compatability "soon".
* Improve /dcc get * Fix warnings
Add humanize_number() and fix compiler warnings. more to follow!
* Add "UNPRINTABLE" as a mangle type, remove all non-printable chars.
* Fix up how relative filenames are found with /load. See UPDATES * Add ascii_str[n]icmp and rfc1459_str[n]icmp for use with alists. * Make nick+channel name lookups handled according to 005 CASEMAPPING!
* When a window is resized, make sure scrollback is bigger than new size. * Add multiple stricmp tables, "ascii" and "rfc1459" * Make all string insensitive compares use "ascii" * Add black's ornamentation on the addset script. * Fix some regression scripts * Fix pf bugs with various scripts. * Add the [$func](args) capability to the new math parser. * Add the === and !== literal equivalence (case sensitive) operators. * Sort of set the case sensitive mapping to use in the 005 handler (hack!) * Fix error recovery of ssl connections.
* Check for arc4random() in configure, don't use compat.c version if possible. * GC "fill_it_out" code which has been deactive for a while. * Fix translation casting error for zlonix * Allow current_package() to return NULL, handle that as special case. * Refactor the startup loading stuff * Move a couple of loads out of basical and into global.
* Change "ERROR --" to "INFO --" to not alarm people as much. * Change a few other warnings to not be so alarming. * Change new_realloc() to not move ptr if it is big enough to hold new size. * Fix all the status_* sub-formats to not have any hardcoded size limits.
* Add --with-multiplex=[select|poll|kqueue|pthread] to configure
* Check thread-safety of SSL in configure when using pthreads.
* Don't unconditionally skip leading :'s in symbol names.
* When calling functions, handle skipping leading :'s specially.
* Add support for pthread locking for ssl to ssl.c
* Add %{2}+ and %{3}+ status expandos that only show the mode string.
* Use AI_ADDRCONFIG flag to tell getaddrinfo() we only want addrs we can use.
Fix more compiler warnings.
* Refactor the error stuff by eliminating my_strerror() and dgets_errno. * Error messages are now delivered on multiple levels as info is available. * This may get annoying, but it's a lot more accurate now! * Change inet_* functions to return int's since their retval is unused. * Add a new internal "syserr()" function that generates formatted errors. * Syserr's look like say()s but they act like yell()s. (can hook with /on yell) * Keep an counter in the server stuff so we can count off as addrs are used. * So the error message in /ON DCC_LOST is always just "ERROR" now. * Fix various compiler warnings and stuff. * Add $hookctl(GET HOOK <ref> STRING), return /load'able format of ON * Fix some debugging outbound in switch_hostname(), doh! * Roll set_socket_options() into a new Socket() function. * Roll connections to AF_UNIX sockets into the mainline stuff. * Roll nonblocking/connect/nonblocking into Connect(). * Add AF_UNIX support to Getnameinfo() to remove annoying errors. * When doing recovery from EBADF in select, only check fd's we're using * Just puke if configured for kqueue() and kqueue() fails. * Don't puke on default 353 output if the userlist arg is missing. (for ratbox) * Permit doing /window name to change case of window's name.
Fix more bugs.
Fix $sar() and $msar() so the "new" string can contain the "old" string as part of it (which before this commit infinitely substituted until failure)
* Refactor $sar() and $msar() so they share as much code as possible. * Refactor newio, support select/kqueue/poll (#define's in newio.h) * ... Getting closer to not needing select! * Fix SSL. * Fix a bunch of misc compiler warnings * Remove restrictions on /QUOTE, so there! * Add pthread support to newio for larne. HUZZAH! * I'm sure a zillion things are broken, so it's time to test!
* Hide ArgListT in alias.h to only those who need it, to save numbers.c * Fix up a lot of compile warnings all over the place. * Some changes to $hookctl() might need feedback from howl... * Fix vhost support so we can do inbound sockets again.
* Refactor window_check_servers() to work with server's current window only. * Roll forward all the rest of changes from epic4 (i think) * Add /ON NEW_NICKNAME, when epic needs a new nickname from you. * Run 'make depend', fix compile errors, fix 'environment' script
* After connect()ing to a server, save the remote peername * This fixes $serverctl(GET <num> PORT) * This also fixes $servports(), which should work as (not) documented. * Fix for notify_signon default handler, from larne. thanks! * Add $serverctl(GET <num> ADDRFAMILY), returns "ipv4", "ipv6" or "unix" * Allow /hostname <ipv4>/<ipv6>, separately set v4/v6 vhosts! (see UPDATES)
* Fix $logctl() from epic4. * ALL/ALL_OFF fix from epic4.
* New /ISON bells and whistles as per UPDATES. * Changes to /reconnect, /server -a, /on server_established and remove_from_comma_list() as per KNOWNBUGS.
Add $winquery() and $hookctl(), written by howl.
Fix memory leak.
* Add a bunch of stuff to debug the who_queue to find and fix adm's bug.
* Minor changes to dcc loss processing and the commandqueues script. * Applied Howls shebang patch.
* Numerous new and changed features as per UPDATES. * Better handling of damaged /who x,y responses.
* Nix /save and pray nobody notices. * Implement pmatch_* stuff in alias.c to use the unified symbol table. * Commands, functions, and expandos now 100% integrated. HUZZAH! * Reimplement $get(set|command|function)s() to use the pmatch_* stuff. * So they now pick up changes at runtime. HUZZAH! * Allow built in /set to be conditionally added to the "set bucket" * Don't put user-created /set's in the bucket * Allow user to replace one user-created /sets but not builtin sets. * Allow mangling of ALT_CHAR -- how did this ever get missed? * Fix $currchans() so it works the way the documentation says it does. * Fix some const correctness issues, introduce others. bleh.
Sync up with all the bug fixes from epic4.
* Refactor IrcVariable to not depend on having the varname. * This will lead to multiple hard links to the same /set value in the future. * Nix the 'name' and 'hash' values in IrcVariable, no longer needed. * Make all uses of "realname" use the /set realname variable (rb adm) * Nix the global "realname" variable, use /set realname for all. * Fix bug with free_bucket() * Fix compile warnings in vars.c * Store built in variable xref table in a bucket. * When changing a user-created /set, start calling the user's scriptback * Allow the user's scriptback to call /set to override the user's value. * Tell the user that they created a new /set.
* Add the rest of funcs to do builtin var support in unified symbol table.
* Change the unified data type for builtin funcs to (IrcVariable *).
* Implement "buckets", for O(N) scans of the unified symbol table.
* Change DEFAULT_USERINFO to DEFAULT_USER_INFORMATION to match the /set.
* Make the *_VAR stuff in vars.h 'int's.
* Change USER_INFO_VAR to USER_INFORMATION_VAR to match the /set.
* Change CLIENTINFO_VAR to CLIENT_INFORMATION_VAR to match the /set.
* Change STATUS_NICK_VAR to STATUS_NICKNAME_VAR to match the set.
* Put the defn of (struct IrcVariable) in vars.h, to expose to unified table.
* Convert all uses of now defunct (enum VAR_TYPES) to (int)
* Create "make_string_var_bydata", converts (IrcVariable *) to malloc string
* Change get_var_alias() to return (IrcVariable *)
* In that function that outputs set values, use make_string_var_bydata().
* Change hardcoded *_VAR uses into pointers to *_VAR, for deref at runtime.
* Major revamp of vars.c, to wholly create built in vars at runtime.
* Built in variables are stored in unified symbol table and vars.c xref array.
* *_VAR values now point through xref array to the actual variable data.
* Nix the now unnecessary get_variable_index().
* Add create_user_set(), backend for /SET -CREATE
* Add /SET -CREATE <name> <type> [{<code>}]
* Need to go back and implement the {<code>} thing.
* Revamp how /set works, using buckets, to implement auto-completion.
* $getsets() is not implemented yet, do that too.
* When looking up $<setname>, use the unified symbol table. HUZZAH!
* Begin massive refactorization of alias.c, redefining "Alias" as "Symbol" * Refactor parse_line() with a bunch of front end call_* functions. * And a general parse_line() front end, "runcmds()". * Roll builtin expandos in with the user variables * Roll variables and commands together into one name space. HUZZAH! * Nix the caches for the global name space, for now. * I definitely broke /stack alias|assign here. I'll fix it later. * Inline expandos are now officially strings instead of a single char. * Fix bug with $unshift() that popped up. * Move after_expando() to ircaux.c. I think it belongs there more.
GC a bunch of useless cruft and stuff.
*********** DONT RUN THIS -- IT'S WORK IN PROGRESS -- DONT RUN THIS *********** * Import epic4 commits 674 through 692, inclusive. * Import epic4 commits 693 through 710, inclusive (epic4-2.0 final) * Change _X and _Y macros to LEVEL and LEVELMASK for linux (sigh) * Add a searchbuf() 8 bit clean byte-finder for future use. * Convert flood checking, ignore checking, lastlog, logfiles to int masks. * Convert message_from to int masks. *********** DONT RUN THIS -- IT'S WORK IN PROGRESS -- DONT RUN THIS ***********
Merge changes from epic4 commits 674 to 692, inclusive.
* Allow client_connect() to be nonblocking * Allow Getaddrinfo() and Freeaddrinfo() to be called extern. * Track writable sockets in 'global_max_fd' too. * Keep a list of AI's for server addresses in the server code * When server connection lost before registration, use the next AI * Implement set_server_status(), which controls where server is in lifetime * Nix reconnect(), which is replaced by close_server + set_server_status(). * Nix server_reconnects_to(), we no longer reconnect to servers. * Make /xdebug server_connect the default for this commit at least * Call window_check_servers() every time through io(), because... * Make window_check_servers() look for disconnected servers and restart them. * Add add_mode_to_str() which adds a channel or usermode to a string (sorted) * Make usermodes use add_mode_to_str() * Make channel modes use add_mode_to_str() * Now modes are not stored in bitmasks, not hard-coded at compile time. HUZZAH! * Nix "inactive" field in channels, channels are thrown away at disconnect * Don't allow channels to move between servers, natch. * Nix all the code to handle disconnected channels and such. * Use change_window_server() to move windows to new servers, because... * Make window_check_servers() auto-close windowless servers. * Make change_window_server(<server>, NOSERV) cause a disconnect from <server> * Don't honor /set auto_reconnect, we don't ever reconnect. * Fix printf() error in /on kick default output * Add new server state, SERVER_RECONNECT which means "i can be connected" * So now SERVER_CLOSED means "don't reconnect me" * Allow /server, /window server, and /reconnect to change CLOSED -> RECONNECT * Make server connections nonblocking. * Server connections are now nonrecursive, nonblocking, multi-protocol. HUZZAH! * GC a bunch of server code dealing with reconnection we don't use now. * Don't call window_check_servers() other than io() for sanity reasons. * Make /window server just change server, let w_c_s() bootstrap connection * Remove many window->channel->server sanity checks.
Const correctness madness!
Make 'empty_string' (const char []). Now we're cooking with gas!
* Nix auto-append-of-$* feature (args_flag to expand_alias/parse_inline) * Fix provided scripts to add $* when necessary. * Fix up Makefile, configure, et al, to use epic5/ directories.
* Make inet_vhostsockaddr() extern so dcc can use it * Make dcc_open() use inet_vhostsockaddr() to bind /hostname to dcc conns * Don't allow -b and -q, or -b -and -s, as they cause deadlocks/panics * Fix casting error that caused $urlencode() of high bit chars to segfault * If swapping in a window that has no room for double status, recalculate all * If double-on in a window that has no room for it, recalculate all
* The last argument to open_file_for_write() needs to be lowercase. * Add $numlines() from fudd. EPIC4-1.2.3!
More compiler nits fixed. Nothing worth fretting over.
* current_window_priority should be global variable * Valgrind is my hero -- fix buffer underruns with mangle_line(). * Make the "current input window" its server's current window on user input.
From previous commit... * Fix urldecode * /lastlog -msgs 3 is obliged to skip back 3 msgs, not just 3 lastlog entries. * Fix warnings in gailib.h From this commit... * Fix some const correctness issues * Make message_to() take an (int) and not (unsigned) so we can pass in -1. * Fix some arglist regression tests to reflect new extractw semantics. * Fix uninitialized variable in ok_to_output() that caused panics.
See KNOWNBUGS
* Fix panic with $joinstr() * Fix compiler warning comparing pointer against integer * Fix word appender to NOT USE DOUBLE QUOTES if /xdebug extractw is off! * Fix the word appender so it actually works right.
* Numerous updates/changes/fixes to DCC, functions, scripts, /EXEC, the new math parser, as per UPDATES and KNOWNBUGS. One potential incompatibility is in the change to $open(). (as per UPDATES)
* Add /set wserv_type, either "xterm" or "screen". * Add malloc_strcat_word_c, add a single word to word list, with "" support * Convert a bunch of stuff to use malloc_strcat_word_c to honor ""s right. * GC a bunch of unused code.
Implement "privleged yells" which allow syou to do /set debug 7 at the same time as /set output_rewrite. Yea~!
Make ^ and ~ equivalent since all irc servers do already...
Make some compile warnings go away by using (intptr_t). I hope this doesn't bite me -- every system I checked has (intptr_t)..
* Don't prohibit universal_next_arg_count() from returning empty_string.
* Fix time functions to take (const Timeval) if they don't change the arg. * Create a special handler for /squit to avoid sending QUIT * to server. * Protect some IPv6 stuff i added recently to dcc with #ifdef INET6. Ooops. * Hack up $repeat(<num><space><space>) so it works again. ugh. * Hack up /set <variable><space><space> so it works again. ugh. * Dont allow /timer -repeat -1 0 because that busy-loops. * Add shell of $windowctl() which will be filled in going forward.
Commit #555: * Add #define MINIMUM_CLOCK_INTERVAL and MINIMUM_MAIL_INTERVAL in config.h * Add #define DEFAULT_CLOCK_INTERVAL and DEFAULT_MAIL_INTERVAL in config.h * Add reset_system_timers(), do_update_clock(), and set_cpu_saver_after() * Add time_to_next_interval(), general form of time_to_next_minute(). * Add get_clock() and reset_clock() to replace update_clock(). * Make remove_timer() an extern function so i can delete timers. ;-) * Add /SET CLOCK_INTERVAL and /SET MAIL_INTERVAL * Make $T use the static clock. * Reorganize system timers 1 and 2 into four timers: * - CPU SAVER timer, checks for idleness, to turn on cpu saver * - CLOCK timer, updates the status bar clock periodically * - MAIL timer, checks for new mail periodically * - NOTIFY timer, checks for others on irc periodically * The above three honor "cpu saver" mode. * Nix the old "do_every_minute" timer. * Reorganize the clock generation stuff into "reset_*_clock" functions * Generate the clock statically; only update it from the CLOCK timer * Add reset_system_timers() which regenerates all four system timers. * Don't set system timers in main, call reset_system_timers() instead. * Don't enforce "notify interval" in do_notify(), handle that in NOTIFY timer. * Comment stuff in words.c
Commit 552 * Fix a couple of compiler warnings from freebsd-5 * Revamp move_to_prev_word() so its behavior isn't stinky * Same thing with move_to_next_word(), and they need to be commented. * Now move_to_abs_word() doesn't need to skip leading spaces. * Remove now pointless "strip extraneous spaces" feature. * Don't worry about cheating in real_extractw * Fix last_arg() per all of the above
Commit 551 -- second to last commit for this project -- the big one! * Roll in the new universal_next_arg_count() and attendant macros. * Comment out some deprecated function decls in ircaux.h * Do another round of make depends. * Modify alias arglist code to use the new universal_next_arg_count() stuff * Convert dequote() to dequoter(). * Convert new_new_next_arg() into new_new_next_arg_count(). * Comment out deprecated functions in ircaux.c -- will be deleted later.
Overhaul of malloced string handling functions: * Convert m_[s]c3cat[_s]() to malloc_strcat_wordlist_c() * Nix m_e3cat(), m_s3cat(), m_s3cat_s(), m_3cat() * Nix m_ec3cat(), m_sc3cat(), m_sc3cat_s(), m_c3cat(). * Convert m_dupchar() to malloc_dupchar(). * Convert m_strndup() to malloc_strndup(). * Make malloc_strcpy/malloc_strcat/malloc_strcat2/malloc_strcat_wordlist macros * Convert m_2dup() to malloc_strdup2(). * Convert m_3cat() to malloc_strcat2[_c](). * Convert m_3dup() to malloc_strdup3(). * Convert m_ec3cat() to malloc_strcat2_c() * Use strlcat_c() in $repeat() instead of strlcpy(). whee! * Sanity check first arg to $regcomp(), to avoid crashes. * Don't pass NULL to bsearch(), even if 'nmem' is 0 [$remws()] * Nix the original malloc_strcpy (supplanted by malloc_strcpy_c) * Comment out all the deprecated functions
Convert m_strdup() to malloc_strdup().
* Add some new functions to ircaux.c for malloced string handling * Fix some const correctness issues.
Fix some stragglers and GC unused m_sprintf() function. Fix $serverwin() which was doing a bogus check on server refnums.
Cut over m_sprintf() to malloc_sprintf().
Add support for clock_gettime() which is the posix version of gettimeofday().
Commit 541
* Move #define CTCP_* into ctcp.h
* Add /xdebug extractw_debug
* Move #define LOCAL_COPY and SAFE into irc_std.h
* Create compat.h, move all the compat.c decls into there (from ircaux.h)
* Create network.h, move all the network.c decls into there (from ircaux.h)
* Create words.h, move all the words.c decls into there (from ircaux.h)
* Include "compat.h" and "network.h" in ircaux.h
* Do another round of make depends
* Rename 'search' to 'search_for'.
* Fix the metric clock hooking /on timer too much.
* Revamp words.c, to support passing word quoter (' or ") as an argument.
Metric clock support!
Commit 531: Fix bug reading files where gunzip is a symlink to gzip because of how path_search() calls realpath(). Oh well.
Commit 527 New ignore implementation. I will document all this stuff tomorrow. As it stands, I've tested this for several days and all seems well. Of course let me know if you see any problems.
It is better to use (ssize_t) instead of (int) when refering to string lengths.
Commit 519 * Change m_strcat_ues_c to take a (char *) "unescape" param and not (int) * Rename m_strcat_ues_c to malloc_strcat_ues_c * Rewrite malloc_strcat_ues_c to support new semantics. * Make sure not to pass 0 to alloca() in ctcp checks * Initialize (DCC)->server [found by valgrind] * Change 'expand_alias' so 'unescape' is (char *) and not (int) * Add extra sanity checks in mangle_line against buffer overruns * Fix window_channel() to use new malloc_strcat_ues() arguments.
* Misc bugfixes as per KNOWNBUGS. * This patch involves renaming crypt.h to sedcrypt.h.
* Rename 'dcc()' to 'dcc_cmd()' so we can use dcc as variable
* Garbage collect unused 'irc_path' global variable.
* Add --with-warns to configure to do FreeBSD "WARNS" like compiler checks
* Many hundreds of changes to improve the "quality of code" in epic, including:
* - Treat all literal strings as (const char *) and fix const correctness.
* - Mopping up all remaining const-correctness issues
* - Do not "launder" a (const char *) to a (char *) in string searches, (ala
strchr) but rather return a ssize_t offset value.
* - Particular, MatchingBracket() returns (ssize_t) and not (char *).
* - Eliminate all "shadow" variable names by changing them to something else.
* - Eliminate most function decls that do not include a prototype list.
* - Add prototypes for all extern functions that are missing them.
* - Ensure most function pointers include a prototype list.
* - In term.c, most of those (char *)'s are really (const char *)'s.
* - Explicitly specify 'static' functions as 'static'
* - Ensure every function is either 'static' or has a prototype.
* - Eliminate (unsigned) < (signed) type comparisons.
* Hopefully you should not notice any changes!
Commit 509: * Move /DCC from commands.c to dcc.c * Nix the "dcc deadlist" crap. Handle deleted dcc's more sensibly now. * Add a "dequote" internal function that removes "s in extended words. * Add "QWORDS" as new arglist type, for quoted-words with "s left in. * Add "arglist" regression test. * Fix strlcpy(