X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Fgui_shell_src%2Fmain.c;h=344bba0cc672e97407f35d32307a4f9b94fb907f;hb=3bf25161f4e1cba15152c5485dcf391aba90b1e9;hp=cfc7e2a3c1371e64fcd16a6f14f93f8144aebc3c;hpb=8c20de5e4ec260d9a7ee6d737b7601fba1c871c0;p=tpg%2Facess2.git diff --git a/Usermode/Applications/gui_shell_src/main.c b/Usermode/Applications/gui_shell_src/main.c index cfc7e2a3..344bba0c 100644 --- a/Usermode/Applications/gui_shell_src/main.c +++ b/Usermode/Applications/gui_shell_src/main.c @@ -22,7 +22,7 @@ int main(int argc, char *argv[], const char **envp); int Term_KeyHandler(tHWND Window, int bPress, uint32_t KeySym, uint32_t Translated); int Term_MouseHandler(tHWND Window, int bPress, int Button, int Row, int Col); -void Term_HandleOutput(int Len, const char *Buf); +void Term_HandleOutput(tTerminal *Term, int Len, const char *Buf); // === GLOBALS === tHWND gMainWindow; @@ -55,14 +55,14 @@ int main(int argc, char *argv[], const char **envp) AxWin3_RichText_SetCursorType (gMainWindow, AXWIN3_RICHTEXT_CURSOR_INV); AxWin3_RichText_SetCursorBlink (gMainWindow, 1); - Display_Init(80, 25, 100); + tTerminal *term = Display_Init(80, 25, 100); AxWin3_ResizeWindow(gMainWindow, 80*8, 25*16); AxWin3_MoveWindow(gMainWindow, 20, 50); AxWin3_ShowWindow(gMainWindow, 1); AxWin3_FocusWindow(gMainWindow); // Create PTY - giPTYHandle = _SysOpen("/Devices/pts/gui0", OPENFLAG_READ|OPENFLAG_WRITE|OPENFLAG_CREATE); + giPTYHandle = _SysOpen("/Devices/pts/ptmx", OPENFLAG_READ|OPENFLAG_WRITE); if( giPTYHandle < 0 ) { perror("Unable to create/open PTY"); _SysDebug("Unable to create/open PTY: %s", strerror(errno)); @@ -70,6 +70,7 @@ int main(int argc, char *argv[], const char **envp) } // - Initialise { + _SysIOCtl(giPTYHandle, PTY_IOCTL_SETID, "gui0"); struct ptymode mode = {.InputMode = PTYIMODE_CANON|PTYIMODE_ECHO, .OutputMode=0}; struct ptydims dims = {.W = 80, .H = 25}; _SysIOCtl(giPTYHandle, PTY_IOCTL_SETMODE, &mode); @@ -78,7 +79,7 @@ int main(int argc, char *argv[], const char **envp) // Spawn shell { - int fd = _SysOpen("/Devices/pts/gui0c", OPENFLAG_READ|OPENFLAG_WRITE); + int fd = _SysOpen("/Devices/pts/gui0", OPENFLAG_READ|OPENFLAG_WRITE); int fds[] = {fd, fd, fd}; const char *argv[] = {"CLIShell", NULL}; int pid = _SysSpawn("/Acess/Bin/CLIShell", argv, envp, 3, fds, NULL); @@ -104,7 +105,7 @@ int main(int argc, char *argv[], const char **envp) int len = _SysRead(giPTYHandle, buf, sizeof(buf)); if( len <= 0 ) break; - Term_HandleOutput(len, buf); + Term_HandleOutput(term, len, buf); } } @@ -183,7 +184,7 @@ int Term_MouseHandler(tHWND Window, int bPress, int Button, int Row, int Col) return 0; } -void Term_HandleOutput(int Len, const char *Buf) +void Term_HandleOutput(tTerminal *Term, int Len, const char *Buf) { // TODO: Handle graphical / accelerated modes @@ -192,15 +193,15 @@ void Term_HandleOutput(int Len, const char *Buf) while( ofs < Len ) { - esc_len = Term_HandleVT100(Len - ofs, Buf + ofs); + esc_len = Term_HandleVT100(Term, Len - ofs, Buf + ofs); if( esc_len < 0 ) { - Display_AddText(-esc_len, Buf + ofs); + Display_AddText(Term, -esc_len, Buf + ofs); esc_len = -esc_len; } ofs += esc_len; //_SysDebug("Len = %i, ofs = %i", Len, ofs); } - Display_Flush(); + Display_Flush(Term); }