summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go
blob: 3c8d782d79a08b9ca4783a9c2026a951497f3ed5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
}