forked from mirrors/tar-split
tar/storage: use filepath
instead of path
This commit is contained in:
parent
6d59e7bc76
commit
c2c2dde4cb
2 changed files with 9 additions and 10 deletions
|
@ -7,23 +7,23 @@ import (
|
|||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// FileGetter is the interface for getting a stream of a file payload, address
|
||||
// by name/filepath. Presumably, the names will be scoped to relative file
|
||||
// by name/filename. Presumably, the names will be scoped to relative file
|
||||
// paths.
|
||||
type FileGetter interface {
|
||||
// Get returns a stream for the provided file path
|
||||
Get(filepath string) (output io.ReadCloser, err error)
|
||||
Get(filename string) (output io.ReadCloser, err error)
|
||||
}
|
||||
|
||||
// FilePutter is the interface for storing a stream of a file payload,
|
||||
// addressed by name/filepath.
|
||||
// addressed by name/filename.
|
||||
type FilePutter interface {
|
||||
// Put returns the size of the stream received, and the crc64 checksum for
|
||||
// the provided stream
|
||||
Put(filepath string, input io.Reader) (size int64, checksum []byte, err error)
|
||||
Put(filename string, input io.Reader) (size int64, checksum []byte, err error)
|
||||
}
|
||||
|
||||
// FileGetPutter is the interface that groups both Getting and Putting file
|
||||
|
@ -44,8 +44,7 @@ type pathFileGetter struct {
|
|||
}
|
||||
|
||||
func (pfg pathFileGetter) Get(filename string) (io.ReadCloser, error) {
|
||||
// FIXME might should have a check for '../../../../etc/passwd' attempts?
|
||||
return os.Open(path.Join(pfg.root, filename))
|
||||
return os.Open(filepath.Join(pfg.root, filename))
|
||||
}
|
||||
|
||||
type bufferFileGetPutter struct {
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"encoding/json"
|
||||
"errors"
|
||||
"io"
|
||||
"path"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
// ErrDuplicatePath is occured when a tar archive has more than one entry for
|
||||
|
@ -61,7 +61,7 @@ func (jup *jsonUnpacker) Next() (*Entry, error) {
|
|||
|
||||
// check for dup name
|
||||
if e.Type == FileType {
|
||||
cName := path.Clean(e.Name)
|
||||
cName := filepath.Clean(e.Name)
|
||||
if _, ok := jup.seen[cName]; ok {
|
||||
return nil, ErrDuplicatePath
|
||||
}
|
||||
|
@ -99,7 +99,7 @@ const emptyByte byte = 0
|
|||
func (jp *jsonPacker) AddEntry(e Entry) (int, error) {
|
||||
// check early for dup name
|
||||
if e.Type == FileType {
|
||||
cName := path.Clean(e.Name)
|
||||
cName := filepath.Clean(e.Name)
|
||||
if _, ok := jp.seen[cName]; ok {
|
||||
return -1, ErrDuplicatePath
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue