diff --git a/TODO b/TODO index 6e2377a..3135e34 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,18 @@ -- Look into #map find clearing room symbols on rooms with a symbol length of 2-5. +- Figure out how to deal with large images and packet fragmentation + eden-test.rpgframework.de 4000 + +- #snoop scroll malfunctions if inputregion is changed (should be fixed) + +#screen scroll 1 1 20 50 +#screen input 22 1 22 50 +#screen fill default +#line background #run bla bash +#bla #cursor echo on +#bla #screen scroll 1 52 20 101 +#bla #screen input 22 52 22 101 +#snoop bla scroll + +#bla #screen input 21 52 21 101 - #config {COMMAND ECHO} mode that echoes all commands as sent to the mud. @@ -33,8 +47,6 @@ - allow a full telnet disable in port.c -- Add message when a substitution exceeds available memory. - - config loglevel medium option - look into GMCP larger than buffer size @@ -65,16 +77,12 @@ - #line escape {variables;functions} -- Another nice thing would be if there was some flag to make a trigger match newlines as space. - - add a #regex like command for #cursor to update the input line. - custom mapping for unicode table to set width - color code for dynamic color ranges -- Look into delete_index_list leaving a table with ->used set to 0 causing #list crashes - - #daemon attach fails under high cpu load - https://github.com/scandum/tintin/issues/161 diff --git a/mods/igr.mods b/mods/igr.mods index 6929751..fa96d49 100644 --- a/mods/igr.mods +++ b/mods/igr.mods @@ -1,3 +1,7 @@ +Jan 2026 2.02.61 +------------------------------------------------------------------------------ +substitute.c Fixed a bug causing improper handling of large variables. + Jun 2025 2.02.60 ------------------------------------------------------------------------------ cursor.c Added #cursor flag keypad on/off option. diff --git a/src/buffer.c b/src/buffer.c index 6e529de..b91ae6d 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -500,7 +500,7 @@ int show_buffer(struct session *ses) scroll_cnt--; } - save_pos(ses); + save_pos(gtd->ses); if (scroll_cnt == 0) // home { @@ -611,7 +611,7 @@ int show_buffer(struct session *ses) buffer_print(ses, 0, 0, 0); - restore_pos(ses); + restore_pos(gtd->ses); if (IS_SPLIT(ses)) { diff --git a/src/misc.c b/src/misc.c index c45818e..bd47349 100644 --- a/src/misc.c +++ b/src/misc.c @@ -262,6 +262,13 @@ DO_COMMAND(do_test) } + if (!strcmp(arg1, "prompt")) + { + SET_BIT(ses->telopts, TELOPT_FLAG_PROMPT); + SET_BIT(ses->config_flags, CONFIG_FLAG_AUTOPROMPT); + + return ses; + } return ses; } diff --git a/src/net.c b/src/net.c index 4997503..8db777c 100644 --- a/src/net.c +++ b/src/net.c @@ -317,7 +317,6 @@ void write_line_mud(struct session *ses, char *line, int size) return; } - if (!HAS_BIT(ses->telopts, TELOPT_FLAG_TELNET) && HAS_BIT(ses->charset, CHARSET_FLAG_ALL_TOUTF8)) { char buf[BUFFER_SIZE]; diff --git a/src/substitute.c b/src/substitute.c index 7ca8dc4..5342026 100644 --- a/src/substitute.c +++ b/src/substitute.c @@ -1083,17 +1083,16 @@ int substitute(struct session *ses, char *string, char *result, int flags) *pto++ = *pti++; continue; } - +/* if (pto - buffer > BUFFER_SIZE - 1000) { - pto += sprintf(pto, "[BUFFER OVERFLOW]"); + pto += sprintf(pto, "[BUFFER OVERFLOW]"); // causes large variables to fail to load goto eol; } - +*/ switch (*pti) { case '\0': - eol: if (HAS_BIT(flags, SUB_EOL)) { if (HAS_BIT(ses->telopts, TELOPT_FLAG_CR|TELOPT_FLAG_LF)) @@ -1181,6 +1180,8 @@ int substitute(struct session *ses, char *string, char *result, int flags) if (sesptr == NULL && node == NULL) { + show_debug(ses, LIST_FUNCTION, NULL, COLOR_DEBUG "#DEBUG: UNDEFINED FUNCTION " COLOR_BRACE "{" COLOR_STRING "%s" COLOR_BRACE "}", temp); + while (*pti == '@') { *pto++ = *pti++; diff --git a/src/telopt_client.c b/src/telopt_client.c index 6e26b1a..6e540db 100644 --- a/src/telopt_client.c +++ b/src/telopt_client.c @@ -449,10 +449,7 @@ int client_translate_telopts(struct session *ses, unsigned char *src, int cplen) break; case ASCII_LF: - if (HAS_BIT(ses->telopts, TELOPT_FLAG_PROMPT)) - { - DEL_BIT(ses->telopts, TELOPT_FLAG_PROMPT); - } + DEL_BIT(ses->telopts, TELOPT_FLAG_PROMPT); *cpdst++ = *cpsrc++; gtd->mud_output_len++; @@ -480,14 +477,15 @@ int client_translate_telopts(struct session *ses, unsigned char *src, int cplen) { DEL_BIT(ses->telopts, TELOPT_FLAG_PROMPT); - /* - Fix up non vt muds - */ + // Fix up non vt muds if (HAS_BIT(ses->flags, SES_FLAG_SPLIT) || !IS_SPLIT(ses)) { - *cpdst++ = '\n'; - gtd->mud_output_len++; + if (!HAS_BIT(ses->telopts, TELOPT_FLAG_SGA)) + { + *cpdst++ = '\n'; + gtd->mud_output_len++; + } } } diff --git a/src/tintin.h b/src/tintin.h index fe48f5c..5e2e4d9 100644 --- a/src/tintin.h +++ b/src/tintin.h @@ -213,7 +213,7 @@ #define CLIENT_NAME "TinTin++" -#define CLIENT_VERSION "2.02.60 " +#define CLIENT_VERSION "2.02.61 " #define XT_E 0x27