- // Spawn shell
- giChildStdout = open("/Devices/FIFO/anon", O_RDWR);
- giChildStdin = open("/Devices/FIFO/anon", O_RDWR);
+ // Create PTY
+ giPTYHandle = _SysOpen("/Devices/pts/gui0", OPENFLAG_READ|OPENFLAG_WRITE|OPENFLAG_CREATE);
+ if( giPTYHandle < 0 ) {
+ perror("Unable to create/open PTY");
+ _SysDebug("Unable to create/open PTY: %s", strerror(errno));
+ return -1;
+ }
+ // - Initialise
+ {
+ struct ptymode mode = {.InputMode = PTYIMODE_CANON|PTYIMODE_ECHO, .OutputMode=0};
+ struct ptydims dims = {.W = 80, .H = 25};
+ _SysIOCtl(giPTYHandle, PTY_IOCTL_SETMODE, &mode);
+ _SysIOCtl(giPTYHandle, PTY_IOCTL_SETDIMS, &dims);
+ }