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

Fix CopyOnWriteFs Stat to handle *os.PathError
diff --git a/copyOnWriteFs.go b/copyOnWriteFs.go
index 2f8c61b..039ce53 100644
--- a/copyOnWriteFs.go
+++ b/copyOnWriteFs.go
@@ -75,14 +75,17 @@
 
 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