Skip to content

Commit e66bd51

Browse files
committed
More VFS API.
1 parent f5614bc commit e66bd51

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

vfs/api.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ type File interface {
4747
// FileLockState extends File to implement the
4848
// SQLITE_FCNTL_LOCKSTATE file control opcode.
4949
//
50-
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
50+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntllockstate
5151
type FileLockState interface {
5252
File
5353
LockState() LockLevel
@@ -56,7 +56,7 @@ type FileLockState interface {
5656
// FileSizeHint extends File to implement the
5757
// SQLITE_FCNTL_SIZE_HINT file control opcode.
5858
//
59-
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
59+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlsizehint
6060
type FileSizeHint interface {
6161
File
6262
SizeHint(size int64) error
@@ -65,16 +65,25 @@ type FileSizeHint interface {
6565
// FileHasMoved extends File to implement the
6666
// SQLITE_FCNTL_HAS_MOVED file control opcode.
6767
//
68-
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
68+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlhasmoved
6969
type FileHasMoved interface {
7070
File
7171
HasMoved() (bool, error)
7272
}
7373

74+
// FileOverwrite extends File to implement the
75+
// SQLITE_FCNTL_OVERWRITE file control opcode.
76+
//
77+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntloverwrite
78+
type FileOverwrite interface {
79+
File
80+
Overwrite() error
81+
}
82+
7483
// FilePowersafeOverwrite extends File to implement the
7584
// SQLITE_FCNTL_POWERSAFE_OVERWRITE file control opcode.
7685
//
77-
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
86+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlpowersafeoverwrite
7887
type FilePowersafeOverwrite interface {
7988
File
8089
PowersafeOverwrite() bool
@@ -84,7 +93,7 @@ type FilePowersafeOverwrite interface {
8493
// FilePowersafeOverwrite extends File to implement the
8594
// SQLITE_FCNTL_COMMIT_PHASETWO file control opcode.
8695
//
87-
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
96+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlcommitphasetwo
8897
type FileCommitPhaseTwo interface {
8998
File
9099
CommitPhaseTwo() error
@@ -94,7 +103,7 @@ type FileCommitPhaseTwo interface {
94103
// SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, SQLITE_FCNTL_COMMIT_ATOMIC_WRITE
95104
// and SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE file control opcodes.
96105
//
97-
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
106+
// https://www.sqlite.org/c3ref/c_fcntl_begin_atomic_write.html#sqlitefcntlbeginatomicwrite
98107
type FileBatchAtomicWrite interface {
99108
File
100109
BeginAtomicWrite() error

vfs/vfs.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,12 @@ func vfsFileControl(ctx context.Context, mod api.Module, pFile uint32, op _Fcntl
309309
return vfsErrorCode(err, _IOERR_FSTAT)
310310
}
311311

312+
case _FCNTL_OVERWRITE:
313+
if file, ok := file.(FileOverwrite); ok {
314+
err := file.Overwrite()
315+
return vfsErrorCode(err, _IOERR)
316+
}
317+
312318
case _FCNTL_COMMIT_PHASETWO:
313319
if file, ok := file.(FileCommitPhaseTwo); ok {
314320
err := file.CommitPhaseTwo()

0 commit comments

Comments
 (0)