summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/vfs/file.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2025-03-03 09:51:42 +0000
committerLibravatar GitHub <noreply@github.com>2025-03-03 09:51:42 +0000
commit0e2e8e54ab85889d3c42cf8b0744c3253065983b (patch)
treecd56b8adc1745707063cda5e9d34af8e32d40360 /vendor/github.com/ncruces/go-sqlite3/vfs/file.go
parent[chore] migrate oauth2 -> codeberg (#3857) (diff)
downloadgotosocial-0e2e8e54ab85889d3c42cf8b0744c3253065983b.tar.xz
[chore]: Bump github.com/ncruces/go-sqlite3 from 0.23.0 to 0.24.0 (#3862)
Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.23.0 to 0.24.0. - [Release notes](https://github.com/ncruces/go-sqlite3/releases) - [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.23.0...v0.24.0) --- updated-dependencies: - dependency-name: github.com/ncruces/go-sqlite3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs/file.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/vfs/file.go23
1 files changed, 18 insertions, 5 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go
index bc90555e7..0a3c9d622 100644
--- a/vendor/github.com/ncruces/go-sqlite3/vfs/file.go
+++ b/vendor/github.com/ncruces/go-sqlite3/vfs/file.go
@@ -88,10 +88,13 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error
oflags |= os.O_RDWR
}
+ isCreate := flags&(OPEN_CREATE) != 0
+ isJournl := flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0
+
var err error
var f *os.File
if name == nil {
- f, err = os.CreateTemp("", "*.db")
+ f, err = os.CreateTemp(os.Getenv("SQLITE_TMPDIR"), "*.db")
} else {
f, err = osutil.OpenFile(name.String(), oflags, 0666)
}
@@ -102,6 +105,10 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error
if errors.Is(err, syscall.EISDIR) {
return nil, flags, _CANTOPEN_ISDIR
}
+ if isCreate && isJournl && errors.Is(err, fs.ErrPermission) &&
+ osAccess(name.String(), ACCESS_EXISTS) != nil {
+ return nil, flags, _READONLY_DIRECTORY
+ }
return nil, flags, err
}
@@ -119,10 +126,8 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error
File: f,
psow: true,
readOnly: flags&OPEN_READONLY != 0,
- syncDir: canSyncDirs &&
- flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0 &&
- flags&(OPEN_CREATE) != 0,
- shm: NewSharedMemory(name.String()+"-shm", flags),
+ syncDir: canSyncDirs && isCreate && isJournl,
+ shm: NewSharedMemory(name.String()+"-shm", flags),
}
return &file, flags, nil
}
@@ -154,6 +159,14 @@ func (f *vfsFile) Close() error {
return f.File.Close()
}
+func (f *vfsFile) ReadAt(p []byte, off int64) (n int, err error) {
+ return osReadAt(f.File, p, off)
+}
+
+func (f *vfsFile) WriteAt(p []byte, off int64) (n int, err error) {
+ return osWriteAt(f.File, p, off)
+}
+
func (f *vfsFile) Sync(flags SyncFlag) error {
dataonly := (flags & SYNC_DATAONLY) != 0
fullsync := (flags & 0x0f) == SYNC_FULL