diff --git a/args.go b/args.go index 474bec8..577f027 100644 --- a/args.go +++ b/args.go @@ -11,7 +11,6 @@ import ( type args struct { ShowHelp bool DataDir string - BlobDir string CtlNet string CtlAddr string RegenKeys bool @@ -19,7 +18,7 @@ type args struct { CleanUp bool } -func defaultGrumbleDir() string { +func defaultDataDir() string { dirname := ".grumble" if runtime.GOOS == "windows" { dirname = "grumble" @@ -27,14 +26,6 @@ func defaultGrumbleDir() string { return filepath.Join(os.Getenv("HOME"), dirname) } -func defaultDataDir() string { - return filepath.Join(defaultGrumbleDir(), "data") -} - -func defaultBlobDir() string { - return filepath.Join(defaultGrumbleDir(), "blob") -} - func defaultCtlNet() string { if runtime.GOOS == "windows" { return "tcp" @@ -46,7 +37,7 @@ func defaultCtlAddr() string { if runtime.GOOS == "windows" { return "localhost:5454" } - return filepath.Join(defaultGrumbleDir(), ".ctl") + return filepath.Join(defaultDataDir(), ".ctl") } func Usage() { @@ -60,7 +51,6 @@ var Args args func init() { flag.BoolVar(&Args.ShowHelp, "help", false, "Show this help") flag.StringVar(&Args.DataDir, "datadir", defaultDataDir(), "Directory to use for server storage") - flag.StringVar(&Args.BlobDir, "blobdir", defaultBlobDir(), "Directory to use for blob storage") flag.StringVar(&Args.CtlNet, "ctlnet", defaultCtlNet(), "Network to use for ctl socket") flag.StringVar(&Args.CtlAddr, "ctladdr", defaultCtlAddr(), "Address to use for ctl socket") flag.BoolVar(&Args.RegenKeys, "regenkeys", false, "Force Grumble to regenerate its global RSA keypair and certificate") diff --git a/grumble.go b/grumble.go index 0a484f4..7177929 100644 --- a/grumble.go +++ b/grumble.go @@ -38,8 +38,23 @@ func main() { log.SetFlags(log.LstdFlags | log.Lmicroseconds) log.Printf("Grumble") - log.Printf("Using blob directory: %s", Args.BlobDir) - err = blobstore.Open(Args.BlobDir) + log.Printf("Using data directory: %s", Args.DataDir) + + // Open the blobstore + blobDir := filepath.Join(Args.DataDir, "blob") + err = os.Mkdir(blobDir, 0700) + if err != nil { + exists := false + if e, ok := err.(*os.PathError); ok { + if e.Err == os.EEXIST { + exists = true + } + } + if !exists { + log.Fatal("Unable to create blob directory: %v", err.Error()) + } + } + err = blobstore.Open(blobDir) if err != nil { log.Fatalf("Unable to initialize blobstore: %v", err.Error()) }