tear off your own head

This commit is contained in:
Mark Bates 2019-08-01 23:23:46 -04:00
parent 1cdcd0ac40
commit c1120b32d1
2 changed files with 11 additions and 45 deletions

22
file.go
View File

@ -23,11 +23,11 @@ type File struct {
path Path path Path
data []byte data []byte
writer *bytes.Buffer writer *bytes.Buffer
Source io.ReadCloser reader io.Reader
} }
func (f *File) Seek(offset int64, whence int) (int64, error) { func (f *File) Seek(offset int64, whence int) (int64, error) {
if sk, ok := f.Source.(io.Seeker); ok { if sk, ok := f.reader.(io.Seeker); ok {
return sk.Seek(offset, whence) return sk.Seek(offset, whence)
} }
return 0, nil return 0, nil
@ -35,11 +35,11 @@ func (f *File) Seek(offset int64, whence int) (int64, error) {
func (f *File) Close() error { func (f *File) Close() error {
defer func() { defer func() {
f.Source = nil f.reader = nil
f.writer = nil f.writer = nil
}() }()
if f.Source != nil { if f.reader != nil {
if c, ok := f.Source.(io.Closer); ok { if c, ok := f.reader.(io.Closer); ok {
if err := c.Close(); err != nil { if err := c.Close(); err != nil {
return err return err
} }
@ -65,19 +65,19 @@ func (f *File) Read(p []byte) (int, error) {
} }
if len(f.data) > 0 { if len(f.data) > 0 {
f.Source = ioutil.NopCloser(bytes.NewReader(f.data)) f.reader = ioutil.NopCloser(bytes.NewReader(f.data))
} }
if f.Source != nil { if f.reader != nil {
return f.Source.Read(p) return f.reader.Read(p)
} }
of, err := f.her.Open(f.FilePath()) of, err := f.her.Open(f.FilePath())
if err != nil { if err != nil {
return 0, err return 0, err
} }
f.Source = of f.reader = of
return f.Source.Read(p) return f.reader.Read(p)
} }
func (f *File) Write(b []byte) (int, error) { func (f *File) Write(b []byte) (int, error) {
@ -88,7 +88,7 @@ func (f *File) Write(b []byte) (int, error) {
return i, err return i, err
} }
func (f File) HereInfo() here.Info { func (f File) Info() here.Info {
return f.her return f.her
} }

34
http.go
View File

@ -1,35 +1 @@
package pkger package pkger
// type HTTPFile struct {
// io.Reader
// StatFn func() (os.FileInfo, error)
// ReaddirFn func(int) ([]os.FileInfo, error)
// }
//
// func (h HTTPFile) Readdir(n int) ([]os.FileInfo, error) {
// if h.ReaddirFn != nil {
// return h.ReaddirFn(n)
// }
// return nil, nil
// }
//
// func (h HTTPFile) Stat() (os.FileInfo, error) {
// if h.StatFn != nil {
// return h.StatFn()
// }
// return nil, nil
// }
//
// func (h HTTPFile) Close() error {
// if c, ok := h.Reader.(io.Closer); ok {
// return c.Close()
// }
// return nil
// }
//
// func (h HTTPFile) Seek(offset int64, whence int) (int64, error) {
// if sk, ok := h.Reader.(io.Seeker); ok {
// return sk.Seek(offset, whence)
// }
// return 0, nil
// }