diff -rcN epic4-0.9.4/KNOWNBUGS epic4-0.9.5/KNOWNBUGS *** epic4-0.9.4/KNOWNBUGS Tue Aug 15 12:51:47 2000 --- epic4-0.9.5/KNOWNBUGS Wed Aug 16 11:09:00 2000 *************** *** 9,19 **** THE CHANGELOG SINCE THE LAST RELEASE: ------------------------------------- ! * Fix set_channel_by_refnum to not permit set_channel_window(w, NULL); ! * Add panic in set_channel_window if channame is NULL, prevents many problems. ! * Add 'hybrid6' script, and 211 numeric handling for 2.8script, from ejb ! * Fix $#... expando so it always calls TruncateAndQuote. ! * Fix bogon in loader where //* always turns into a c-like comment. ! * Add /who -literal, and backport pre3's tolerance of /quote who lameness. ! * Downgrade /quote who to "deprecated" ! * Don't clean up in irc_exit if /xdebug crash is on. --- 9,12 ---- THE CHANGELOG SINCE THE LAST RELEASE: ------------------------------------- ! * Fix bugs where a channel could be current on more than one window. diff -rcN epic4-0.9.4/source/alias.c epic4-0.9.5/source/alias.c *** epic4-0.9.4/source/alias.c Mon Jun 26 15:18:35 2000 --- epic4-0.9.5/source/alias.c Wed Aug 16 11:14:24 2000 *************** *** 2256,2263 **** #define GET_INT_ARG(x, y) {RETURN_IF_EMPTY(y); x = my_atol(safe_new_next_arg(y, &y));} #define GET_FLOAT_ARG(x, y) {RETURN_IF_EMPTY(y); x = atof(safe_new_next_arg(y, &y));} #define GET_STR_ARG(x, y) {RETURN_IF_EMPTY(y); x = new_next_arg(y, &y);RETURN_IF_EMPTY(x);} ! #define RETURN_STR(x) return m_strdup(x ? x : EMPTY) ! #define RETURN_INT(x) return m_strdup(ltoa(x)); /* Used by function_aliasctl */ /* MUST BE FIXED */ --- 2256,2263 ---- #define GET_INT_ARG(x, y) {RETURN_IF_EMPTY(y); x = my_atol(safe_new_next_arg(y, &y));} #define GET_FLOAT_ARG(x, y) {RETURN_IF_EMPTY(y); x = atof(safe_new_next_arg(y, &y));} #define GET_STR_ARG(x, y) {RETURN_IF_EMPTY(y); x = new_next_arg(y, &y);RETURN_IF_EMPTY(x);} ! #define RETURN_STR(x) return m_strdup((x) ? (x) : EMPTY) ! #define RETURN_INT(x) return m_strdup(ltoa((x))) /* Used by function_aliasctl */ /* MUST BE FIXED */ *************** *** 2265,2271 **** { int list = -1; char *listc; ! enum { EXISTS, GET, SET, MATCH, PMATCH } op; GET_STR_ARG(listc, input); if (!my_strnicmp(listc, "AS", 2)) --- 2265,2271 ---- { int list = -1; char *listc; ! enum { EXISTS, GET, SET, MATCH, PMATCH, GETPACKAGE, SETPACKAGE } op; GET_STR_ARG(listc, input); if (!my_strnicmp(listc, "AS", 2)) *************** *** 2278,2285 **** RETURN_EMPTY; GET_STR_ARG(listc, input); ! if (!my_strnicmp(listc, "G", 1)) op = GET; else if (!my_strnicmp(listc, "S", 1)) op = SET; else if (!my_strnicmp(listc, "M", 1)) --- 2278,2289 ---- RETURN_EMPTY; GET_STR_ARG(listc, input); ! if (!my_strnicmp(listc, "GETP", 4)) ! op = GETPACKAGE; ! else if (!my_strnicmp(listc, "G", 1)) op = GET; + else if (!my_strnicmp(listc, "SETP", 4)) + op = SETPACKAGE; else if (!my_strnicmp(listc, "S", 1)) op = SET; else if (!my_strnicmp(listc, "M", 1)) *************** *** 2296,2301 **** --- 2300,2307 ---- { case (GET) : case (EXISTS) : + case (GETPACKAGE) : + case (SETPACKAGE) : { Alias *alias = NULL; AliasSet *a_list; *************** *** 2313,2326 **** { if (op == GET) RETURN_STR(alias->stuff); ! else RETURN_INT(1); } else { ! if (op == GET) RETURN_EMPTY; ! else RETURN_INT(0); } } --- 2319,2339 ---- { if (op == GET) RETURN_STR(alias->stuff); ! else if (op == EXISTS) RETURN_INT(1); + else if (op == GETPACKAGE) + RETURN_STR(alias->filename); + else /* op == SETPACKAGE */ + { + malloc_strcpy(&alias->filename, input); + RETURN_INT(1); + } } else { ! if (op == GET || op == GETPACKAGE) RETURN_EMPTY; ! else /* EXISTS or SETPACKAGE */ RETURN_INT(0); } } *************** *** 2334,2340 **** else add_cmd_alias(listc, NULL, input); ! RETURN_INT(1) } case (MATCH) : { --- 2347,2353 ---- else add_cmd_alias(listc, NULL, input); ! RETURN_INT(1); } case (MATCH) : { diff -rcN epic4-0.9.4/source/irc.c epic4-0.9.5/source/irc.c *** epic4-0.9.4/source/irc.c Tue Aug 15 12:50:32 2000 --- epic4-0.9.5/source/irc.c Wed Aug 16 10:50:32 2000 *************** *** 13,26 **** /* * irc_version is what $J returns, its the common-name for the version. */ ! const char irc_version[] = "EPIC4-0.9.4"; ! const char useful_info[] = "epic4 0 9 4"; /* * internal_version is what $V returns, its the integer-id for the * version, and corresponds to the date of release, YYYYMMDD. */ ! const char internal_version[] = "20000815"; /* * As a way to poke fun at the current rage of naming releases after --- 13,26 ---- /* * irc_version is what $J returns, its the common-name for the version. */ ! const char irc_version[] = "EPIC4-0.9.5"; ! const char useful_info[] = "epic4 0 9 5"; /* * internal_version is what $V returns, its the integer-id for the * version, and corresponds to the date of release, YYYYMMDD. */ ! const char internal_version[] = "20000816"; /* * As a way to poke fun at the current rage of naming releases after *************** *** 28,34 **** * reality, I have decided to start doing that with EPIC. These names * are intentionally and maliciously silly. Complaints will be ignored. */ ! const char ridiculous_version_name[] = "Harangue"; #define __need_putchar_x__ #include "status.h" --- 28,34 ---- * reality, I have decided to start doing that with EPIC. These names * are intentionally and maliciously silly. Complaints will be ignored. */ ! const char ridiculous_version_name[] = "Lollygag"; #define __need_putchar_x__ #include "status.h" diff -rcN epic4-0.9.4/source/window.c epic4-0.9.5/source/window.c *** epic4-0.9.4/source/window.c Wed Aug 9 19:28:33 2000 --- epic4-0.9.5/source/window.c Wed Aug 16 11:17:41 2000 *************** *** 2775,2782 **** *arg, *arg2 = NULL, *arg3 = NULL; ! Window *w = NULL, ! *other = NULL; if ((sarg = new_next_arg(*args, args))) { --- 2775,2781 ---- *arg, *arg2 = NULL, *arg3 = NULL; ! Window *w = NULL; if ((sarg = new_next_arg(*args, args))) { *************** *** 2831,2850 **** if (w->current_channel && !my_stricmp(arg, w->current_channel)) { ! new_free(&w->current_channel); w->update |= UPDATE_STATUS; - other = w; - break; } } if (im_on_channel(arg, window->server)) { set_channel_by_refnum(window->refnum, arg); say("You are now talking to channel %s", check_channel_type(arg)); - if (other) - reset_window_current_channel(other); } else if (arg[0] == '0' && arg[1] == 0) set_channel_by_refnum(window->refnum, NULL); --- 2830,2847 ---- if (w->current_channel && !my_stricmp(arg, w->current_channel)) { ! unset_window_current_channel(w, window); ! reset_window_current_channel(w); w->update |= UPDATE_STATUS; } } + message_from(arg, LOG_CRAP); if (im_on_channel(arg, window->server)) { set_channel_by_refnum(window->refnum, arg); say("You are now talking to channel %s", check_channel_type(arg)); } else if (arg[0] == '0' && arg[1] == 0) set_channel_by_refnum(window->refnum, NULL); *************** *** 2862,2867 **** --- 2859,2865 ---- else set_channel_by_refnum(window->refnum, zero); + message_from(NULL, LOG_CRAP); return window; } .