diff options
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go')
-rw-r--r-- | vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go b/vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go new file mode 100644 index 000000000..3c8d782d7 --- /dev/null +++ b/vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go @@ -0,0 +1,29 @@ +package dotlk + +import ( + "errors" + "io/fs" + "os" +) + +// LockShm creates a directory on disk to prevent SQLite +// from using this path for a shared memory file. +func LockShm(name string) error { + err := os.Mkdir(name, 0777) + if errors.Is(err, fs.ErrExist) { + s, err := os.Lstat(name) + if err == nil && s.IsDir() { + return nil + } + } + return err +} + +// Unlock removes the lock or shared memory file. +func Unlock(name string) error { + err := os.Remove(name) + if errors.Is(err, fs.ErrNotExist) { + return nil + } + return err +} |