diff options
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/file.go | 19 | ||||
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/memdb/api.go | 3 | ||||
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/os_std.go (renamed from vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go) | 11 | ||||
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go | 14 | ||||
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go | 2 |
5 files changed, 25 insertions, 24 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go index 176b2507b..ebd42e9ad 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go @@ -19,17 +19,18 @@ func (vfsOS) FullPathname(path string) (string, error) { if err != nil { return "", err } - fi, err := os.Lstat(path) + return path, testSymlinks(filepath.Dir(path)) +} + +func testSymlinks(path string) error { + p, err := filepath.EvalSymlinks(path) if err != nil { - if errors.Is(err, fs.ErrNotExist) { - return path, nil - } - return "", err + return err } - if fi.Mode()&fs.ModeSymlink != 0 { - err = _OK_SYMLINK + if p != path { + return _OK_SYMLINK } - return path, err + return nil } func (vfsOS) Delete(path string, syncDir bool) error { @@ -74,7 +75,7 @@ func (vfsOS) Open(name string, flags OpenFlag) (File, OpenFlag, error) { } func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error) { - var oflags int + oflags := _O_NOFOLLOW if flags&OPEN_EXCLUSIVE != 0 { oflags |= os.O_EXCL } diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/api.go b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/api.go index 843488966..eb12eba09 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/api.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/api.go @@ -43,7 +43,8 @@ func Create(name string, data []byte) { } // Convert data from WAL/2 to rollback journal. - if len(data) >= 20 && (data[18] == 2 && data[19] == 2 || + if len(data) >= 20 && (false || + data[18] == 2 && data[19] == 2 || data[18] == 3 && data[19] == 3) { data[18] = 1 data[19] = 1 diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std.go index 1621c0998..87ce58b67 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_access.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std.go @@ -7,6 +7,8 @@ import ( "os" ) +const _O_NOFOLLOW = 0 + func osAccess(path string, flags AccessFlag) error { fi, err := os.Stat(path) if err != nil { @@ -34,3 +36,12 @@ func osAccess(path string, flags AccessFlag) error { } return nil } + +func osSetMode(file *os.File, modeof string) error { + fi, err := os.Stat(modeof) + if err != nil { + return err + } + file.Chmod(fi.Mode()) + return nil +} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go deleted file mode 100644 index ac4904773..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_std_mode.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build !unix || sqlite3_nosys - -package vfs - -import "os" - -func osSetMode(file *os.File, modeof string) error { - fi, err := os.Stat(modeof) - if err != nil { - return err - } - file.Chmod(fi.Mode()) - return nil -} diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go index 111af799a..7a540889b 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go @@ -9,6 +9,8 @@ import ( "golang.org/x/sys/unix" ) +const _O_NOFOLLOW = unix.O_NOFOLLOW + func osAccess(path string, flags AccessFlag) error { var access uint32 // unix.F_OK switch flags { |