]> Cypherpunks.ru repositories - goredo.git/blobdiff - inode.go
Remove excess stat call
[goredo.git] / inode.go
index 50db586cb4cc6d1eaec726eafa231f56d7daaf34..2f2285d407de55eb3b1bfd3cdea1f8b53bbb44d4 100644 (file)
--- a/inode.go
+++ b/inode.go
@@ -96,17 +96,22 @@ func inodeFromFileStat(fi os.FileInfo, stat unix.Stat_t) *Inode {
        }
 }
 
-func inodeFromFileByFd(fd *os.File) (*Inode, error) {
+func inodeFromFileByFd(fd *os.File) (inode *Inode, isDir bool, err error) {
        fi, err := fd.Stat()
        if err != nil {
-               return nil, err
+               return
+       }
+       if fi.IsDir() {
+               isDir = true
+               return
        }
        var stat unix.Stat_t
        err = unix.Fstat(int(fd.Fd()), &stat)
        if err != nil {
-               return nil, err
+               return
        }
-       return inodeFromFileStat(fi, stat), nil
+       inode = inodeFromFileStat(fi, stat)
+       return
 }
 
 func inodeFromFileByPath(p string) (*Inode, error) {