summaryrefslogtreecommitdiff
path: root/vendor/modernc.org/sqlite/fcntl.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-09-27 22:53:36 +0000
committerLibravatar GitHub <noreply@github.com>2024-09-27 22:53:36 +0000
commit3f9a1dbfff1b33fd6033e6fa3ac4ed63b3b0a471 (patch)
treea3dcfc2ec04fc2e08f5222621fb3b1106d94d2e9 /vendor/modernc.org/sqlite/fcntl.go
parent[bugfix] better handle ogg container format (#3365) (diff)
downloadgotosocial-3f9a1dbfff1b33fd6033e6fa3ac4ed63b3b0a471.tar.xz
update modernc/sqlite to v1.33.1 (with our concurrency workaround) (#3367)
Diffstat (limited to 'vendor/modernc.org/sqlite/fcntl.go')
-rw-r--r--vendor/modernc.org/sqlite/fcntl.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/vendor/modernc.org/sqlite/fcntl.go b/vendor/modernc.org/sqlite/fcntl.go
new file mode 100644
index 000000000..a16e7a129
--- /dev/null
+++ b/vendor/modernc.org/sqlite/fcntl.go
@@ -0,0 +1,47 @@
+// Copyright 2024 The Sqlite Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package sqlite // import "modernc.org/sqlite"
+
+import (
+ "runtime"
+ "unsafe"
+
+ "modernc.org/libc"
+ sqlite3 "modernc.org/sqlite/lib"
+)
+
+// Access to sqlite3_file_control
+type FileControl interface {
+ // Set or query SQLITE_FCNTL_PERSIST_WAL, returns set mode or query result
+ FileControlPersistWAL(dbName string, mode int) (int, error)
+}
+
+var _ FileControl = (*conn)(nil)
+
+func (c *conn) FileControlPersistWAL(dbName string, mode int) (int, error) {
+ i32 := int32(mode)
+ pi32 := &i32
+
+ var p runtime.Pinner
+ p.Pin(pi32)
+ defer p.Unpin()
+
+ err := c.fileControl(dbName, sqlite3.SQLITE_FCNTL_PERSIST_WAL, (uintptr)(unsafe.Pointer(pi32)))
+ return int(i32), err
+}
+
+func (c *conn) fileControl(dbName string, op int, pArg uintptr) error {
+ zDbName, err := libc.CString(dbName)
+ if err != nil {
+ return err
+ }
+ defer c.free(zDbName)
+
+ if rc := sqlite3.Xsqlite3_file_control(c.tls, c.db, zDbName, int32(op), pArg); rc != sqlite3.SQLITE_OK {
+ return c.errstr(rc)
+ }
+
+ return nil
+}