summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix_lock.go
diff options
context:
space:
mode:
authorLibravatar dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2024-09-30 12:46:23 +0200
committerLibravatar GitHub <noreply@github.com>2024-09-30 12:46:23 +0200
commit188d28f054dbc9d8897a99d2213d8895922fc330 (patch)
tree2691665ad2e129ed7a07ea468024cc7db5005a54 /vendor/github.com/ncruces/go-sqlite3/vfs/os_unix_lock.go
parent[bugfix] Carry-over "PinnedAt" when refreshing status (#3373) (diff)
downloadgotosocial-188d28f054dbc9d8897a99d2213d8895922fc330.tar.xz
[chore]: Bump github.com/ncruces/go-sqlite3 from 0.18.3 to 0.18.4 (#3375)
Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.18.3 to 0.18.4. - [Release notes](https://github.com/ncruces/go-sqlite3/releases) - [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.18.3...v0.18.4) --- updated-dependencies: - dependency-name: github.com/ncruces/go-sqlite3 dependency-type: direct:production update-type: version-update:semver-patch ... 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/os_unix_lock.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/vfs/os_unix_lock.go108
1 files changed, 0 insertions, 108 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix_lock.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix_lock.go
deleted file mode 100644
index 2616a0f5e..000000000
--- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_unix_lock.go
+++ /dev/null
@@ -1,108 +0,0 @@
-//go:build (linux || darwin || freebsd || openbsd || netbsd || dragonfly || illumos || sqlite3_flock) && !sqlite3_nosys
-
-package vfs
-
-import (
- "os"
- "time"
-
- "golang.org/x/sys/unix"
-)
-
-func osGetSharedLock(file *os.File) _ErrorCode {
- // Test the PENDING lock before acquiring a new SHARED lock.
- if lock, _ := osGetLock(file, _PENDING_BYTE, 1); lock == unix.F_WRLCK {
- return _BUSY
- }
- // Acquire the SHARED lock.
- return osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0)
-}
-
-func osGetReservedLock(file *os.File) _ErrorCode {
- // Acquire the RESERVED lock.
- return osWriteLock(file, _RESERVED_BYTE, 1, 0)
-}
-
-func osGetPendingLock(file *os.File, block bool) _ErrorCode {
- var timeout time.Duration
- if block {
- timeout = -1
- }
- // Acquire the PENDING lock.
- return osWriteLock(file, _PENDING_BYTE, 1, timeout)
-}
-
-func osGetExclusiveLock(file *os.File, block bool) _ErrorCode {
- var timeout time.Duration
- if block {
- timeout = time.Millisecond
- }
- // Acquire the EXCLUSIVE lock.
- return osWriteLock(file, _SHARED_FIRST, _SHARED_SIZE, timeout)
-}
-
-func osDowngradeLock(file *os.File, state LockLevel) _ErrorCode {
- if state >= LOCK_EXCLUSIVE {
- // Downgrade to a SHARED lock.
- if rc := osReadLock(file, _SHARED_FIRST, _SHARED_SIZE, 0); rc != _OK {
- // In theory, the downgrade to a SHARED cannot fail because another
- // process is holding an incompatible lock. If it does, this
- // indicates that the other process is not following the locking
- // protocol. If this happens, return IOERR_RDLOCK. Returning
- // BUSY would confuse the upper layer.
- // notest
- return _IOERR_RDLOCK
- }
- }
- // Release the PENDING and RESERVED locks.
- return osUnlock(file, _PENDING_BYTE, 2)
-}
-
-func osReleaseLock(file *os.File, _ LockLevel) _ErrorCode {
- // Release all locks.
- return osUnlock(file, 0, 0)
-}
-
-func osCheckReservedLock(file *os.File) (bool, _ErrorCode) {
- // Test the RESERVED lock.
- lock, rc := osGetLock(file, _RESERVED_BYTE, 1)
- return lock == unix.F_WRLCK, rc
-}
-
-func osGetLock(file *os.File, start, len int64) (int16, _ErrorCode) {
- lock := unix.Flock_t{
- Type: unix.F_WRLCK,
- Start: start,
- Len: len,
- }
- if unix.FcntlFlock(file.Fd(), unix.F_GETLK, &lock) != nil {
- return 0, _IOERR_CHECKRESERVEDLOCK
- }
- return lock.Type, _OK
-}
-
-func osLockErrorCode(err error, def _ErrorCode) _ErrorCode {
- if err == nil {
- return _OK
- }
- if errno, ok := err.(unix.Errno); ok {
- switch errno {
- case
- unix.EACCES,
- unix.EAGAIN,
- unix.EBUSY,
- unix.EINTR,
- unix.ENOLCK,
- unix.EDEADLK,
- unix.ETIMEDOUT:
- return _BUSY
- case unix.EPERM:
- return _PERM
- }
- // notest // usually EWOULDBLOCK == EAGAIN
- if errno == unix.EWOULDBLOCK && unix.EWOULDBLOCK != unix.EAGAIN {
- return _BUSY
- }
- }
- return def
-}