ipld-eth-server/vendor/github.com/ipfs/go-ipfs-files/linkfile.go

54 lines
813 B
Go

package files
import (
"io"
"os"
"strings"
)
type Symlink struct {
Target string
stat os.FileInfo
reader io.Reader
}
func NewLinkFile(target string, stat os.FileInfo) File {
return &Symlink{
Target: target,
stat: stat,
reader: strings.NewReader(target),
}
}
func (lf *Symlink) Close() error {
if c, ok := lf.reader.(io.Closer); ok {
return c.Close()
}
return nil
}
func (lf *Symlink) Read(b []byte) (int, error) {
return lf.reader.Read(b)
}
func (lf *Symlink) Seek(offset int64, whence int) (int64, error) {
if s, ok := lf.reader.(io.Seeker); ok {
return s.Seek(offset, whence)
}
return 0, ErrNotSupported
}
func (lf *Symlink) Size() (int64, error) {
return 0, ErrNotSupported
}
func ToSymlink(n Node) *Symlink {
l, _ := n.(*Symlink)
return l
}
var _ File = &Symlink{}