diff options
author | 2025-03-09 17:47:56 +0100 | |
---|---|---|
committer | 2025-03-10 01:59:49 +0100 | |
commit | 3ac1ee16f377d31a0fb80c8dae28b6239ac4229e (patch) | |
tree | f61faa581feaaeaba2542b9f2b8234a590684413 /vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go | |
parent | [chore] update URLs to forked source (diff) | |
download | gotosocial-3ac1ee16f377d31a0fb80c8dae28b6239ac4229e.tar.xz |
[chore] remove vendor
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go b/vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go deleted file mode 100644 index 7a9c38897..000000000 --- a/vendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +++ /dev/null @@ -1,143 +0,0 @@ -//go:build sqlite3_dotlk - -package vfs - -import ( - "errors" - "io/fs" - "os" - "sync" - - "github.com/ncruces/go-sqlite3/internal/dotlk" -) - -var ( - // +checklocks:vfsDotLocksMtx - vfsDotLocks = map[string]*vfsDotLocker{} - vfsDotLocksMtx sync.Mutex -) - -type vfsDotLocker struct { - shared int // +checklocks:vfsDotLocksMtx - pending *os.File // +checklocks:vfsDotLocksMtx - reserved *os.File // +checklocks:vfsDotLocksMtx -} - -func osGetSharedLock(file *os.File) _ErrorCode { - vfsDotLocksMtx.Lock() - defer vfsDotLocksMtx.Unlock() - - name := file.Name() - locker := vfsDotLocks[name] - if locker == nil { - if err := dotlk.TryLock(name + ".lock"); err != nil { - if errors.Is(err, fs.ErrExist) { - return _BUSY // Another process has the lock. - } - return _IOERR_LOCK - } - locker = &vfsDotLocker{} - vfsDotLocks[name] = locker - } - - if locker.pending != nil { - return _BUSY - } - locker.shared++ - return _OK -} - -func osGetReservedLock(file *os.File) _ErrorCode { - vfsDotLocksMtx.Lock() - defer vfsDotLocksMtx.Unlock() - - name := file.Name() - locker := vfsDotLocks[name] - if locker == nil { - return _IOERR_LOCK - } - - if locker.reserved != nil && locker.reserved != file { - return _BUSY - } - locker.reserved = file - return _OK -} - -func osGetExclusiveLock(file *os.File, _ *LockLevel) _ErrorCode { - vfsDotLocksMtx.Lock() - defer vfsDotLocksMtx.Unlock() - - name := file.Name() - locker := vfsDotLocks[name] - if locker == nil { - return _IOERR_LOCK - } - - if locker.pending != nil && locker.pending != file { - return _BUSY - } - locker.pending = file - if locker.shared > 1 { - return _BUSY - } - return _OK -} - -func osDowngradeLock(file *os.File, _ LockLevel) _ErrorCode { - vfsDotLocksMtx.Lock() - defer vfsDotLocksMtx.Unlock() - - name := file.Name() - locker := vfsDotLocks[name] - if locker == nil { - return _IOERR_UNLOCK - } - - if locker.reserved == file { - locker.reserved = nil - } - if locker.pending == file { - locker.pending = nil - } - return _OK -} - -func osReleaseLock(file *os.File, state LockLevel) _ErrorCode { - vfsDotLocksMtx.Lock() - defer vfsDotLocksMtx.Unlock() - - name := file.Name() - locker := vfsDotLocks[name] - if locker == nil { - return _IOERR_UNLOCK - } - - if locker.shared == 1 { - if err := dotlk.Unlock(name + ".lock"); err != nil { - return _IOERR_UNLOCK - } - delete(vfsDotLocks, name) - } - - if locker.reserved == file { - locker.reserved = nil - } - if locker.pending == file { - locker.pending = nil - } - locker.shared-- - return _OK -} - -func osCheckReservedLock(file *os.File) (bool, _ErrorCode) { - vfsDotLocksMtx.Lock() - defer vfsDotLocksMtx.Unlock() - - name := file.Name() - locker := vfsDotLocks[name] - if locker == nil { - return false, _OK - } - return locker.reserved != nil, _OK -} |