Skip to content
This repository was archived by the owner on Mar 29, 2023. It is now read-only.

Commit a54eafa

Browse files
authored
Merge pull request #22 from ipfs/feat/symlink-size
feat: correctly report the size of symlinks
2 parents 8d2cd18 + 5933bd9 commit a54eafa

File tree

6 files changed

+11
-48
lines changed

6 files changed

+11
-48
lines changed

.travis.yml

-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ env:
1010
global:
1111
- GOTFLAGS="-race"
1212
matrix:
13-
- BUILD_DEPTYPE=gx
1413
- BUILD_DEPTYPE=gomod
1514

1615

@@ -24,7 +23,6 @@ script:
2423

2524
cache:
2625
directories:
27-
- $GOPATH/src/gx
2826
- $GOPATH/pkg/mod
2927
- $HOME/.cache/go-build
3028

go.mod

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
module github.com/ipfs/go-ipfs-files
22

33
require golang.org/x/sys v0.0.0-20190302025703-b6889370fb10
4+
5+
go 1.12

linkfile.go

+7-20
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,22 @@
11
package files
22

33
import (
4-
"io"
5-
"os"
64
"strings"
75
)
86

97
type Symlink struct {
108
Target string
11-
stat os.FileInfo
129

13-
reader io.Reader
10+
reader strings.Reader
1411
}
1512

16-
func NewLinkFile(target string, stat os.FileInfo) File {
17-
return &Symlink{
18-
Target: target,
19-
stat: stat,
20-
reader: strings.NewReader(target),
21-
}
13+
func NewLinkFile(target string) File {
14+
lf := &Symlink{Target: target}
15+
lf.reader.Reset(lf.Target)
16+
return lf
2217
}
2318

2419
func (lf *Symlink) Close() error {
25-
if c, ok := lf.reader.(io.Closer); ok {
26-
return c.Close()
27-
}
28-
2920
return nil
3021
}
3122

@@ -34,15 +25,11 @@ func (lf *Symlink) Read(b []byte) (int, error) {
3425
}
3526

3627
func (lf *Symlink) Seek(offset int64, whence int) (int64, error) {
37-
if s, ok := lf.reader.(io.Seeker); ok {
38-
return s.Seek(offset, whence)
39-
}
40-
41-
return 0, ErrNotSupported
28+
return lf.reader.Seek(offset, whence)
4229
}
4330

4431
func (lf *Symlink) Size() (int64, error) {
45-
return 0, ErrNotSupported
32+
return lf.reader.Size(), nil
4633
}
4734

4835
func ToSymlink(n Node) *Symlink {

multipartfile.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ func (w *multipartWalker) nextFile() (Node, error) {
9999
return nil, err
100100
}
101101

102-
return NewLinkFile(string(out), nil), nil
102+
return NewLinkFile(string(out)), nil
103103
default:
104104
return &ReaderFile{
105105
reader: part,

package.json

-24
This file was deleted.

serialfile.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func NewSerialFile(path string, hidden bool, stat os.FileInfo) (Node, error) {
5353
if err != nil {
5454
return nil, err
5555
}
56-
return NewLinkFile(target, stat), nil
56+
return NewLinkFile(target), nil
5757
default:
5858
return nil, fmt.Errorf("unrecognized file type for %s: %s", path, mode.String())
5959
}

0 commit comments

Comments
 (0)