diff options
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs')
5 files changed, 23 insertions, 14 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go index b789d1203..11afb1254 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/const.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/const.go @@ -234,6 +234,7 @@ const ( _FCNTL_CKSM_FILE _FcntlOpcode = 41 _FCNTL_RESET_CACHE _FcntlOpcode = 42 _FCNTL_NULL_IO _FcntlOpcode = 43 + _FCNTL_BLOCK_ON_CONNECT _FcntlOpcode = 44 ) // https://sqlite.org/c3ref/c_shm_exclusive.html @@ -246,6 +247,6 @@ const ( _SHM_EXCLUSIVE _ShmFlag = 8 _SHM_NLOCK = 8 - _SHM_BASE = 120 + _SHM_BASE = (22 + _SHM_NLOCK) * 4 _SHM_DMS = _SHM_BASE + _SHM_NLOCK ) diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go index 65409823c..8e65ca660 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go @@ -13,22 +13,28 @@ import ( type vfsOS struct{} func (vfsOS) FullPathname(path string) (string, error) { - path, err := filepath.Abs(path) + link, err := evalSymlinks(path) if err != nil { return "", err } - return path, testSymlinks(filepath.Dir(path)) + full, err := filepath.Abs(link) + if err == nil && link != path { + err = _OK_SYMLINK + } + return full, err } -func testSymlinks(path string) error { - p, err := filepath.EvalSymlinks(path) - if err != nil { - return err +func evalSymlinks(path string) (string, error) { + var file string + _, err := os.Lstat(path) + if errors.Is(err, fs.ErrNotExist) { + path, file = filepath.Split(path) } - if p != path { - return _OK_SYMLINK + path, err = filepath.EvalSymlinks(path) + if err != nil { + return "", err } - return nil + return filepath.Join(path, file), nil } func (vfsOS) Delete(path string, syncDir bool) error { diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go index 419fd1c64..94347f1cc 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go @@ -28,9 +28,8 @@ func (memVFS) Open(name string, flags vfs.OpenFlag) (vfs.File, vfs.OpenFlag, err // // We refuse to open all other file types, // but returning OPEN_MEMORY means SQLite won't ask us to. - const types = vfs.OPEN_MAIN_DB | - vfs.OPEN_TEMP_DB | - vfs.OPEN_TEMP_JOURNAL + const types = vfs.OPEN_MAIN_DB | vfs.OPEN_TEMP_DB | + vfs.OPEN_TRANSIENT_DB | vfs.OPEN_TEMP_JOURNAL if flags&types == 0 { // notest // OPEN_MEMORY return nil, flags, sqlite3.CANTOPEN diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go index 7cc5b2a23..0be523ad6 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go @@ -26,7 +26,6 @@ type vfsShm struct { ptrs []ptr_t stack [1]stk_t fileLock bool - blocking bool sync.Mutex } diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go index c70507caa..2656ddb49 100644 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +++ b/vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go @@ -381,6 +381,10 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt file.SetDB(ctx.Value(util.ConnKey{})) return _OK } + + case _FCNTL_NULL_IO: + file.Close() + return _OK } return _NOTFOUND |
