Commit b7067673 authored by rswindell's avatar rswindell
Browse files

Deuce's HTML terminal emulation support mod.

parent fd8cae22
......@@ -40,8 +40,9 @@
bool sbbs_t::answer()
{
char str[256],str2[256],c;
char tmp[512];
char str[MAX_PATH+1],str2[MAX_PATH+1],c;
char tmp[MAX_PATH+1];
char tmp2[MAX_PATH+1];
int i,l,in;
struct tm * tm;
struct in_addr addr;
......@@ -120,6 +121,7 @@ bool sbbs_t::answer()
"\x1b[u" /* restore cursor position */
"\x1b[!_" /* RIP? */
"\x1b[0t_" /* WIP? */
"\2\2?HTML?"/* HTML? */
"\x1b[0m_" /* "Normal" colors */
"\x1b[2J" /* clear screen */
"\x1b[H" /* home cursor */
......@@ -143,7 +145,7 @@ bool sbbs_t::answer()
if(l==0 && c!=ESC) // response must begin with escape char
continue;
str[l++]=c;
if(c=='R') { /* break immediately if response */
if(c=='R') { /* break immediately if ANSI response */
mswait(500);
break;
}
......@@ -170,7 +172,12 @@ bool sbbs_t::answer()
else if(strstr(str,"DC-TERM")
&& toupper(*(strstr(str,"DC-TERM")+12))=='W') {
logline("@W",strstr(str,"DC-TERM"));
autoterm|=(WIP|COLOR|ANSI); } }
autoterm|=(WIP|COLOR|ANSI); }
else if(strstr(str,"!HTML!")) {
logline("@H",strstr(str,"!HTML!"));
autoterm|=HTML;
}
}
rioctl(IOFI); /* flush left-over or late response chars */
if(!autoterm && str[0]) {
......@@ -214,9 +221,12 @@ bool sbbs_t::answer()
/* Display ANSWER screen */
sprintf(str,"%sanswer",cfg.text_dir);
sprintf(tmp,"%s.%s",str,autoterm&WIP ? "wip":"rip");
sprintf(tmp2,"%s.html",str);
sprintf(str2,"%s.ans",str);
if(autoterm&(RIP|WIP) && fexist(tmp))
strcat(str,autoterm&WIP ? ".wip":".rip");
else if(autoterm&HTML && fexist(tmp2))
strcat(str,".html");
else if(autoterm&ANSI && fexist(str2))
strcat(str,".ans");
else
......
......@@ -53,12 +53,12 @@ void sbbs_t::batchmenu()
bputs(text[NoFilesInBatchQueue]);
return;
}
if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT))
if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT))
menu("batchxfer");
lncntr=0;
while(online && !done && (batdn_total || batup_total
|| cfg.upload_dir!=INVALID_DIR)) {
if(!(useron.misc&(EXPERT|RIP|WIP))) {
if(!(useron.misc&(EXPERT|RIP|WIP|HTML))) {
sys_status&=~SS_ABORT;
if(lncntr) {
SYNC;
......@@ -75,7 +75,7 @@ void sbbs_t::batchmenu()
logch(ch,0);
switch(ch) {
case '?':
if(useron.misc&(EXPERT|RIP|WIP))
if(useron.misc&(EXPERT|RIP|WIP|HTML))
menu("batchxfr");
break;
case CR:
......
......@@ -67,7 +67,7 @@ void sbbs_t::multinodechat(int channel)
if(!chan_access(channel-1))
return;
if(useron.misc&(RIP|WIP) ||!(useron.misc&EXPERT))
if(useron.misc&(RIP|WIP|HTML) ||!(useron.misc&EXPERT))
menu("multchat");
getnodedat(cfg.node_num,&thisnode,1);
bputs(text[WelcomeToMultiChat]);
......@@ -556,7 +556,7 @@ void sbbs_t::chatsection()
}
action=NODE_CHAT;
if(useron.misc&(RIP|WIP) || !(useron.misc&EXPERT))
if(useron.misc&(RIP|WIP|HTML) || !(useron.misc&EXPERT))
menu("chat");
ASYNC;
bputs(text[ChatPrompt]);
......@@ -626,7 +626,7 @@ void sbbs_t::chatsection()
// FREE(gurubuf);
return; }
action=NODE_CHAT;
if(!(useron.misc&EXPERT) || useron.misc&WIP
if(!(useron.misc&EXPERT) || useron.misc&(WIP|HTML)
|| (useron.misc&RIP && !no_rip_menu)) {
menu("chat");
}
......
......@@ -90,11 +90,11 @@ bool sbbs_t::logon()
if(useron.rest&FLAG('G')) { /* Guest account */
useron.misc=(cfg.new_misc&(~ASK_NSCAN));
useron.rows=0;
useron.misc&=~(ANSI|RIP|WIP|NO_EXASCII|COLOR);
useron.misc&=~(ANSI|RIP|WIP|NO_EXASCII|COLOR|HTML);
useron.misc|=autoterm;
if(!(useron.misc&ANSI) && yesno(text[AnsiTerminalQ]))
useron.misc|=ANSI;
if(useron.misc&(RIP|WIP)
if(useron.misc&(RIP|WIP|HTML)
|| (useron.misc&ANSI && yesno(text[ColorTerminalQ])))
useron.misc|=COLOR;
if(!yesno(text[ExAsciiTerminalQ]))
......@@ -194,7 +194,7 @@ bool sbbs_t::logon()
if(useron.misc&AUTOTERM) {
useron.misc&=~(ANSI|RIP|WIP);
useron.misc&=~(ANSI|RIP|WIP|HTML);
useron.misc|=autoterm;
}
......
......@@ -2587,7 +2587,7 @@ void sbbs_t::putcom(char *str, int len)
void sbbs_t::riosync(char abortable)
{
if(useron.misc&(RIP|WIP)) /* don't allow abort with RIP or WIP */
if(useron.misc&(RIP|WIP|HTML)) /* don't allow abort with RIP or WIP */
abortable=0; /* mainly because of ANSI cursor position response */
if(sys_status&SS_ABORT) /* no need to sync if already aborting */
return;
......
......@@ -177,7 +177,7 @@ BOOL sbbs_t::newuser()
if(useron.misc&ANSI) {
useron.rows=0; /* Auto-rows */
if(useron.misc&(RIP|WIP) || yesno(text[ColorTerminalQ]))
if(useron.misc&(RIP|WIP|HTML) || yesno(text[ColorTerminalQ]))
useron.misc|=COLOR;
else
useron.misc&=~COLOR;
......
......@@ -412,7 +412,7 @@ void sbbs_t::qwk_sec()
getusrsubs();
delfiles(cfg.temp_dir,ALLFILES);
while(online) {
if((useron.misc&(WIP|RIP) || !(useron.misc&EXPERT))
if((useron.misc&(WIP|RIP|HTML) || !(useron.misc&EXPERT))
&& (useron.logons<2 || !(useron.rest&FLAG('Q'))))
menu("qwk");
action=NODE_TQWK;
......@@ -427,7 +427,7 @@ void sbbs_t::qwk_sec()
if(sys_status&SS_ABORT || ch=='Q' || ch==CR)
break;
if(ch=='?') {
if((useron.misc&(WIP|RIP) || !(useron.misc&EXPERT))
if((useron.misc&(WIP|RIP|HTML) || !(useron.misc&EXPERT))
&& !(useron.rest&FLAG('Q')))
continue;
menu("qwk");
......
......@@ -611,6 +611,7 @@ typedef enum { /* Values for xtrn_t.event */
#define AUTOHANG (1L<<20) /* Auto-hang-up after transfer */
#define WIP (1L<<21) /* Supports WIP terminal emulation */
#define AUTOLOGON (1L<<22) /* AutoLogon via IP */
#define HTML (1L<<23) /* Using Deuce's HTML terminal */
#define CLREOL 256 /* Character to erase to end of line */
......
......@@ -84,7 +84,7 @@ void sbbs_t::scansubs(long mode)
return; } }
if(ch=='S') {
if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT)) {
menu("msgscan"); }
i=scanposts(usrsub[curgrp][cursub[curgrp]],mode,str);
subs_scanned++;
......@@ -93,7 +93,7 @@ void sbbs_t::scansubs(long mode)
else bprintf(text[MessageScanComplete],subs_scanned);
return; }
if(ch=='G') {
if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT)) {
menu("msgscan"); }
for(i=0;i<usrsubs[curgrp] && !msgabort();i++) {
if(((mode&SCAN_NEW &&
......@@ -158,7 +158,7 @@ void sbbs_t::scanallsubs(long mode)
}
}
if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT)) {
menu("msgscan"); }
for(i=0;i<usrgrps;i++) {
for(j=0;j<usrsubs[i] && !msgabort();j++) {
......
......@@ -84,11 +84,11 @@ void sbbs_t::temp_xfer()
strcpy(f.desc,"Temp File");
f.dir=dirnum;
if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT))
if(useron.misc&(RIP|WIP|HTML) && !(useron.misc&EXPERT))
menu("tempxfer");
lncntr=0;
while(online && !done) {
if(!(useron.misc&(EXPERT|RIP|WIP))) {
if(!(useron.misc&(EXPERT|RIP|WIP|HTML))) {
sys_status&=~SS_ABORT;
if(lncntr) {
SYNC;
......@@ -263,7 +263,7 @@ void sbbs_t::temp_xfer()
sys_status&=~SS_ABORT;
break;
case '?': /* menu */
if(useron.misc&(EXPERT|RIP|WIP))
if(useron.misc&(EXPERT|RIP|WIP|HTML))
menu("tempxfer");
break; }
if(sys_status&SS_ABORT)
......
......@@ -315,7 +315,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
getusrsubs();
#endif
if(user->misc&AUTOTERM) { // was useron.misc (01/19/00)
user->misc&=~(ANSI|RIP|WIP);
user->misc&=~(ANSI|RIP|WIP|HTML);
user->misc|=autoterm; }
} }
#endif
......
......@@ -757,7 +757,7 @@ void sbbs_t::maindflts(user_t* user)
,user->misc&ANSI ? "ANSI ":"TTY "
,user->misc&COLOR ? "(Color) ":"(Mono) "
,user->misc&WIP ? "WIP" : user->misc&RIP ? "RIP "
:nulstr
: user->misc&HTML ? "HTML " : nulstr
,user->misc&NO_EXASCII ? "ASCII Only":nulstr);
bprintf(text[UserDefaultsTerminal],str);
if(cfg.total_xedits)
......@@ -835,7 +835,7 @@ void sbbs_t::maindflts(user_t* user)
case 'T':
if(yesno(text[AutoTerminalQ])) {
user->misc|=AUTOTERM;
user->misc&=~(ANSI|RIP|WIP);
user->misc&=~(ANSI|RIP|WIP|HTML);
user->misc|=autoterm; }
else
user->misc&=~AUTOTERM;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment