github.com/piotrnar/gocoin@v0.0.0-20240512203912-faa0448c5e96/lib/others/sys/dblock_windows.go (about) 1 package sys 2 3 import ( 4 "os" 5 ) 6 7 var ( 8 DbLockFileName string 9 DbLockFileHndl *os.File 10 ) 11 12 func LockDatabaseDir(GocoinHomeDir string) { 13 var e error 14 os.MkdirAll(GocoinHomeDir, 0770) 15 DbLockFileName = GocoinHomeDir+".lock" 16 os.Remove(DbLockFileName) 17 DbLockFileHndl, e = os.OpenFile(DbLockFileName, os.O_WRONLY|os.O_CREATE|os.O_EXCL, 0660) 18 if e != nil { 19 println(e.Error()) 20 println("Could not lock the databse folder for writing. Another instance might be running.") 21 println("Make sure you can delete and recreate file:", DbLockFileName) 22 os.Exit(1) 23 } 24 } 25 26 func UnlockDatabaseDir() { 27 DbLockFileHndl.Close() 28 os.Remove(DbLockFileName) 29 }