serialfile: localize os.Open into NewSerialFile
License: MIT Signed-off-by: rht <rhtbot@gmail.com>
rht committed
Aug 31, 2015 at 11:29 UTC
00a56a14ece8e7f283e220db5b717906632b20d3
3 files changed
+17
-24
commands/cli/parse.go
+1
-16
@@ -356,21 +356,6 @@ func appendFile(args []files.File, inputs []string, argDef *cmds.Argument, recur
356
return nil, nil, err
357
}
358
359
- if stat.Mode()&os.ModeSymlink != 0 {
360
- target, err := os.Readlink(fpath)
361
- if err != nil {
362
- return nil, nil, err
363
- }
364
-
365
- arg := files.NewLinkFile("", fpath, target, stat)
366
- return append(args, arg), inputs[1:], nil
367
- }
368
-
369
- file, err := os.Open(fpath)
370
- if err != nil {
371
- return nil, nil, err
372
- }
373
-
359
if stat.IsDir() {
360
if !argDef.Recursive {
361
err = fmt.Errorf("Invalid path '%s', argument '%s' does not support directories",
@@ -384,7 +369,7 @@ func appendFile(args []files.File, inputs []string, argDef *cmds.Argument, recur
369
}
370
}
371
387
- arg, err := files.NewSerialFile(path.Base(fpath), fpath, file)
372
+ arg, err := files.NewSerialFile(path.Base(fpath), fpath, stat)
373
if err != nil {
374
return nil, nil, err
375
}
commands/files/serialfile.go
+12
-4
@@ -25,8 +25,17 @@ type serialFile struct {
25
current *os.File
26
}
27
28
-func NewSerialFile(name, path string, file *os.File) (File, error) {
29
- stat, err := file.Stat()
28
+func NewSerialFile(name, path string, stat os.FileInfo) (File, error) {
29
+ if stat.Mode()&os.ModeSymlink != 0 {
30
+ target, err := os.Readlink(path)
31
+ if err != nil {
32
+ return nil, err
33
+ }
34
+
35
+ return NewLinkFile("", path, target, stat), nil
36
+ }
37
+
38
+ file, err := os.Open(path)
39
if err != nil {
40
return nil, err
41
}
@@ -49,8 +58,7 @@ func newSerialFile(name, path string, file *os.File, stat os.FileInfo) (File, er
58
59
// we no longer need our root directory file (we already statted the contents),
60
// so close it
52
- err = file.Close()
53
- if err != nil {
61
+ if err := file.Close(); err != nil {
62
return nil, err
63
}
64
core/coreunix/add.go
+4
-4
@@ -43,18 +43,18 @@ func Add(n *core.IpfsNode, r io.Reader) (string, error) {
43
44
// AddR recursively adds files in |path|.
45
func AddR(n *core.IpfsNode, root string) (key string, err error) {
46
- f, err := os.Open(root)
46
+ stat, err := os.Lstat(root)
47
if err != nil {
48
return "", err
49
}
50
- defer f.Close()
50
52
- ff, err := files.NewSerialFile(root, root, f)
51
+ f, err := files.NewSerialFile(root, root, stat)
52
if err != nil {
53
return "", err
54
}
55
+ defer f.Close()
56
57
- dagnode, err := addFile(n, ff)
57
+ dagnode, err := addFile(n, f)
58
if err != nil {
59
return "", err
60
}