Index: MUSHclient.rc =================================================================== RCS file: /cvs/mushclient/MUSHclient.rc,v retrieving revision 1.192 retrieving revision 1.194 diff -r1.192 -r1.194 3694a3695,3696 > IDC_LANGUAGE, 0x403, 5, 0 > 0x7552, 0x7962, "\000" 3891a3894,3895 > IDC_LANGUAGE, 0x403, 5, 0 > 0x7552, 0x7962, "\000" 5559,5560c5563,5564 < FILEVERSION 4,0,6,0 < PRODUCTVERSION 4,0,6,0 --- > FILEVERSION 4,0,7,0 > PRODUCTVERSION 4,0,7,0 5578c5582 < VALUE "FileVersion", "4.06\0" --- > VALUE "FileVersion", "4.07\0" 5585c5589 < VALUE "ProductVersion", "4.06\0" --- > VALUE "ProductVersion", "4.07\0" Index: TextView.cpp =================================================================== RCS file: /cvs/mushclient/TextView.cpp,v retrieving revision 1.34 retrieving revision 1.35 diff -r1.34 -r1.35 1406,1412c1406,1413 < if (iResult < 32 || // don't allow nonprintable characters < iResult > 255) // don't allow characters more than 1 byte < { < ::AfxMessageBox (CFormat ("Disallowed number in entity: &%s;" , < (LPCTSTR) strEntity), MB_ICONSTOP); < return; < } --- > if (iResult != 9) // we will accept tabs ;) > if (iResult < 32 || // don't allow nonprintable characters > iResult > 255) // don't allow characters more than 1 byte > { > ::AfxMessageBox (CFormat ("Disallowed number in entity: &%s;" , > (LPCTSTR) strEntity), MB_ICONSTOP); > return; > } Index: Utilities.cpp =================================================================== RCS file: /cvs/mushclient/Utilities.cpp,v retrieving revision 1.65 retrieving revision 1.66 diff -r1.65 -r1.66 356c356 < // same as above, except quotes are left alone --- > // same as above, except quotes are left alone, and tabs are fixed up 364c364 < while ((i = strOldString.FindOneOf ("<>&")) != -1) --- > while ((i = strOldString.FindOneOf ("<>&\t")) != -1) 372a373 > case '\t': strNewString += " "; break; Index: doc.h =================================================================== RCS file: /cvs/mushclient/doc.h,v retrieving revision 1.213 retrieving revision 1.214 diff -r1.213 -r1.214 24,25c24,25 < #define THISVERSION 406 // Step 1. < const CString MUSHCLIENT_VERSION = "4.06"; // Step 2. --- > #define THISVERSION 407 // Step 1. > const CString MUSHCLIENT_VERSION = "4.07"; // Step 2. Index: lrexlib.c =================================================================== RCS file: /cvs/mushclient/lrexlib.c,v retrieving revision 1.10 retrieving revision 1.11 diff -r1.10 -r1.11 455a456,458 > > // to handle duplicates - first add every name as a non-match > 457c460,461 < for (i = 0; i < namecount; i++) { --- > for (i = 0; i < namecount; i++) > { 460,461c464,481 < lua_pushstring(L, name); < if (n >= 0 && n <= ud->ncapt) { --- > if (n >= 0 && n <= ud->ncapt) // if in range > { > lua_pushstring (L, name); // name > lua_pushboolean (L, 0); // false > lua_settable (L, -3); // set it > } > tabptr += name_entry_size; > } > > // now add the actual matches > > tabptr = name_table; > for (i = 0; i < namecount; i++) > { > int n = (((int)tabptr[0]) << 8) | tabptr[1]; > const unsigned char * name = tabptr + 2; > if (n >= 0 && n <= ud->ncapt) > { 464,470c484,489 < lua_pushlstring(L, text + match[j], match[j + 1] - match[j]); < else < lua_pushboolean(L, 0); < } < else < lua_pushnil(L); /* n out of range */ < lua_settable(L, -3); --- > { > lua_pushstring (L, name); // name > lua_pushlstring (L, text + match[j], match[j + 1] - match[j]); // contents > lua_settable (L, -3); // set it > } // this one matched > } // n in range of captures Index: lua_methods.cpp =================================================================== RCS file: /cvs/mushclient/lua_methods.cpp,v retrieving revision 1.66 retrieving revision 1.67 diff -r1.66 -r1.67 712a713 > const int table = 2; // 2nd argument may be table 715c716 < if (lua_istable (L, 2)) --- > if (lua_istable (L, table)) 729,730c730,731 < lua_pushnil (L); // first key for traversal < while (lua_next (L, 2) != 0) --- > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 750,751d750 < lua_pop (L, 1); // remove value, keep key for next iteration < 3615a3615,3616 > const int table = 1; > 3618c3619 < if (lua_istable (L, 1)) --- > if (lua_istable (L, table)) 3621,3622c3622,3624 < lua_pushnil (L); // first key < while (lua_next (L, 1) != 0) --- > > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 3628d3629 < lua_pop (L, 1); // remove value, keep key for next iteration 3629a3631 > Index: lua_scripting.cpp =================================================================== RCS file: /cvs/mushclient/lua_scripting.cpp,v retrieving revision 1.34 retrieving revision 1.35 diff -r1.34 -r1.35 65a66 > lua_settop (L, 0); // get rid of stuff lying around 69,70d69 < if (!lua_istable (L, -1)) < return; // aha! caught you! 72c71,74 < lua_pushnil (L); // first key --- > const int table = 1; > > if (!lua_istable (L, table)) > return; // aha! caught you! 74,75c76,77 < // walk table < while (lua_next (L, -2) != 0) --- > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 101d102 < lua_pop (L, 1); // remove word, leave key 104,105c105 < lua_settop (L, 0); // get rid of stuff lying around < --- > lua_pop (L, 1); // get rid of global table now Index: lua_utils.cpp =================================================================== RCS file: /cvs/mushclient/lua_utils.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -r1.16 -r1.17 308c308,310 < if (!lua_istable (L, 3)) --- > const int table = 3; > > if (!lua_istable (L, table)) 314,316c316,317 < lua_pushnil (L); // first key for traversal < < while (lua_next (L, 3) != 0) --- > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 354,355d354 < lua_pop (L, 1); // remove value, keep key for next iteration < 431c430 < lua_pushnil (L); // first key for traversal --- > const int table = 3; 433c432,433 < while (lua_next (L, 3) != 0) --- > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 470,471d469 < lua_pop (L, 1); // remove value, keep key for next iteration < 558a557 > const int table = 4; 560c559 < if (lua_gettop (L) >= 4 && !lua_isnil (L, 4)) --- > if (lua_gettop (L) >= table && !lua_isnil (L, table)) 563c562 < if (!lua_istable (L, 4)) --- > if (!lua_istable (L, table)) 568,570c567,568 < lua_pushnil (L); // first key for traversal < < while (lua_next (L, 4) != 0) --- > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 587,588d584 < < lua_pop (L, 1); // remove value, keep key for next iteration Index: mushclient.clw =================================================================== RCS file: /cvs/mushclient/mushclient.clw,v retrieving revision 1.319 diff -r1.319 mushclient.clw 149,240c149,240 < Resource1=IDD_FUNCTION_LIST < Resource2=IDR_COLOUR_POPUP < Resource3=IDD_CHAT_SAY_ALL < Resource4=IDD_PREFS_P14 < Resource5=IDD_SCRIPT_ERROR < Resource6=IDD_ABOUTBOX < Resource7=IDD_PREFS_P20 < Resource8=IDD_CREDITS < Resource9=IDD_GOTO < Resource10=IDD_PREFS_P21 < Resource11=IDD_EDIT_TIMER < Resource12=IDD_PLUGINWIZARDPAGE4 < Resource13=IDD_GLOBAL_CHANGE < Resource14=IDD_DEBUG_INPUT < Resource15=IDD_GLOBAL_PREFSP2 < Resource16=IDD_IMPORT_XML < Resource17=IDD_TEST_RESULT < Resource18=IDD_LINE_COUNT < Resource19=IDR_NON_MENU_ITEMS < Resource20=IDD_PREFS_P23 < Resource21=IDD_FIND < Resource22=IDD_CHAT_CALL < Resource23=IDD_PREFS_P4 < Resource24=IDD_PREFS_P9 < Resource25=IDD_GLOBAL_PREFSP1 < Resource26=IDD_KEY_NAME < Resource27=IDD_GENERATE_UNIQUE_ID < Resource28=CG_IDR_POPUP_SEND_VIEW < Resource29=IDD_SPELLCHECK_DIALOG < Resource30=IDD_ASCII_ART < Resource31=IDD_COMMAND_HISTORY < Resource32=IDD_PREFS_P2 < Resource33=IDD_PREFS_P3 < Resource34=IDD_PLUGINWIZARDPAGE3 < Resource35=IDD_PREFS_P0 < Resource36=IDD_PLUGINWIZARDPAGE1 < Resource37=IDD_HIGHLIGHT < Resource38=IDD_PREFS_P11 < Resource39=IDD_SEND_TO_ALL < Resource40=IDD_GLOBAL_PREFSP5 < Resource41=IDD_LUA_GSUB < Resource42=IDD_INSERT_UNICODE < Resource43=IDD_PREFS_P12 < Resource44=IDD_MAPPER < Resource45=IDD_TEXT_ATTRIBUTES < Resource46=IDR_RIGHT_TRAY_MENU < Resource47=IDD_TEST_TRIGGER < Resource48=IDD_EDIT_MACRO < Resource49=IDD_PLUGINWIZARDPAGE2 < Resource50=IDR_ACTIVITYTYPE < Resource51=IDD_PASTE_PREAMBLES < Resource52=IDD_EDIT_TRIGGER < Resource53=IDD_EDIT_VARIABLE < Resource54=IDD_INFO < Resource55=IDD_GLOBAL_PREFSP12 < Resource56=IDD_LUA_DEBUG < Resource57=IDR_PANETYPE < Resource58=IDD_MAP_MOVE < Resource59=IDD_PLUGINWIZARDPAGE8 < Resource60=CG_IDR_POPUP_MUSHVIEW < Resource61=IDD_PREFS_P15 < Resource62=IDD_MISSING_ENTRY_POINTS < Resource63=IDD_EDIT_ALIAS < Resource64=IDD_PREFS_P6 < Resource65=IDD_EDIT < Resource66=IDD_PREFS_P18 < Resource67=IDD_GLOBAL_PREFSP3 < Resource68=IDD_PROXY_PASSWORD < Resource69=IDD_CHAT_DETAILS < Resource70=IDD_CHAT_EMOTE_ALL < Resource71=IDD_PLUGINWIZARDPAGE7 < Resource72=IDD_LUA_CHOOSE < Resource73=CG_IDR_POPUP_ACTIVITY_VIEW < Resource74=IDD_LUA_CHOOSE_LIST < Resource75=ID_RECALL_WINDOW < Resource76=IDD_LUA_CHOOSE_LIST_MULTI < Resource77=IDD_GLOBAL_PREFSP10 < Resource78=IDD_IMMEDIATE < Resource79=IDD_GLOBAL_PREFSP11 < Resource80=CG_IDD_PROGRESS < Resource81=IDD_WINSOCK_INFO < Resource82=IDD_REGEXP_PROBLEM < Resource83=IDD_PREFS_P1 < Resource84=IDD_MXP_SCRIPTS < Resource85=IDD_PREFS_P16 < Resource86=IDD_QUICK_CONNECT < Resource87=IDD_PREFS_P17 < Resource88=IDD_PREFS_P13 < Resource89=IDD_PREFS_P8 < Resource90=IDD_PLUGINWIZARDPAGE6 < Resource91=IDD_TIP < Resource92=IDD_PREFERENCES --- > Resource1=IDD_IMPORT_XML > Resource2=IDD_HIGHLIGHT > Resource3=IDD_SCRIPT_ERROR > Resource4=IDD_COMMAND_HISTORY > Resource5=IDD_PREFS_P18 > Resource6=IDR_NORMALTYPE > Resource7=IDD_PREFS_P11 > Resource8=IDD_PASTE_PREAMBLES > Resource9=IDD_EDIT_VARIABLE > Resource10=IDD_TIP > Resource11=IDD_PASSWORD > Resource12=IDD_LUA_INPUTEDIT > Resource13=IDD_EDIT_TIMER > Resource14=IDD_LUA_CHOOSE > Resource15=IDD_PREFS_P5 > Resource16=IDD_PREFERENCES > Resource17=IDD_PLUGINWIZARDPAGE6 > Resource18=IDR_NON_MENU_ITEMS > Resource19=IDD_CHAT_DETAILS > Resource20=IDD_GENERATED_NAME > Resource21=IDD_TEST_TRIGGER > Resource22=IDD_TEXT_ATTRIBUTES > Resource23=IDR_COLOUR_POPUP > Resource24=IDD_PLUGINWIZARDPAGE1 > Resource25=IDD_PREFS_P4 > Resource26=IDD_INFO > Resource27=IDD_COMMAND_OPTIONS > Resource28=IDD_PROXY_PASSWORD > Resource29=IDD_CHAT_CALL > Resource30=IDD_GENERATE_UNIQUE_ID > Resource31=CG_IDR_POPUP_SEND_VIEW > Resource32=CG_IDR_POPUP_MAIN_FRAME > Resource33=CG_IDR_POPUP_ACTIVITY_VIEW > Resource34=IDD_COMPLETE_WORD > Resource35=IDD_GLOBAL_PREFSP2 > Resource36=IDD_FUNCTION_LIST > Resource37=IDD_ASCII_ART > Resource38=IDD_PLUGINWIZARDPAGE8 > Resource39=IDD_GLOBAL_PREFSP5 > Resource40=IDD_PREFS_P7 > Resource41=IDD_PLUGINS > Resource42=IDD_CHAT_SAY_ALL > Resource43=IDD_MISSING_ENTRY_POINTS > Resource44=IDD_PREFS_P20 > Resource45=IDD_PREFS_P17 > Resource46=IDD_MULTILINE_TRIGGER > Resource47=IDD_PLUGINWIZARDPAGE5 > Resource48=IDR_PANETYPE > Resource49=IDD_LUA_GSUB > Resource50=IDD_GLOBAL_PREFSP7 > Resource51=IDD_PREFS_P6 > Resource52=IDD_PLUGINWIZARDPAGE3 > Resource53=IDD_TEST_COMMAND > Resource54=IDD_SEND_TO_ALL > Resource55=IDD_MAPPER > Resource56=IDD_CHAT_LIST > Resource57=IDD_LUA_INPUTBOX > Resource58=IDD_GLOBAL_PREFSP13 > Resource59=IDD_SPELLCHECK_DIALOG > Resource60=IDD_GLOBAL_PREFSP11 > Resource61=IDD_PREFS_P2 > Resource62=IDD_INSERT_UNICODE > Resource63=IDD_PLUGINWIZARDPAGE2 > Resource64=IDR_RIGHT_TRAY_MENU > Resource65=IDD_PREFS_P21 > Resource66=IDD_EDIT_TRIGGER > Resource67=IDD_PREFS_P1 > Resource68=IDD_CHOOSE_NOTEPAD > Resource69=IDD_GLOBAL_PREFSP10 > Resource70=IDD_GOTO > Resource71=IDD_LUA_DEBUG > Resource72=IDD_COLOUR_PICKER > Resource73=IDD_REGEXP_PROBLEM > Resource74=IDD_PREFS_P22 > Resource75=IDD_GLOBAL_PREFSP3 > Resource76=IDD_PREFS_P23 > Resource77=IDD_FIND > Resource78=IDD_PREFS_P9 > Resource79=IDD_WINSOCK_INFO > Resource80=IDD_TEST_RESULT > Resource81=IDD_PREFS_P19 > Resource82=IDD_MAP_MOVE > Resource83=CG_IDR_POPUP_MUSHVIEW > Resource84=IDD_CREDITS > Resource85=IDD_PREFS_P3 > Resource86=IDD_PREFS_P15 > Resource87=IDD_EDIT_ALIAS > Resource88=IDD_LINE_COUNT > Resource89=IDR_GAME_TOOLBAR > Resource90=IDD_LUA_CHOOSE_LIST_MULTI > Resource91=IDD_ABOUTBOX > Resource92=IDD_GLOBAL_PREFSP1 242,259c242,259 < Resource94=IDD_GLOBAL_PREFSP4 < Resource95=IDD_COLOUR_PICKER < Resource96=IDR_MAINFRAME < Resource97=IDD_TAB_COMPLETION_DEFAULTS_DLG < Resource98=IDD_MULTILINE_TRIGGER < Resource99=IDD_GLOBAL_PREFSP7 < Resource100=IDD_PLUGINWIZARDPAGE5 < Resource101=IDD_PREFS_P5 < Resource102=IDD_WELCOME < Resource103=IDD_GLOBAL_PREFSP13 < Resource104=IDD_TEST_COMMAND < Resource105=IDD_COMPLETE_WORD < Resource106=IDD_PREFS_P19 < Resource107=IDD_CHAT_LIST < Resource108=IDD_PASSWORD < Resource109=IDR_MXP_MENU < Resource110=IDD_PLUGINS < Resource111=IDD_LUA_INPUTBOX --- > Resource94=IDD_EDIT_MACRO > Resource95=IDD_TAB_COMPLETION_DEFAULTS_DLG > Resource96=IDD_QUICK_CONNECT > Resource97=IDD_PREFS_P16 > Resource98=IDD_MXP_SCRIPTS > Resource99=IDD_PREFS_P12 > Resource100=IDD_KEY_NAME > Resource101=IDR_MXP_MENU > Resource102=IDD_PREFS_P13 > Resource103=IDD_EDIT > Resource104=IDD_PLUGINWIZARDPAGE4 > Resource105=IDD_EDIT_MULTILINE > Resource106=IDD_PREFS_P10 > Resource107=IDD_GLOBAL_PREFSP9 > Resource108=IDR_ACTIVITYTYPE > Resource109=IDD_WELCOME > Resource110=IDD_PREFS_P0 > Resource111=IDD_DEBUG_INPUT 261,266c261,266 < Resource113=IDD_RECALL < Resource114=IDR_NORMALTYPE < Resource115=CG_IDR_POPUP_MAIN_FRAME < Resource116=IDD_PREFS_P10 < Resource117=IDD_MAP_COMMENT < Resource118=IDD_GLOBAL_PREFSP6 --- > Resource113=IDD_GLOBAL_PREFSP4 > Resource114=IDD_CHAT_EMOTE_ALL > Resource115=IDD_GLOBAL_PREFSP12 > Resource116=IDD_PLUGINWIZARDPAGE7 > Resource117=IDD_RECALL > Resource118=IDD_PREFS_P8 282c282 < Resource119=IDD_COMMAND_OPTIONS --- > Resource119=IDD_WELCOME1 284c284 < Resource120=IDD_WELCOME1 --- > Resource120=IDD_PREFS_P14 286,287c286,287 < Resource121=IDD_GLOBAL_PREFSP9 < Resource122=IDD_GENERATED_NAME --- > Resource121=IDD_IMMEDIATE > Resource122=IDD_GLOBAL_PREFSP6 289c289 < Resource123=IDD_PREFS_P7 --- > Resource123=IDR_MAINFRAME 291c291 < Resource124=IDR_GAME_TOOLBAR --- > Resource124=IDD_LUA_CHOOSE_LIST 293c293 < Resource125=IDD_PREFS_P22 --- > Resource125=IDD_GLOBAL_CHANGE 295c295 < Resource126=IDD_EDIT_MULTILINE --- > Resource126=ID_RECALL_WINDOW 297c297 < Resource127=IDD_LUA_INPUTEDIT --- > Resource127=IDD_MAP_COMMENT 305c305 < Resource128=IDD_CHOOSE_NOTEPAD --- > Resource128=CG_IDD_PROGRESS Index: mushclient.hlp =================================================================== RCS file: /cvs/mushclient/mushclient.hlp,v retrieving revision 1.75 retrieving revision 1.77 diff -r1.75 -r1.77 Binary files /tmp/cvszHVpOe and /tmp/cvsWBJBEn differ Index: mxpEntities.cpp =================================================================== RCS file: /cvs/mushclient/mxpEntities.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -r1.3 -r1.4 113,120c113,121 < if (iResult < 32 || // don't allow nonprintable characters < iResult > 255) // don't allow characters more than 1 byte < { < MXP_error (DBG_ERROR, errMXP_DisallowedEntityNumber, < CFormat ("Disallowed number in MXP entity: &%s;" , < (LPCTSTR) strName)); < return ""; < } --- > if (iResult != 9) // we will accept tabs ;) > if (iResult < 32 || // don't allow nonprintable characters > iResult > 255) // don't allow characters more than 1 byte > { > MXP_error (DBG_ERROR, errMXP_DisallowedEntityNumber, > CFormat ("Disallowed number in MXP entity: &%s;" , > (LPCTSTR) strName)); > return ""; > } Index: resource.h =================================================================== RCS file: /cvs/mushclient/resource.h,v retrieving revision 1.121 retrieving revision 1.122 diff -r1.121 -r1.122 1561c1561 < #define _APS_NEXT_RESOURCE_VALUE 343 --- > #define _APS_NEXT_RESOURCE_VALUE 345 Index: stdafx.h =================================================================== RCS file: /cvs/mushclient/stdafx.h,v retrieving revision 1.95 retrieving revision 1.96 diff -r1.95 -r1.96 27c27 < // #define USE_RUBY // Nick's "use Ruby" extension ;) --- > #define USE_RUBY // Nick's "use Ruby" extension ;) Index: trie.cpp =================================================================== RCS file: /cvs/mushclient/trie.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -r1.3 -r1.4 561,562c561,564 < lua_pushnil (L); // first key < while (lua_next (L, 2) != 0) --- > const int table = 2; > > // standard Lua table iteration > for (lua_pushnil (L); lua_next (L, table) != 0; lua_pop (L, 1)) 566d567 < lua_pop (L, 1); // remove word, leave key Index: xml_save_world.cpp =================================================================== RCS file: /cvs/mushclient/xml_save_world.cpp,v retrieving revision 1.50 retrieving revision 1.51 diff -r1.50 -r1.51 500c500 < (LPCTSTR) FixHTMLString (v->strContents))); --- > (LPCTSTR) FixHTMLMultilineString (v->strContents))); Index: xmlparse.cpp =================================================================== RCS file: /cvs/mushclient/xmlparse.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -r1.24 -r1.25 71,77c71,78 < if (iResult < 32 || // don't allow nonprintable characters < iResult > 255) // don't allow characters more than 1 byte < { < ThrowErrorException ("Disallowed number in XML entity: &%s;" , < (LPCTSTR) strName); < return ""; < } --- > if (iResult != 9) // we will accept tabs ;) > if (iResult < 32 || // don't allow nonprintable characters > iResult > 255) // don't allow characters more than 1 byte > { > ThrowErrorException ("Disallowed number in XML entity: &%s;" , > (LPCTSTR) strName); > return ""; > } Index: install/readme.txt =================================================================== RCS file: /cvs/mushclient/install/readme.txt,v retrieving revision 1.140 retrieving revision 1.142 diff -r1.140 -r1.142 1c1 < MUSHclient version 4.06 --- > MUSHclient version 4.07 4c4 < Thursday, 26th April 2007 --- > Tuesday, 8th May 2007