Skip to content
Snippets Groups Projects
Commit 8db54999 authored by George Nachman's avatar George Nachman
Browse files

Add esc-c to reset terminal.

parent 2478ad21
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -140,6 +140,9 @@
#define ANSICSI_RCP 3006 // Restore cursor position
#define ANSICSI_CBT 3007 // Back tab
 
#define ANSI_RIS 3100 // Reset to initial state (there's also a CSI version)
// Toggle between ansi/vt52
#define STRICT_ANSI_MODE 4000
 
Loading
Loading
Loading
Loading
@@ -1294,8 +1294,16 @@ static char* FormatCont(int c)
}
}
break;
case VT100CSI_RIS: break;
case VT100CSI_RM: break;
case VT100CSI_RIS:
// As far as I can tell, this is not part of the standard and should not be
// supported. -- georgen 7/31/11
break;
case ANSI_RIS:
[TERMINAL reset];
break;
case VT100CSI_RM:
break;
case VT100CSI_SCS0: charset[0]=(token.u.code=='0'); break;
case VT100CSI_SCS1: charset[1]=(token.u.code=='0'); break;
case VT100CSI_SCS2: charset[2]=(token.u.code=='0'); break;
Loading
Loading
Loading
Loading
@@ -149,6 +149,7 @@ static BOOL isString(unsigned char *, NSStringEncoding);
static size_t getCSIParam(unsigned char *, size_t, CSIParam *, VT100Screen *);
static VT100TCC decode_csi(unsigned char *, size_t, size_t *,VT100Screen *);
static VT100TCC decode_xterm(unsigned char *, size_t, size_t *,NSStringEncoding);
static VT100TCC decode_ansi(unsigned char *,size_t, size_t *,VT100Screen *);
static VT100TCC decode_other(unsigned char *, size_t, size_t *);
static VT100TCC decode_control(unsigned char *, size_t, size_t *,NSStringEncoding,VT100Screen *);
static int decode_utf8_char(unsigned char *, size_t, unsigned int *);
Loading
Loading
@@ -173,6 +174,15 @@ static BOOL isXTERM(unsigned char *code, size_t len)
return NO;
}
 
static BOOL isANSI(unsigned char *code, size_t len)
{
// Currently, we only support esc-c as an ANSI code (other ansi codes are CSI).
if (len >= 2 && code[0] == ESC && code[1] == 'c') {
return YES;
}
return NO;
}
static BOOL isString(unsigned char *code,
NSStringEncoding encoding)
{
Loading
Loading
@@ -377,6 +387,24 @@ static size_t getCSIParam(unsigned char *datap,
(((pm).p[(n)] = (pm).p[(n)] < 0 ? (d):(pm).p[(n)]), \
((pm).count = (pm).count > (n) + 1 ? (pm).count : (n) + 1 ))
 
static VT100TCC decode_ansi(unsigned char *datap,
size_t datalen,
size_t *rmlen,
VT100Screen *SCREEN)
{
VT100TCC result;
result.type = VT100_UNKNOWNCHAR;
if (datalen >= 2 && datap[0] == ESC) {
switch (datap[1]) {
case 'c':
result.type = ANSI_RIS;
*rmlen = 2;
break;
}
}
return result;
}
static VT100TCC decode_csi(unsigned char *datap,
size_t datalen,
size_t *rmlen,VT100Screen *SCREEN)
Loading
Loading
@@ -971,11 +999,11 @@ static VT100TCC decode_control(unsigned char *datap,
 
if (isCSI(datap, datalen)) {
result = decode_csi(datap, datalen, rmlen, SCREEN);
}
else if (isXTERM(datap,datalen)) {
result = decode_xterm(datap,datalen,rmlen,enc);
}
else {
} else if (isXTERM(datap,datalen)) {
result = decode_xterm(datap, datalen, rmlen, enc);
} else if (isANSI(datap, datalen)) {
result = decode_ansi(datap, datalen, rmlen, SCREEN);
} else {
NSCParameterAssert(datalen > 0);
 
switch ( *datap ) {
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment