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  }