main: move and rename checkDir*() helper

To avoid confusion with fsck, rename to isDir*()
and move the functions into init_dir.go.
This commit is contained in:
Jakob Unterwurzacher 2018-04-01 12:31:44 +02:00
parent 5da5e467a6
commit 85056def90
4 changed files with 35 additions and 40 deletions

View File

@ -1,36 +0,0 @@
package main
import (
"fmt"
"io/ioutil"
"os"
)
// checkDirEmpty - check if "dir" exists and is an empty directory.
// Returns an *os.PathError if Stat() on the path fails.
func checkDirEmpty(dir string) error {
err := checkDir(dir)
if err != nil {
return err
}
entries, err := ioutil.ReadDir(dir)
if err != nil {
return err
}
if len(entries) == 0 {
return nil
}
return fmt.Errorf("directory %s not empty", dir)
}
// checkDir - check if "dir" exists and is a directory
func checkDir(dir string) error {
fi, err := os.Stat(dir)
if err != nil {
return err
}
if !fi.IsDir() {
return fmt.Errorf("%s is not a directory", dir)
}
return nil
}

View File

@ -1,6 +1,8 @@
package main package main
import ( import (
"fmt"
"io/ioutil"
"os" "os"
"path/filepath" "path/filepath"
"strings" "strings"
@ -12,6 +14,35 @@ import (
"github.com/rfjakob/gocryptfs/internal/tlog" "github.com/rfjakob/gocryptfs/internal/tlog"
) )
// isDirEmpty checks if "dir" exists and is an empty directory.
// Returns an *os.PathError if Stat() on the path fails.
func isDirEmpty(dir string) error {
err := isDir(dir)
if err != nil {
return err
}
entries, err := ioutil.ReadDir(dir)
if err != nil {
return err
}
if len(entries) == 0 {
return nil
}
return fmt.Errorf("directory %s not empty", dir)
}
// isDir checks if "dir" exists and is a directory.
func isDir(dir string) error {
fi, err := os.Stat(dir)
if err != nil {
return err
}
if !fi.IsDir() {
return fmt.Errorf("%s is not a directory", dir)
}
return nil
}
// initDir prepares a directory for use as a gocryptfs storage directory. // initDir prepares a directory for use as a gocryptfs storage directory.
// In forward mode, this means creating the gocryptfs.conf and gocryptfs.diriv // In forward mode, this means creating the gocryptfs.conf and gocryptfs.diriv
// files in an empty directory. // files in an empty directory.
@ -26,7 +57,7 @@ func initDir(args *argContainer) {
os.Exit(exitcodes.Init) os.Exit(exitcodes.Init)
} }
} else { } else {
err = checkDirEmpty(args.cipherdir) err = isDirEmpty(args.cipherdir)
if err != nil { if err != nil {
tlog.Fatal.Printf("Invalid cipherdir: %v", err) tlog.Fatal.Printf("Invalid cipherdir: %v", err)
os.Exit(exitcodes.Init) os.Exit(exitcodes.Init)

View File

@ -174,7 +174,7 @@ func main() {
} }
// Check that CIPHERDIR exists // Check that CIPHERDIR exists
args.cipherdir, _ = filepath.Abs(flagSet.Arg(0)) args.cipherdir, _ = filepath.Abs(flagSet.Arg(0))
err = checkDir(args.cipherdir) err = isDir(args.cipherdir)
if err != nil { if err != nil {
tlog.Fatal.Printf("Invalid cipherdir: %v", err) tlog.Fatal.Printf("Invalid cipherdir: %v", err)
os.Exit(exitcodes.CipherDir) os.Exit(exitcodes.CipherDir)

View File

@ -58,9 +58,9 @@ func doMount(args *argContainer) {
os.Exit(exitcodes.MountPoint) os.Exit(exitcodes.MountPoint)
} }
if args.nonempty { if args.nonempty {
err = checkDir(args.mountpoint) err = isDir(args.mountpoint)
} else { } else {
err = checkDirEmpty(args.mountpoint) err = isDirEmpty(args.mountpoint)
// OSXFuse will create the mountpoint for us ( https://github.com/rfjakob/gocryptfs/issues/194 ) // OSXFuse will create the mountpoint for us ( https://github.com/rfjakob/gocryptfs/issues/194 )
if runtime.GOOS == "darwin" && os.IsNotExist(err) { if runtime.GOOS == "darwin" && os.IsNotExist(err) {
tlog.Info.Printf("Mountpoint %q does not exist, but should be created by OSXFuse", tlog.Info.Printf("Mountpoint %q does not exist, but should be created by OSXFuse",