From 021906ae86ce40587f32cb96691b443f4626281c Mon Sep 17 00:00:00 2001 From: TorchedSammy <38820196+TorchedSammy@users.noreply.github.com> Date: Tue, 24 May 2022 07:14:31 -0400 Subject: [PATCH] feat: attempt to implement fg builtin --- exec.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/exec.go b/exec.go index 2e0e0b1..9a6405c 100644 --- a/exec.go +++ b/exec.go @@ -17,6 +17,7 @@ import ( "hilbish/util" rt "github.com/arnodel/golua/runtime" + "golang.org/x/sys/unix" "mvdan.cc/sh/v3/shell" //"github.com/yuin/gopher-lua/parse" "mvdan.cc/sh/v3/interp" @@ -273,6 +274,23 @@ func execHandle(bg bool) interp.ExecHandlerFunc { } } + // sh interp has "fg" as unimplemented builtin, which panics + if args[0] == "_fg" { + j := jobs.getLatest() + if j == nil || j.pid == 0 { + return interp.NewExitStatus(1) + } + + pgid, _ := syscall.Getpgid(j.pid) + + // tcsetpgrp + unix.IoctlSetPointerInt(0, unix.TIOCSPGRP, pgid) + proc, _ := os.FindProcess(j.pid) + proc.Wait() + + return interp.NewExitStatus(0) + } + // If command is defined in Lua then run it luacmdArgs := rt.NewTable() for i, str := range args[1:] {