From ea96970aa53778b4fbcaf0ce809c9cebcd35b8aa Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Tue, 23 Jun 2015 17:55:42 +0900 Subject: [PATCH] Adding readonly flag --- database.go | 2 +- vfs.go | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/database.go b/database.go index 9561084..04d2180 100644 --- a/database.go +++ b/database.go @@ -70,7 +70,7 @@ func (db *database) load(dir string, index int, writable bool) error { } if index >= 0 { - db.vers = db.vers[index:] + db.vers = db.vers[:index] } if lastVer := db.lastVersion(); lastVer != nil { diff --git a/vfs.go b/vfs.go index 2870606..9bc0421 100644 --- a/vfs.go +++ b/vfs.go @@ -41,6 +41,7 @@ func usage() { func main() { version := flag.Int("version", -1, "version index (specify -1 for latest)") + readonly := flag.Bool("readonly", false, "mount filesystem as readonly") flag.Usage = usage flag.Parse() @@ -50,7 +51,7 @@ func main() { } mount := flag.NArg() > 1 - writable := mount && *version < 0 + writable := mount && !*readonly && *version < 0 db, err := newDatabase(flag.Arg(0), *version, writable) if err != nil { @@ -58,6 +59,14 @@ func main() { } if mount { + if writable { + defer func() { + if err := db.save(); err != nil { + log.Fatal(err) + } + }() + } + var options []fuse.MountOption if !writable { options = append(options, fuse.ReadOnly()) @@ -78,12 +87,6 @@ func main() { if err := conn.MountError; err != nil { log.Fatal(err) } - - if writable { - if err := db.save(); err != nil { - log.Fatal(err) - } - } } else { db.dump() }