提交 ddc8dff7 作者: rht

serialfile: Explicit err on unrecognized file type

So that ipfs add on daemon no longer blocks

License: MIT
Signed-off-by: 's avatarrht <rhtbot@gmail.com>
上级 93e9f841
package files package files
import ( import (
"fmt"
"io" "io"
"os" "os"
fp "path/filepath" fp "path/filepath"
...@@ -26,13 +27,18 @@ type serialFile struct { ...@@ -26,13 +27,18 @@ type serialFile struct {
} }
func NewSerialFile(name, path string, stat os.FileInfo) (File, error) { 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) target, err := os.Readlink(path)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return NewLinkFile("", path, target, stat), nil 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) file, err := os.Open(path)
...@@ -97,13 +103,18 @@ func (f *serialFile) NextFile() (File, error) { ...@@ -97,13 +103,18 @@ func (f *serialFile) NextFile() (File, error) {
return nil, err 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 f.current = nil
target, err := os.Readlink(filePath) target, err := os.Readlink(filePath)
if err != nil { if err != nil {
return nil, err return nil, err
} }
return NewLinkFile(fileName, filePath, target, st), nil 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) file, err := os.Open(filePath)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论