equal
deleted
inserted
replaced
63 |
63 |
64 func (f *UnionFile) ReadAt(s []byte, o int64) (int, error) { |
64 func (f *UnionFile) ReadAt(s []byte, o int64) (int, error) { |
65 if f.Layer != nil { |
65 if f.Layer != nil { |
66 n, err := f.Layer.ReadAt(s, o) |
66 n, err := f.Layer.ReadAt(s, o) |
67 if (err == nil || err == io.EOF) && f.Base != nil { |
67 if (err == nil || err == io.EOF) && f.Base != nil { |
68 _, err = f.Base.Seek(o+int64(n), os.SEEK_SET) |
68 _, err = f.Base.Seek(o+int64(n), io.SeekStart) |
69 } |
69 } |
70 return n, err |
70 return n, err |
71 } |
71 } |
72 if f.Base != nil { |
72 if f.Base != nil { |
73 return f.Base.ReadAt(s, o) |
73 return f.Base.ReadAt(s, o) |
266 return f.Base.WriteString(s) |
266 return f.Base.WriteString(s) |
267 } |
267 } |
268 return 0, BADFD |
268 return 0, BADFD |
269 } |
269 } |
270 |
270 |
271 func copyToLayer(base Fs, layer Fs, name string) error { |
271 func copyFile(base Fs, layer Fs, name string, bfh File) error { |
272 bfh, err := base.Open(name) |
|
273 if err != nil { |
|
274 return err |
|
275 } |
|
276 defer bfh.Close() |
|
277 |
|
278 // First make sure the directory exists |
272 // First make sure the directory exists |
279 exists, err := Exists(layer, filepath.Dir(name)) |
273 exists, err := Exists(layer, filepath.Dir(name)) |
280 if err != nil { |
274 if err != nil { |
281 return err |
275 return err |
282 } |
276 } |
313 lfh.Close() |
307 lfh.Close() |
314 return err |
308 return err |
315 } |
309 } |
316 return layer.Chtimes(name, bfi.ModTime(), bfi.ModTime()) |
310 return layer.Chtimes(name, bfi.ModTime(), bfi.ModTime()) |
317 } |
311 } |
|
312 |
|
313 func copyToLayer(base Fs, layer Fs, name string) error { |
|
314 bfh, err := base.Open(name) |
|
315 if err != nil { |
|
316 return err |
|
317 } |
|
318 defer bfh.Close() |
|
319 |
|
320 return copyFile(base, layer, name, bfh) |
|
321 } |
|
322 |
|
323 func copyFileToLayer(base Fs, layer Fs, name string, flag int, perm os.FileMode) error { |
|
324 bfh, err := base.OpenFile(name, flag, perm) |
|
325 if err != nil { |
|
326 return err |
|
327 } |
|
328 defer bfh.Close() |
|
329 |
|
330 return copyFile(base, layer, name, bfh) |
|
331 } |