diff --git a/Userland/Libraries/LibCore/File.cpp b/Userland/Libraries/LibCore/File.cpp index 0290d4205e..1adf18b5b5 100644 --- a/Userland/Libraries/LibCore/File.cpp +++ b/Userland/Libraries/LibCore/File.cpp @@ -104,10 +104,7 @@ int File::leak_fd() bool File::is_device() const { - struct stat stat; - if (fstat(fd(), &stat) < 0) - return false; - return S_ISBLK(stat.st_mode) || S_ISCHR(stat.st_mode); + return is_device(fd()); } bool File::is_device(DeprecatedString const& filename) @@ -118,6 +115,14 @@ bool File::is_device(DeprecatedString const& filename) return S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode); } +bool File::is_device(int fd) +{ + struct stat st; + if (fstat(fd, &st) < 0) + return false; + return S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode); +} + bool File::is_block_device() const { struct stat stat; @@ -152,10 +157,7 @@ bool File::is_char_device(DeprecatedString const& filename) bool File::is_directory() const { - struct stat stat; - if (fstat(fd(), &stat) < 0) - return false; - return S_ISDIR(stat.st_mode); + return is_directory(fd()); } bool File::is_directory(DeprecatedString const& filename) @@ -166,6 +168,14 @@ bool File::is_directory(DeprecatedString const& filename) return S_ISDIR(st.st_mode); } +bool File::is_directory(int fd) +{ + struct stat st; + if (fstat(fd, &st) < 0) + return false; + return S_ISDIR(st.st_mode); +} + bool File::is_link() const { struct stat stat; diff --git a/Userland/Libraries/LibCore/File.h b/Userland/Libraries/LibCore/File.h index 6ac18fd95c..a2942d4342 100644 --- a/Userland/Libraries/LibCore/File.h +++ b/Userland/Libraries/LibCore/File.h @@ -33,9 +33,11 @@ public: bool is_directory() const; static bool is_directory(DeprecatedString const& filename); + static bool is_directory(int fd); bool is_device() const; static bool is_device(DeprecatedString const& filename); + static bool is_device(int fd); bool is_block_device() const; static bool is_block_device(DeprecatedString const& filename); bool is_char_device() const;