LibCore: Port Directory to Windows

This commit is contained in:
stasoid 2024-11-15 19:02:27 +05:00 committed by Andrew Kaster
commit 43056a8684
Notes: github-actions[bot] 2024-11-20 05:08:09 +00:00
2 changed files with 7 additions and 8 deletions

View file

@ -4,10 +4,8 @@
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
*/ */
#include "Directory.h" #include <LibCore/Directory.h>
#include "DirIterator.h" #include <LibCore/System.h>
#include "System.h"
#include <dirent.h>
namespace Core { namespace Core {
@ -31,6 +29,7 @@ Directory::~Directory()
MUST(System::close(m_directory_fd)); MUST(System::close(m_directory_fd));
} }
#ifndef AK_OS_WINDOWS
ErrorOr<void> Directory::chown(uid_t uid, gid_t gid) ErrorOr<void> Directory::chown(uid_t uid, gid_t gid)
{ {
if (m_directory_fd == -1) if (m_directory_fd == -1)
@ -38,6 +37,7 @@ ErrorOr<void> Directory::chown(uid_t uid, gid_t gid)
TRY(Core::System::fchown(m_directory_fd, uid, gid)); TRY(Core::System::fchown(m_directory_fd, uid, gid));
return {}; return {};
} }
#endif
ErrorOr<bool> Directory::is_valid_directory(int fd) ErrorOr<bool> Directory::is_valid_directory(int fd)
{ {
@ -69,7 +69,7 @@ ErrorOr<Directory> Directory::create(LexicalPath path, CreateDirectories create_
ErrorOr<void> Directory::ensure_directory(LexicalPath const& path, mode_t creation_mode) ErrorOr<void> Directory::ensure_directory(LexicalPath const& path, mode_t creation_mode)
{ {
if (path.basename() == "/" || path.basename() == ".") if (path.is_root() || path.string() == ".")
return {}; return {};
TRY(ensure_directory(path.parent(), creation_mode)); TRY(ensure_directory(path.parent(), creation_mode));

View file

@ -10,14 +10,11 @@
#include <AK/Error.h> #include <AK/Error.h>
#include <AK/Format.h> #include <AK/Format.h>
#include <AK/Function.h> #include <AK/Function.h>
#include <AK/IterationDecision.h>
#include <AK/LexicalPath.h> #include <AK/LexicalPath.h>
#include <AK/Noncopyable.h> #include <AK/Noncopyable.h>
#include <AK/Optional.h>
#include <LibCore/DirIterator.h> #include <LibCore/DirIterator.h>
#include <LibCore/DirectoryEntry.h> #include <LibCore/DirectoryEntry.h>
#include <LibCore/File.h> #include <LibCore/File.h>
#include <dirent.h>
#include <sys/stat.h> #include <sys/stat.h>
namespace Core { namespace Core {
@ -51,7 +48,9 @@ public:
static ErrorOr<void> for_each_entry(StringView path, DirIterator::Flags, ForEachEntryCallback); static ErrorOr<void> for_each_entry(StringView path, DirIterator::Flags, ForEachEntryCallback);
ErrorOr<void> for_each_entry(DirIterator::Flags, ForEachEntryCallback); ErrorOr<void> for_each_entry(DirIterator::Flags, ForEachEntryCallback);
#ifndef AK_OS_WINDOWS
ErrorOr<void> chown(uid_t, gid_t); ErrorOr<void> chown(uid_t, gid_t);
#endif
static ErrorOr<bool> is_valid_directory(int fd); static ErrorOr<bool> is_valid_directory(int fd);