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) { func (u *CopyOnWriteFs) Stat(name string) (os.FileInfo, error) {
fi, err := u.layer.Stat(name) fi, err := u.layer.Stat(name)
switch err { if err != nil {
case nil: origErr := err
return fi, nil if e, ok := err.(*os.PathError); ok {
case syscall.ENOENT: err = e.Err
return u.base.Stat(name)
default:
return nil, 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 // Renaming files present only in the base layer is not permitted