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}