@@ -109,7 +109,7 @@ func (p *fsCached) Open(name string) (file http.File, err error) {
109109 f .Close ()
110110 return nil , e
111111 }
112- file = Dir (f , fis )
112+ file = xfs . Dir (f , fis )
113113 } else {
114114 file = f
115115 }
@@ -118,82 +118,6 @@ func (p *fsCached) Open(name string) (file http.File, err error) {
118118
119119// -----------------------------------------------------------------------------------------
120120
121- type StatCloser interface {
122- Stat () (fs.FileInfo , error )
123- Close () error
124- }
125-
126- type dir struct {
127- items []fs.FileInfo
128- file StatCloser
129- off int
130- }
131-
132- func Dir (base StatCloser , fis []fs.FileInfo ) http.File {
133- return & dir {fis , base , 0 }
134- }
135-
136- func (p * dir ) Close () error {
137- return p .file .Close ()
138- }
139-
140- func (p * dir ) Read (b []byte ) (n int , err error ) {
141- return 0 , fs .ErrPermission
142- }
143-
144- func (p * dir ) Seek (offset int64 , whence int ) (int64 , error ) {
145- if whence == io .SeekStart && offset == 0 {
146- p .off = 0
147- return 0 , nil
148- }
149- return 0 , fs .ErrPermission
150- }
151-
152- func (p * dir ) Stat () (fs.FileInfo , error ) {
153- return p .file .Stat ()
154- }
155-
156- func (p * dir ) Readdir (n int ) (fis []fs.FileInfo , err error ) {
157- fis = p .items [p .off :]
158- if n <= 0 {
159- p .off = len (p .items )
160- return
161- }
162- if len (fis ) > n {
163- fis = fis [:n ]
164- } else {
165- err = io .EOF
166- }
167- p .off += len (fis )
168- return
169- }
170-
171- func (p * dir ) ReadDir (n int ) (items []fs.DirEntry , err error ) {
172- fis , err := p .Readdir (n )
173- if err != nil && err != io .EOF {
174- return
175- }
176- items = make ([]fs.DirEntry , len (fis ))
177- for i , fi := range fis {
178- items [i ] = dirEntry {fi }
179- }
180- return
181- }
182-
183- type dirEntry struct {
184- fs.FileInfo
185- }
186-
187- func (d dirEntry ) Info () (fs.FileInfo , error ) {
188- return d .FileInfo , nil
189- }
190-
191- func (d dirEntry ) Type () fs.FileMode {
192- return d .FileInfo .Mode ().Type ()
193- }
194-
195- // -----------------------------------------------------------------------------------------
196-
197121func DownloadFile (localFile string , file http.File ) (err error ) {
198122 _ , err = file .Seek (0 , io .SeekStart )
199123 if err != nil {
0 commit comments