Skip to content

Commit 2d91760

Browse files
committed
Portability.
1 parent 38d4254 commit 2d91760

File tree

10 files changed

+123
-40
lines changed

10 files changed

+123
-40
lines changed

vfs/lock.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
//go:build !sqlite3_nolock
2+
13
package vfs
24

35
import (

vfs/nolock.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
//go:build sqlite3_nolock
2+
3+
package vfs
4+
5+
const (
6+
_PENDING_BYTE = 0x40000000
7+
_RESERVED_BYTE = (_PENDING_BYTE + 1)
8+
_SHARED_FIRST = (_PENDING_BYTE + 2)
9+
_SHARED_SIZE = 510
10+
)
11+
12+
func (f *vfsFile) Lock(lock LockLevel) error {
13+
return nil
14+
}
15+
16+
func (f *vfsFile) Unlock(lock LockLevel) error {
17+
return nil
18+
}
19+
20+
func (f *vfsFile) CheckReservedLock() (bool, error) {
21+
return false, nil
22+
}

vfs/os_nolock.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//go:build sqlite3_nolock && solaris && !illumos
2+
3+
package vfs
4+
5+
import (
6+
"os"
7+
"time"
8+
)
9+
10+
func osUnlock(file *os.File, start, len int64) _ErrorCode {
11+
return _OK
12+
}
13+
14+
func osLock(file *os.File, typ int16, start, len int64, timeout time.Duration, def _ErrorCode) _ErrorCode {
15+
return _OK
16+
}
17+
18+
func osReadLock(file *os.File, start, len int64, timeout time.Duration) _ErrorCode {
19+
return _OK
20+
}
21+
22+
func osWriteLock(file *os.File, start, len int64, timeout time.Duration) _ErrorCode {
23+
return _OK
24+
}
25+
26+
func osCheckLock(file *os.File, start, len int64) (bool, _ErrorCode) {
27+
return false, _OK
28+
}

vfs/os_std_access.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
//go:build !unix
2+
3+
package vfs
4+
5+
import (
6+
"io/fs"
7+
"os"
8+
)
9+
10+
const (
11+
_S_IREAD = 0400
12+
_S_IWRITE = 0200
13+
_S_IEXEC = 0100
14+
)
15+
16+
func osAccess(path string, flags AccessFlag) error {
17+
fi, err := os.Stat(path)
18+
if err != nil {
19+
return err
20+
}
21+
if flags == ACCESS_EXISTS {
22+
return nil
23+
}
24+
25+
var want fs.FileMode = _S_IREAD
26+
if flags == ACCESS_READWRITE {
27+
want |= _S_IWRITE
28+
}
29+
if fi.IsDir() {
30+
want |= _S_IEXEC
31+
}
32+
if fi.Mode()&want != want {
33+
return fs.ErrPermission
34+
}
35+
return nil
36+
}

vfs/os_other.go renamed to vfs/os_std_alloc.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ import (
77
"os"
88
)
99

10-
func osSync(file *os.File, fullsync, dataonly bool) error {
11-
return file.Sync()
12-
}
13-
1410
func osAllocate(file *os.File, size int64) error {
1511
off, err := file.Seek(0, io.SeekEnd)
1612
if err != nil {

vfs/os_std_mode.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
//go:build !unix
2+
3+
package vfs
4+
5+
import "os"
6+
7+
func osSetMode(file *os.File, modeof string) error {
8+
fi, err := os.Stat(modeof)
9+
if err != nil {
10+
return err
11+
}
12+
file.Chmod(fi.Mode())
13+
return nil
14+
}

vfs/os_std_open.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//go:build !windows
2+
3+
package vfs
4+
5+
import (
6+
"io/fs"
7+
"os"
8+
)
9+
10+
func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) {
11+
return os.OpenFile(name, flag, perm)
12+
}

vfs/os_std_sync.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//go:build !linux && (!darwin || sqlite3_bsd)
2+
3+
package vfs
4+
5+
import "os"
6+
7+
func osSync(file *os.File, fullsync, dataonly bool) error {
8+
return file.Sync()
9+
}

vfs/os_unix.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,13 @@
33
package vfs
44

55
import (
6-
"io/fs"
76
"os"
87
"syscall"
98
"time"
109

1110
"golang.org/x/sys/unix"
1211
)
1312

14-
func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) {
15-
return os.OpenFile(name, flag, perm)
16-
}
17-
1813
func osAccess(path string, flags AccessFlag) error {
1914
var access uint32 // unix.F_OK
2015
switch flags {

vfs/os_windows.go

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -25,37 +25,6 @@ func osOpenFile(name string, flag int, perm fs.FileMode) (*os.File, error) {
2525
return os.NewFile(uintptr(r), name), nil
2626
}
2727

28-
func osAccess(path string, flags AccessFlag) error {
29-
fi, err := os.Stat(path)
30-
if err != nil {
31-
return err
32-
}
33-
if flags == ACCESS_EXISTS {
34-
return nil
35-
}
36-
37-
var want fs.FileMode = windows.S_IRUSR
38-
if flags == ACCESS_READWRITE {
39-
want |= windows.S_IWUSR
40-
}
41-
if fi.IsDir() {
42-
want |= windows.S_IXUSR
43-
}
44-
if fi.Mode()&want != want {
45-
return fs.ErrPermission
46-
}
47-
return nil
48-
}
49-
50-
func osSetMode(file *os.File, modeof string) error {
51-
fi, err := os.Stat(modeof)
52-
if err != nil {
53-
return err
54-
}
55-
file.Chmod(fi.Mode())
56-
return nil
57-
}
58-
5928
func osGetSharedLock(file *os.File, timeout time.Duration) _ErrorCode {
6029
// Acquire the PENDING lock temporarily before acquiring a new SHARED lock.
6130
rc := osReadLock(file, _PENDING_BYTE, 1, timeout)

0 commit comments

Comments
 (0)