Unverified Commit a54eafa5 authored by Steven Allen's avatar Steven Allen Committed by GitHub

Merge pull request #22 from ipfs/feat/symlink-size

feat: correctly report the size of symlinks
parents 8d2cd18a 5933bd9a
...@@ -10,7 +10,6 @@ env: ...@@ -10,7 +10,6 @@ env:
global: global:
- GOTFLAGS="-race" - GOTFLAGS="-race"
matrix: matrix:
- BUILD_DEPTYPE=gx
- BUILD_DEPTYPE=gomod - BUILD_DEPTYPE=gomod
...@@ -24,7 +23,6 @@ script: ...@@ -24,7 +23,6 @@ script:
cache: cache:
directories: directories:
- $GOPATH/src/gx
- $GOPATH/pkg/mod - $GOPATH/pkg/mod
- $HOME/.cache/go-build - $HOME/.cache/go-build
......
module github.com/ipfs/go-ipfs-files module github.com/ipfs/go-ipfs-files
require golang.org/x/sys v0.0.0-20190302025703-b6889370fb10 require golang.org/x/sys v0.0.0-20190302025703-b6889370fb10
go 1.12
package files package files
import ( import (
"io"
"os"
"strings" "strings"
) )
type Symlink struct { type Symlink struct {
Target string Target string
stat os.FileInfo
reader io.Reader reader strings.Reader
} }
func NewLinkFile(target string, stat os.FileInfo) File { func NewLinkFile(target string) File {
return &Symlink{ lf := &Symlink{Target: target}
Target: target, lf.reader.Reset(lf.Target)
stat: stat, return lf
reader: strings.NewReader(target),
}
} }
func (lf *Symlink) Close() error { func (lf *Symlink) Close() error {
if c, ok := lf.reader.(io.Closer); ok {
return c.Close()
}
return nil return nil
} }
...@@ -34,15 +25,11 @@ func (lf *Symlink) Read(b []byte) (int, error) { ...@@ -34,15 +25,11 @@ func (lf *Symlink) Read(b []byte) (int, error) {
} }
func (lf *Symlink) Seek(offset int64, whence int) (int64, error) { func (lf *Symlink) Seek(offset int64, whence int) (int64, error) {
if s, ok := lf.reader.(io.Seeker); ok { return lf.reader.Seek(offset, whence)
return s.Seek(offset, whence)
}
return 0, ErrNotSupported
} }
func (lf *Symlink) Size() (int64, error) { func (lf *Symlink) Size() (int64, error) {
return 0, ErrNotSupported return lf.reader.Size(), nil
} }
func ToSymlink(n Node) *Symlink { func ToSymlink(n Node) *Symlink {
......
...@@ -99,7 +99,7 @@ func (w *multipartWalker) nextFile() (Node, error) { ...@@ -99,7 +99,7 @@ func (w *multipartWalker) nextFile() (Node, error) {
return nil, err return nil, err
} }
return NewLinkFile(string(out), nil), nil return NewLinkFile(string(out)), nil
default: default:
return &ReaderFile{ return &ReaderFile{
reader: part, reader: part,
......
{
"author": "magik6k",
"bugs": {
"url": "https://github.com/ipfs/go-ipfs-files"
},
"gx": {
"dvcsimport": "github.com/ipfs/go-ipfs-files"
},
"gxDependencies": [
{
"author": "The Go Authors",
"hash": "QmVGjyM9i2msKvLXwh9VosCTgP4mL91kC7hDmqnwTTx6Hu",
"name": "sys",
"version": "0.2.0"
}
],
"gxVersion": "0.11.0",
"language": "go",
"license": "",
"name": "go-ipfs-files",
"releaseCmd": "git commit -a -m \"gx publish $VERSION\"",
"version": "2.0.7"
}
...@@ -53,7 +53,7 @@ func NewSerialFile(path string, hidden bool, stat os.FileInfo) (Node, error) { ...@@ -53,7 +53,7 @@ func NewSerialFile(path string, hidden bool, stat os.FileInfo) (Node, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
return NewLinkFile(target, stat), nil return NewLinkFile(target), nil
default: default:
return nil, fmt.Errorf("unrecognized file type for %s: %s", path, mode.String()) return nil, fmt.Errorf("unrecognized file type for %s: %s", path, mode.String())
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment