From ddc8dff7368b4e5ce31596513666ebc6c1373381 Mon Sep 17 00:00:00 2001 From: rht Date: Thu, 3 Sep 2015 17:18:28 +0700 Subject: [PATCH] serialfile: Explicit err on unrecognized file type So that ipfs add on daemon no longer blocks License: MIT Signed-off-by: rht --- commands/files/serialfile.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/commands/files/serialfile.go b/commands/files/serialfile.go index a62115ef4..822343e58 100644 --- a/commands/files/serialfile.go +++ b/commands/files/serialfile.go @@ -1,6 +1,7 @@ package files import ( + "fmt" "io" "os" fp "path/filepath" @@ -26,13 +27,18 @@ type serialFile struct { } func NewSerialFile(name, path string, stat os.FileInfo) (File, error) { - if stat.Mode()&os.ModeSymlink != 0 { + switch mode := stat.Mode(); { + case mode.IsDir() || mode.IsRegular(): + break + case mode&os.ModeSymlink != 0: target, err := os.Readlink(path) if err != nil { return nil, err } return NewLinkFile("", path, target, stat), nil + default: + return nil, fmt.Errorf("Unrecognized file type for %s: %s", stat.Name(), mode.String()) } file, err := os.Open(path) @@ -97,13 +103,18 @@ func (f *serialFile) NextFile() (File, error) { return nil, err } - if st.Mode()&os.ModeSymlink != 0 { + switch mode := st.Mode(); { + case mode.IsDir() || mode.IsRegular(): + break + case mode&os.ModeSymlink != 0: f.current = nil target, err := os.Readlink(filePath) if err != nil { return nil, err } return NewLinkFile(fileName, filePath, target, st), nil + default: + return nil, fmt.Errorf("Unrecognized file type for %s: %s", st.Name(), mode.String()) } file, err := os.Open(filePath)