From 05a5c0a0fffb4cb27c6e2dccda42d18ee067631c Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Sat, 5 Sep 2015 11:49:05 +0200 Subject: Wrap cluefs part I --- main.go | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'main.go') diff --git a/main.go b/main.go index af7bd21..6857b61 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,18 @@ package main import ( + "bazil.org/fuse" + fusefs "bazil.org/fuse/fs" + "fmt" "github.com/rfjakob/cluefs/lib/cluefs" "github.com/rfjakob/gocryptfs/frontend" "os" ) +const ( + PROGRAM_NAME = "gocryptfs" +) + func main() { // Parse command line arguments conf, err := cluefs.ParseArguments() @@ -17,10 +24,31 @@ func main() { var key [16]byte cfs := frontend.NewFS(key, conf.GetShadowDir()) - // Mount and serve file system requests - if err = cfs.MountAndServe(conf.GetMountPoint(), conf.GetReadOnly()); err != nil { - cluefs.ErrlogMain.Printf("could not mount file system [%s]", err) - os.Exit(3) + // Mount the file system + mountOpts := []fuse.MountOption{ + fuse.FSName(PROGRAM_NAME), + fuse.Subtype(PROGRAM_NAME), + fuse.VolumeName(PROGRAM_NAME), + fuse.LocalVolume(), + } + conn, err := fuse.Mount(conf.GetMountPoint(), mountOpts...) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + defer conn.Close() + + // Start serving requests + if err = fusefs.Serve(conn, cfs); err != nil { + fmt.Println(err) + os.Exit(1) + } + + // Check for errors when mounting the file system + <-conn.Ready + if err = conn.MountError; err != nil { + fmt.Println(err) + os.Exit(1) } // We are done -- cgit v1.2.3