Merge pull request #67 from tatsushid/fix/copyonwritefs-patherr-handling

Fix CopyOnWriteFs Stat to handle *os.PathError
This commit is contained in:
Hanno Hecker 2016-02-01 18:04:30 +01:00
commit 4c1d2aade6
1 changed files with 10 additions and 7 deletions

View File

@ -75,14 +75,17 @@ func (u *CopyOnWriteFs) Chmod(name string, mode os.FileMode) error {
func (u *CopyOnWriteFs) Stat(name string) (os.FileInfo, error) {
fi, err := u.layer.Stat(name)
switch err {
case nil:
return fi, nil
case syscall.ENOENT:
return u.base.Stat(name)
default:
return nil, err
if err != nil {
origErr := err
if e, ok := err.(*os.PathError); ok {
err = e.Err
}
if err == syscall.ENOENT {
return u.base.Stat(name)
}
return nil, origErr
}
return fi, nil
}
// Renaming files present only in the base layer is not permitted