equal
deleted
inserted
replaced
153 return rfi, nil |
153 return rfi, nil |
154 |
154 |
155 } |
155 } |
156 |
156 |
157 // Readdir will weave the two directories together and |
157 // Readdir will weave the two directories together and |
158 // return a single view of the overlayed directories |
158 // return a single view of the overlayed directories. |
|
159 // At the end of the directory view, the error is io.EOF if c > 0. |
159 func (f *UnionFile) Readdir(c int) (ofi []os.FileInfo, err error) { |
160 func (f *UnionFile) Readdir(c int) (ofi []os.FileInfo, err error) { |
160 var merge DirsMerger = f.Merger |
161 var merge DirsMerger = f.Merger |
161 if merge == nil { |
162 if merge == nil { |
162 merge = defaultUnionMergeDirsFn |
163 merge = defaultUnionMergeDirsFn |
163 } |
164 } |
183 if err != nil { |
184 if err != nil { |
184 return nil, err |
185 return nil, err |
185 } |
186 } |
186 f.files = append(f.files, merged...) |
187 f.files = append(f.files, merged...) |
187 } |
188 } |
188 if c == -1 { |
189 |
|
190 if c <= 0 && len(f.files) == 0 { |
|
191 return f.files, nil |
|
192 } |
|
193 |
|
194 if f.off >= len(f.files) { |
|
195 return nil, io.EOF |
|
196 } |
|
197 |
|
198 if c <= 0 { |
189 return f.files[f.off:], nil |
199 return f.files[f.off:], nil |
190 } |
200 } |
|
201 |
|
202 if c > len(f.files) { |
|
203 c = len(f.files) |
|
204 } |
|
205 |
191 defer func() { f.off += c }() |
206 defer func() { f.off += c }() |
192 return f.files[f.off:c], nil |
207 return f.files[f.off:c], nil |
193 } |
208 } |
194 |
209 |
195 func (f *UnionFile) Readdirnames(c int) ([]string, error) { |
210 func (f *UnionFile) Readdirnames(c int) ([]string, error) { |