// +build !windows

// Package eows is used to Execute commands Over WebSocket
package eows

import (
	"fmt"
	"os"
	"syscall"
)

// Signal sends a signal to the running command / process
func (e *ExecOverWS) Signal(signal string) error {
	var sig os.Signal
	switch signal {
	case "quit", "SIGQUIT":
		sig = syscall.SIGQUIT
	case "terminated", "SIGTERM":
		sig = syscall.SIGTERM
	case "interrupt", "SIGINT":
		sig = syscall.SIGINT
	case "aborted", "SIGABRT":
		sig = syscall.SIGABRT
	case "continued", "SIGCONT":
		sig = syscall.SIGCONT
	case "hangup", "SIGHUP":
		sig = syscall.SIGHUP
	case "killed", "SIGKILL":
		sig = syscall.SIGKILL
	case "stopped (signal)", "SIGSTOP":
		sig = syscall.SIGSTOP
	case "stopped", "SIGTSTP":
		sig = syscall.SIGTSTP
	case "user defined signal 1", "SIGUSR1":
		sig = syscall.SIGUSR1
	case "user defined signal 2", "SIGUSR2":
		sig = syscall.SIGUSR2
	default:
		return fmt.Errorf("Unsupported signal")
	}

	if e.proc == nil {
		return fmt.Errorf("Cannot retrieve process")
	}

	e.logDebug("SEND signal %v to proc %v", sig, e.proc.Pid)
	return e.proc.Signal(sig)
}