defer waiting for the process to close instead direct
This commit is contained in:
@ -101,7 +101,6 @@ func server_run(g *gocui.Gui) {
|
||||
if buf.Scan() {
|
||||
g.Update(func(g *gocui.Gui) error {
|
||||
v, err := g.View("srv_log")
|
||||
g.SetCurrentView("srv_log")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -125,7 +124,6 @@ func server_run(g *gocui.Gui) {
|
||||
fmt.Fprintln(v, buf.Text())
|
||||
}
|
||||
|
||||
g.SetCurrentView("input")
|
||||
return nil
|
||||
})
|
||||
} else {
|
||||
@ -139,32 +137,32 @@ func main() {
|
||||
reload()
|
||||
|
||||
//init the CUI
|
||||
g, err := gocui.NewGui(gocui.OutputNormal, true)
|
||||
gui, err := gocui.NewGui(gocui.OutputNormal, true)
|
||||
if err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
defer g.Close()
|
||||
defer gui.Close()
|
||||
|
||||
g.SetManagerFunc(layout)
|
||||
gui.SetManagerFunc(layout)
|
||||
|
||||
g.Cursor = false
|
||||
gui.Cursor = false
|
||||
|
||||
if err := g.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
|
||||
if err := gui.SetKeybinding("", gocui.KeyCtrlC, gocui.ModNone, quit); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
if err := g.SetKeybinding("", gocui.KeyCtrlI, gocui.ModNone, procstatus); err != nil {
|
||||
if err := gui.SetKeybinding("", gocui.KeyCtrlI, gocui.ModNone, procstatus); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
if err := g.SetKeybinding("", gocui.KeyCtrlD, gocui.ModNone, killserver); err != nil {
|
||||
if err := gui.SetKeybinding("", gocui.KeyCtrlD, gocui.ModNone, killserver); err != nil {
|
||||
log.Panicln(err)
|
||||
}
|
||||
|
||||
go server_run(g)
|
||||
go server_run(gui)
|
||||
|
||||
//run the CUI main loop
|
||||
if err := g.MainLoop(); err != nil && err != gocui.ErrQuit {
|
||||
if err := gui.MainLoop(); err != nil && err != gocui.ErrQuit {
|
||||
log.Panicln(err)
|
||||
}
|
||||
}
|
||||
@ -278,7 +276,7 @@ func quit(g *gocui.Gui, v *gocui.View) error {
|
||||
v_status.Clear()
|
||||
fmt.Fprintf(v_status, "Server process still running, sending SIGINT... ")
|
||||
srv_cmd.Process.Signal(syscall.SIGINT)
|
||||
err = srv_cmd.Wait()
|
||||
defer srv_cmd.Wait()
|
||||
if err != nil {
|
||||
fmt.Fprintf(v_status, fmt.Sprint(err))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user