os_std.go

 1//go:build !unix
 2
 3package vfs
 4
 5import (
 6	"io/fs"
 7	"os"
 8)
 9
10const (
11	isUnix      = false
12	_O_NOFOLLOW = 0
13)
14
15func osAccess(path string, flags AccessFlag) error {
16	fi, err := os.Stat(path)
17	if err != nil {
18		return err
19	}
20	if flags == ACCESS_EXISTS {
21		return nil
22	}
23
24	const (
25		S_IREAD  = 0400
26		S_IWRITE = 0200
27		S_IEXEC  = 0100
28	)
29
30	var want fs.FileMode = S_IREAD
31	if flags == ACCESS_READWRITE {
32		want |= S_IWRITE
33	}
34	if fi.IsDir() {
35		want |= S_IEXEC
36	}
37	if fi.Mode()&want != want {
38		return fs.ErrPermission
39	}
40	return nil
41}
42
43func osSetMode(file *os.File, modeof string) error {
44	fi, err := os.Stat(modeof)
45	if err != nil {
46		return err
47	}
48	file.Chmod(fi.Mode())
49	return nil
50}