git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
| inline |
side by side
Kernel/vterm - Fix clobbering of AltBuf's heap footer
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
drv
/
vterm.h
diff --git
a/KernelLand/Kernel/drv/vterm.h
b/KernelLand/Kernel/drv/vterm.h
index
7b01366
..
65cdd65
100644
(file)
--- a/
KernelLand/Kernel/drv/vterm.h
+++ b/
KernelLand/Kernel/drv/vterm.h
@@
-46,6
+46,8
@@
struct sVTerm
{
int Mode; //!< Current Mode (see ::eTplTerminal_Modes)
int Flags; //!< Flags (see VT_FLAG_*)
+
+ void *VT100Info;
short Width; //!< Virtual Width
short Height; //!< Virtual Height
@@
-62,6
+64,7
@@
struct sVTerm
int AltWritePos; //!< Alternate write position
short ScrollTop; //!< Top of scrolling region (smallest)
short ScrollHeight; //!< Length of scrolling region
+ int SavedWritePos; //!< Saved cursor position (\e[s and \e[u)
char EscapeCodeCache[16];
size_t EscapeCodeLen;
@@
-78,6
+81,15
@@
struct sVTerm
// Call set again, it's freed, and if NULL it doesn't get reallocated.
tVideo_IOCtl_Bitmap *VideoCursor;
+ struct {
+ int Current;
+ size_t CurrentSize;
+ size_t Offset;
+ int CachePos;
+ char Cache[32];
+ size_t PreEat;
+ } Cmd2D;
+
tPTY *PTY;
};
@@
-94,6
+106,7
@@
extern int giVT_InputDevHandle;
// === FUNCTIONS ===
extern void VT_SetResolution(int Width, int Height);
extern void VT_SetTerminal(int ID);
+extern void VT_int_Handle2DCmd(void *Handle, size_t Length, const void *Data);
// --- Output ---
extern void VT_InitOutput(void);
extern void VT_SetMode(int Mode);
@@
-108,9
+121,11
@@
extern void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int arg
extern int VT_int_ParseEscape(tVTerm *Term, const char *Buffer, size_t Bytes);
// --- Terminal Buffer ---
extern void VT_int_PutString(tVTerm *Term, const Uint8 *Buffer, Uint Count);
+extern void VT_int_PutRawString(tVTerm *Term, const Uint8 *String, size_t Bytes);
extern void VT_int_PutChar(tVTerm *Term, Uint32 Ch);
extern void VT_int_ScrollText(tVTerm *Term, int Count);
extern void VT_int_ClearLine(tVTerm *Term, int Num);
+extern void VT_int_ClearInLine(tVTerm *Term, int Row, int FirstCol, int LastCol);
extern void VT_int_Resize(tVTerm *Term, int NewWidth, int NewHeight);
extern void VT_int_ToggleAltBuffer(tVTerm *Term, int Enabled);
UCC
git Repository :: git.ucc.asn.au