aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Murphy <alec@checksum.fail>2017-07-15 23:26:30 -0400
committerAlec Murphy <alec@checksum.fail>2017-07-15 23:26:30 -0400
commita56991c90e009a3c81a001b8fbd0acb69f5a282a (patch)
tree1b8152543095ca831ac5b2c45cc1e0d1e65f02ba
parent6be0ba955f5a0df3cc6facc7b6583b4513e049df (diff)
Fix some ANSI bg/fg attributes
-rwxr-xr-xLoad.HC61
1 files changed, 52 insertions, 9 deletions
diff --git a/Load.HC b/Load.HC
index 81ce485..46f31ba 100755
--- a/Load.HC
+++ b/Load.HC
@@ -108,6 +108,8 @@ U0 TempleTermSession(I64 sock)
DCFill(tt_buf,tt_cur_bg);
tt_buf->color=tt_cur_fg;
+ I64 rv;
+
I64 ansi_pos=0;
I64 rx_size=1024;
I64 i=0;
@@ -638,7 +640,7 @@ U0 TempleTermSession(I64 sock)
DCDel(sr_dc);
break;
- case 'T':
+ case 'T':
StrPrint(sr_buf, ansi_buf);
StrFirstOcc(sr_buf,"S")[0]=0;
sr_dc=DCNew(640,(tt_sr_y2*8)-(tt_sr_y1*8));
@@ -648,6 +650,24 @@ U0 TempleTermSession(I64 sock)
break;
case 'm':
+
+ if (StrFind(";7m",ansi_buf))
+ { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv;
+ if (tt_cur_bg>7) { tt_cur_bg-=8; };
+ };
+ if (StrFind("[7m",ansi_buf))
+ { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv;
+ if (tt_cur_bg>7) { tt_cur_bg-=8; };
+ };
+ if (StrFind("[7;",ansi_buf))
+ { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv;
+ if (tt_cur_bg>7) { tt_cur_bg-=8; };
+ };
+ if (StrFind(";7;",ansi_buf))
+ { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv;
+ if (tt_cur_bg>7) { tt_cur_bg-=8; };
+ };
+
if (StrFind(";1m",ansi_buf)) { bold=8; };
if (StrFind("[1m",ansi_buf)) { bold=8; };
if (StrFind("[1;",ansi_buf)) { bold=8; };
@@ -706,7 +726,11 @@ U0 TempleTermSession(I64 sock)
if (StrFind("107",ansi_buf)) { tt_cur_bg=bold+7; };
if (StrFind("[0m",ansi_buf)) { tt_cur_bg=BLACK; tt_cur_fg=WHITE; };
- if (StrFind("[7m",ansi_buf)) { tt_cur_bg=WHITE; tt_cur_fg=BLACK; };
+
+ if (StrFind("[7m",ansi_buf))
+ { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv;
+ if (tt_cur_bg>7) { tt_cur_bg-=8; };
+ };
break;
@@ -755,6 +779,8 @@ U0 TempleTermSession(I64 sock)
ansi_buf[ansi_pos-1]=0;
tt_cur_x=Str2I64(ansi_buf+k);
tt_cur_y=Str2I64(ansi_buf+1);
+ tt_cur_fg=WHITE;
+ tt_cur_bg=BLACK;
};
break;
@@ -810,7 +836,15 @@ U0 TempleTermSession(I64 sock)
};
break;
+ // line wrapping doesn't seem to matter...
+ case 'h':
+ break;
+ case 'l':
+ break;
+
default:
+ //StrPrint(sr_buf, "Code: %02X", ansi_buf[ansi_pos-1]);
+ //PopUpOk(sr_buf);
break;
};
@@ -847,6 +881,10 @@ U0 TempleTermSession(I64 sock)
if(tt_cur_x<0) { tt_cur_x=0; };
break;
case 10:
+ // change back to default attrs when we line feed?
+ tt_cur_bg=BLACK;
+ tt_cur_fg=WHITE;
+
tt_cur_y++;
break;
case 13:
@@ -867,6 +905,10 @@ U0 TempleTermSession(I64 sock)
if(tt_cur_x==Fs->parent_task->win_width)
{
tt_cur_x-=Fs->parent_task->win_width;
+ // change back to default attrs when we line wrap?
+ tt_cur_bg=BLACK;
+ tt_cur_fg=WHITE;
+
tt_cur_y++;
};
break;
@@ -953,6 +995,12 @@ U0 TempleTermSession(I64 sock)
Sleep(1);
};
+ Free(rz_ibuf);
+ Free(rz_filename);
+ Free(rz_shortfn);
+ Free(rx_buf);
+ Free(ad_seq);
+ Free(sr_buf);
PostMsg(Fs->parent_task,MSG_KEY_DOWN_UP,REMOTE_Q,0);
}
@@ -1118,9 +1166,6 @@ I64 TempleTermConnect(U8 *host, I64 port=23)
};
- Free(rz_shortfn);
- Free(rz_filename);
- Free(rz_ibuf);
RegWrite("WalnutLabs/TempleTerm", "Fs->parent_task->display_flags=%d;\n",
Fs->display_flags);
RegAppend("WalnutLabs/TempleTerm", "Fs->parent_task->win_left=%d;\n",
@@ -1137,10 +1182,10 @@ I64 TempleTermConnect(U8 *host, I64 port=23)
Fs->win_height);
Kill(session);
close(sock);
- Fs->draw_it=NULL;
+ PopUpOk("Connection closed.");
+ Fs->draw_it=NULL;
DCFill;
SndRst;
- PopUpOk("Connection closed.");
MenuPop;
return 0;
}
@@ -1152,8 +1197,6 @@ I64 TempleTermConnect(U8 *host, I64 port=23)
};
}
-
-
U0 Run()
{
res=0;