CVS log for epic4/source/vars.c |
![]() |
Request diff between arbitrary revisions
* Move "term.h" out of the way so we can #include <term.h> (mv'd to termx.h) * This makes it possible to avoid empty decls for tparm() * Which is supposed to fix the build for larne on who-only-knows-what. * Rename tparm() to my_tparm(). * Do a make depend since i changed the name of a header file. ugh. * Change the name of (struct term) to (struct my_term) for freebsd sake. ugh.
* Add support for maildir mail boxes, which must be selected at compile time.
* Fix space-related panic. See UPDATES for all the gruesome details. * Add ALT_CHAR to the list of things that can be mangled.
Fix brain-damage
* Add %{2}W and %{3}W from epic5 (for blackjac)
* Fix $stripcrap(ALL,-<type> ...) from epic5.
* Add support for +e and +I numeric replies for efnet.
* Fixed $shuffle*() to respect extractw. * Altered $rest() so that a negative first argument makes it a compliment to $right() in the same way that a positive arg makes it a compliment to $left(). This may conceivably cause problems for scripts. * Spruced $joinstr() up a bit. It now accepts any number of variables and respects extractw. * Fixed an extractw bug in malloc_strcat_word_c while testing the above. * Added $splicec() in functions script. * Added /set dcc_dequote_filenames. Perhaps this should default to off?
* Add /SET STATUS_NOSWAP
* Fix #define DEBUG_EXTRACTW_DEBUG/LASTLOG
* Add -o and -O command line options to turn off IEXTEN termio() options
* Add /WINDOW SWAPPABLE (defaults to on)
* Add %{1}W status expando, expands to /SET STATUS_NOSWAP if SWAPPABLE OFF
* Don't allow windows to be swapped in or out if SWAPPABLE OFF
* Don't allow windows to be shown or hidden if SWAPPABLE OFF
* Do allow windows to be swapped in with WINDOW KILL even if SWAPPABLE OFF
* Add $windowctl(GET <refnum> SWAPPABLE)
* 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.
* Add $servernick(<global>) to return the client's global nickname * Update tabkey.jm to latest version * Add new ircII-compatable /window hold_mode thingee. * Add /set hold_slider, /window hold_slider * Add 'hold_mode' script, implements ircII-like /set hold_mode[_interval] * /XEVAL -- ends eval option processing, like how /xecho does it.
Teach all the /set callbacks to take a (const void *). This fixes a bad-c problem with /set!
* Add "ON/OFF" toggle set variable to the system timer data. * Create 'update_system_timer' which uses the "toggle" var to run or stop timer * Merge '(start|stop)_system_timer' into 'update_system_timer' * Nix #define MINIMUM_(NOTIFY|CLOCK|MAIL)_INTERVAL since we can't stop that. * Do not enforce minimums for /SET *_INTERVAL since user could get around it. * Track "last event" time, maybe I'll use that in the future * Reset "now" global variable before calling timer callback. * Fix null deref bug with $($$) * Add default binding to ^G to "self_insert" for beeps. * Do not enforce MINIMUM_NOTIFY_INTERVAL in do_notify() * Don't include exec.h from screen.c * Add 'number' (floating point) field to /set's * Add FLOAT_TYPE_VAR type for /set's, using 'number' field * Update all the /set entries to include a default 'number' field. * Add get_float_var() to get the 'number' field in a set. * Add set_float_var() to set the 'number' field in a set. * Teach set_variable() about FLOAT_TYPE_VAR sets. * Teach save_variables() about FLOAT_TYPE_VAR sets. * Teach get_string_variable() about FLOAT_TYPE_VAR sets.
* Protect against panic if /set mail 0 is off by default
* 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 558 * Don't allow user to /window number in a window with a channel (avoid panic) * Make check_mail return a (const char *), fix status_mail(). * Modularize/reorganize mail checking, with mbox reference implementation. * Automatically /set mail 0 if the user's mbox can't be found.
Commit 556 * Change #define DEFAULT_CPU_SAVER_EVERY to 60, it needs not be 0. * Create 'clock.c', to hold clock generation, system timers, cpu saver watchdog * Create notion of "sys(tem)timers", callbacks for mail, notify, clock gen. * Add 'system_timer', generalized callback for all of the system timers. * Fix add_timer() so the 'command' argument does what the docs say it does. * Extern 'timer_exists' so we don't try to remove_timer() and invalid timer * Redo dependancies because clock.h exists. * Add code to bootstrap mail systimer with /set mail * Add code to bootstrap clock generation with /set clock * Add code to bootstrap notify handling with /set notify_interval. * Start enforcing "NOTIFY_INTERVAL" again in do_notify() to avoid excess flood.
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
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().
Metric clock support!
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.
* 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!
Nominally remove all uses of "unsafe" functions: (Commit 506)
* Convert all uses of strcpy() to strlcpy()
* Convert all uses of strcat() to strlcat()
* Convert all uses of strmcpy() to strlcpy()
* Convert all uses of strmcat() to strlcat()
* Convert all uses of sprintf() to snprintf()
* As much as possible, use 'sizeof var' in snprintf/strlcpy/strlcat.
* Qualify the size of some global vars so we can sizeof() them.
* Nuke strmcpy(), strmcat(), strmcat_ue(), strmccat(),
* Change strmopencat() to strlopencat().
* Change strmpcat() to strlpcat().
* Fix switch_hostname so it doesn't return a (const) string.
* Fix TimerTimeout so it doesn't return a (const) Timeval.
* Change things like (ret) to do ret while (0); for when "ret" is "{}".
* Fix initialization for load_level
* Stop passing in static strings into io(), so we can modify them.
* Make messages passed to io() more informative to the user.
* Fix CTCP FINGER handler not to assume (struct pw) strings can be overwritten.
* Use (socklen_t) and not an (int) for socket sizes.
* Don't return a value in a void function...
* Don't use return value of process_dcc_chat_ctcps() for assignment.
* Don't put semicolons after function bodies
* Fix $getopt() to save 'input_size' so we can use it with strl*().
* Convert all uses of stpcpy() to strlcat() and strlopencat().
* Nix checks for stpcpy() in configure -- regen configure.
* New /set, /SET SWITCH_CHANNELS_BETWEEN_WINDOWS * C language issues (const correctness, integer size correctness) * Revamp channel structure to hold window refnum and not window pointer * Add "current channel counter" to channel structure. * Determine "current channel" by election. * Garbage collect a lot of now unnecessary code. * Add get_echannel_by_refnum(), returns window's "elected" current channel * Add internal function is_waiting_for_channel() * Add internal function move_waiting_channel() * Add internal function get_winref_by_bound_channel() * Add internal function get_bound_channel_by_refnum() * Convert uses of get_channel_by_refnum() to get_echannel_by_refnum() * Fix $winbound() to work when given a window refnum * Fix valgrind issue with $regcomp() * Remove sanity checks from traverse_all_channels(); handled elsewhere now * Change traverse_all_channels() with "this server" or "not this server" arg * Nuke (Window *)->current_channel. Handled by channels now. HUZZAH! * Implement /ON SWITCH_WINDOWS again.
Another merge.
Yikes. Merged to become consistent with HEAD. Sorry for all the commits, I'll be quiet again soon. :) -wd
* "Word Philosophy" alterations, /alias leak, flood checking, $glob(),
tabkey.ce, regression tests, autoget, /fe, /fec, safe_new_next_arg, as
per KNOWNBUGS.
* $findws(), functions (script), ${i}finditems(), $dccctl(), as per
UPDATES.
Commit 449. New feature added * Split NOTIFY stuff off into its own timer * Add #define MINIMUM_NOTIFY_INTERVAL in config.h * Add set_notify_interval, force that /SET NOTIFY_INTERVAL >= MIN_NOT_INT
* Added Tyraks /stack patch as per KNOWNBUGS. * $afterw(), $beforew(), $fromw(), $tow() as per UPDATES. *potential bug* * Regress tests as per KNOWNBUGS. * ERROR hook fix as per KNOWNBUGS. * autoget script as per KNOWNBUGS. * $serverctl() as per UPDATES. * $writeb() as per UPDATES. * /sleep as per UPDATES.
Documented /exec features.
Note: The -line* switches for the %proc mode are new and haven't been
commited yet.
Commit 412 -- Fix $getset().
* Fix minor bug with /xquote * Fix minor bug with reconnecting after server write failed. * Set input idle timer better. * Rewrite /stack (push|pop) set so they actually work now.
* Added functions $asciiq() $chrq() $exec() $timerctl() $tcl() $winline() and $floodinfo(). * Altered the two argument version of $read() to ctcp quote the strings it returns. * Added sets FLOOD_RATE_PER and FLOOD_MASKUSER. * Altered the "accept" mode of the dcc_raw and dcc_connect hooks to refer to the local port instead of the remote port. * Added a "-closein %proc" switch to /exec. * Altered the arg list mode of /alias to use extractw instead of next_arg. * Added the documented "words" argument to the above. * Tuned autoget, mudirc, tabkey.ce and commandqueues. * Altered /pretend to not chop the string. * Set about rewriting the flood detection and then decided that it's better off being a script. * Moved the function macros to their own file (functions.h) and replaced all the copies that are strewn throughout the source with an #include. The exception is array.c which broke when I tried it. * Moved the ctcp enquoting/dequoting functions to ircaux.c. * Added some command/function ordering checks to funcs/regress, and a check for all the functions that are undocumented. * Rewrote function chanmodetype() so that it doesn't have all those flakey buffering things. Hopefully it's readable now. The significant change is that if a mode character appears twice in CHANMODES, the first one is returned instead of the last. * Added EPIC::call() in the perl routines and an equivalent under tcl. this is designed to call a $function() directly, but it isn't really that fast, so I might rip them out again. * The /wait internals used to store a few other settings, which were taken out, so I put them back. * Fixed a few problems with normalize_filename() around the place. * Fixed a bug with /timer in which it would never show the timers after a callback.
* Remove /set suppress_server_motd which didn't really work anyways. * Add function decls for bsd_arc4* to ircaux.c * Always check (window->hold_mode || window->autohold) together! * Unhold_window()s only if both hold_mode and autohold are off! * unhold_window()s instead of doing scrollback_end for robustness. * Attempt to recover from the "output is below bottom of window" bug, whine.
Ach. Here goes nothing. Major commit which does many things, but the most prominent of which is the final integration of the scrollback buffer with the hold buffer. This fixes several annoying "features" and introduces a small truckload of new features which have been requested recently. Please see the KNOWNBUGS or UPDATES file for more info, since I don't want this message to be ridiculously long.
New keybindings system coming through. Details can be found in doc/keys and in a few other places. :) -wd
Update documentation prior to epic4-1.1.6 release Add "HAVE_GETSERVBYNAME" check to configure stuff. Remove /SET RANDOM_LOCAL_PORTS which has gone away. Fix some layout issues with gailib.c and change two function names. Fix comment issue with ircsig.c Fix uninitialized variable issue with keys.c Remove mention of /SET RANDOM_LOCAL_PORTS in network.c
Update copyright notices and copyright dates.
* Fix for an SSL problem where SSL fails to negotiate. It will bail to non-encrytion in this case now. * Fix for splitw() which is used by $uniq() and other functions where some of the elements could be null pointers due to its use of new_next arg. This would cause qsort() to coredump. Switched to safe_new_next_arg which seems to have a performance penalty of about 4%. * Added an "OTHER" flag to $stripcrap() and the mangle settings, which catches all characters that other flags don't. It isn't included in the ALL flag.
DEATH TO MEMCPY()! Also, make need_redraw 'volatile' since we alter it in a signal handler.
* Rolled the $getsets() and $getcommands() code into macros and added $getfunctions(). * Added a server_established hook. This is called before anything is sent to the server, and it is intended that for ssl connections, stuff can be quoted and hooked in plain text until the hook returns, although, it is difficult to verify that this will actually work. * Made it so that when all variables are erased, the low level array that contains the variables is erased. This is intended to make it easier to profile the memory use. * Copyright notice added to perl.c. * Minor stuff for tabkey.ce.
* New STATUS_HALFOP setting which acts much the same way as STATUS_CHANOP. * New function $getcommands() which acts much the same way as $getsets(). The internals for these two functions probably need to be rolled together. * Cleanups and minor updates to tabkey.ce.
Applied the SSL patch from ay-ar. Details are in README.SSL. This works well at this point, but there may be teething problems.
The whole ROM_CHAR thing was an accident waiting to happen. Removed. Add /SET ALLOW_C1_CHARS to protect from the ascii char 128-159 attacks upon XTerm and GNU Screen users. Defaults to OFF.
Thanks go to crazyeddy and zinx for working on this in my absence. Add /set rom_char (defaults to off) which determines whether ^R rom_char sequences will be honored or dishonored by epic. Dishonored sequences are not removed; they are just mangled. This will help you detect those who might try to use this feature for less than noble purposes. Re-set the ^R character to "mode 5" processing; it had been set to "mode 6" as a stop-gap measure.
Resizable wserv support! No, really! Backported from epic5. I have to go through term.c again and make sure there are no unintended casualties of the merge. We should also start testing the resize handlers to make sure they're happy. I don't promise they'll all work first time, but this is a good place to start!
Add /set auto_rejoin_connect -- this controls whether epic will try to rejoin your channels when you are disconnected from a server *AND EPIC WOULD ORDINARILY TRY TO REJOIN YOUR CHANNELS*. This has *ABSOLUTELY NO EFFECT AT ALL* in those cases where epic has thrown away your channels and has no intentions of rejoining them. This is only a way for you to reduce current functionality, there are no bugs fixed with this.
Translation table support. I pulled this from ircII-2.8.2. Re-added by incessant requests from russian users. This adds /set translation and /set translation_path. The translation path is not hardcoded into the binary, it is $IRCLIB/translation, where IRCLIB is determined at runtime. You can of course always /set it to whatever you want. I am not making the translation tables available with epic. They are available in zillions of places, and i'll probably create a tarfile that contains them.
bugfix: /stack push+pop of an unset /set will now restore it to its original value, ie, unset.
* Miscelaneous 3cat updates.
* History expansion copies the history buffer verbatim now.
* Bugfix: /!0 would not retrieve the first command entered.
* Bugfix: Negative numbers not found would be display the
incorrect number in the error message. eg: /!-4444
* Alterations to remove_trailing_spaces interface.
* $igetrmatches() was defined, but inaccessible.
Two things: * Remove /set notify_handler which didn't do anything. * Rewrite /lastlog so i understand how it works. Big new feature, -regex, to support regex searching on lastlog! * Commit #75.
Initial import into CVS
Initial revision
| CVS Admin |
Powered by ViewCVS 0.9.2 |