diff --git a/src/sbbs3/unbaja.c b/src/sbbs3/unbaja.c index 36f79b176b99f76bba719a4f51480607603201e0..868e2babd3d8d288ebb2f5a7dcec88e61510f6c8 100644 --- a/src/sbbs3/unbaja.c +++ b/src/sbbs3/unbaja.c @@ -1233,6 +1233,7 @@ void decompile(FILE *bin, FILE *src) ushort ush; short sh; long lng; + long lng2; ulong ulng; int usevar=FALSE; long var=0; @@ -1420,10 +1421,42 @@ void decompile(FILE *bin, FILE *src) CHSTR("RECEIVE_FILE_VIA"); case RECEIVE_FILE_VIA_VAR: CHVAR("RECEIVE_FILE_VIA"); - case TELNET_GATE_STR: - MLNGSTR("TELNET_GATE"); - case TELNET_GATE_VAR: - MLNGVAR("TELNET_GATE"); + case TELNET_GATE_STR: /* TELNET_GATE reverses argument order */ + WRITE_NAME("TELNET_GATE"); + fread(&lng,4,1,bin); + fputc('"',src); + while(fread(&ch,1,1,bin)==1) { + if(ch==0) + break; + if(ch<' ' || ch > 126 || ch == '"') { + fprintf(src, "\\%03d", ch); + } + else + fputc(ch, src); + } + fputc('"',src); + fputc(' ',src); + if(usevar) { + fprintf(src,"%s ",getvar(var)); + usevar=FALSE; + } else { + fprintf(src,"%ld ",lng); + } + eol(src); + break; + case TELNET_GATE_VAR: /* TELNET_GATE reverses argument order */ + WRITE_NAME("TELNET_GATE"); + fread(&lng,4,1,bin); + fread(&lng2, 1, 4, bin); + fprintf(src,"%s ",getvar(lng2)); + if(usevar) { + fprintf(src,"%s ",getvar(var)); + usevar=FALSE; + } else { + fprintf(src,"%ld ",lng); + } + eol(src); + break; case COPY_FIRST_CHAR: VARVAR("COPY_FIRST_CHAR"); case COMPARE_FIRST_CHAR: