From 67ccdbe3843026cd5f33122d3173b930fadd2c03 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 9 Feb 2020 11:50:18 +0100 Subject: [PATCH] LibCore: Add File::is_directory() helpers --- Libraries/LibCore/File.cpp | 17 +++++++++++++++++ Libraries/LibCore/File.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/Libraries/LibCore/File.cpp b/Libraries/LibCore/File.cpp index e5058f8dfb..f12443ad2a 100644 --- a/Libraries/LibCore/File.cpp +++ b/Libraries/LibCore/File.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include namespace Core { @@ -83,4 +84,20 @@ bool File::open(IODevice::OpenMode mode) return true; } +bool File::is_directory() const +{ + struct stat stat; + if (fstat(fd(), &stat) < 0) + return false; + return S_ISDIR(stat.st_mode); +} + +bool File::is_directory(const String& filename) +{ + struct stat st; + if (stat(filename.characters(), &st) < 0) + return false; + return S_ISDIR(st.st_mode); +} + } diff --git a/Libraries/LibCore/File.h b/Libraries/LibCore/File.h index fd99805f85..51876e738a 100644 --- a/Libraries/LibCore/File.h +++ b/Libraries/LibCore/File.h @@ -39,6 +39,9 @@ public: String filename() const { return m_filename; } void set_filename(const StringView& filename) { m_filename = filename; } + bool is_directory() const; + static bool is_directory(const String& filename); + virtual bool open(IODevice::OpenMode) override; enum class ShouldCloseFileDescription {