package osutil
import (
"context"
"errors"
"fmt"
"io/fs"
"os"
"syscall"
"golang.org/x/sys/windows"
)
const UnixPathMax = 108
type Stat struct {
Uid uint32
Gid uint32
}
func SysStat(_ fs.FileInfo) (Stat, bool) {
return Stat{Uid: 0, Gid: 0}, false
}
const SigInt = Signal(2)
const SigKill = Signal(9)
type Signal int
func SysKill(pid int, _ Signal) error {
return windows.GenerateConsoleCtrlEvent(syscall.CTRL_BREAK_EVENT, uint32(pid))
}
func Dup2(_ int, _ syscall.Handle) error {
return errors.New("unimplemented")
}
func SignalName(sig os.Signal) string {
switch sig {
case syscall.SIGINT:
return "SIGINT"
case syscall.SIGTERM:
return "SIGTERM"
default:
return fmt.Sprintf("Signal(%d)", sig)
}
}
func Sysctl(_ context.Context, _ string) (string, error) {
return "", errors.New("sysctl: unimplemented on Windows")
}
func IsEACCES(err error) bool {
return errors.Is(err, syscall.ERROR_ACCESS_DENIED) || errors.Is(err, syscall.WSAEACCES)
}