summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibCore/DeprecatedFile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibCore/DeprecatedFile.cpp')
-rw-r--r--Userland/Libraries/LibCore/DeprecatedFile.cpp138
1 files changed, 4 insertions, 134 deletions
diff --git a/Userland/Libraries/LibCore/DeprecatedFile.cpp b/Userland/Libraries/LibCore/DeprecatedFile.cpp
index a2cb1039ad..15a5856a4a 100644
--- a/Userland/Libraries/LibCore/DeprecatedFile.cpp
+++ b/Userland/Libraries/LibCore/DeprecatedFile.cpp
@@ -104,21 +104,8 @@ int DeprecatedFile::leak_fd()
bool DeprecatedFile::is_device() const
{
- return is_device(fd());
-}
-
-bool DeprecatedFile::is_device(DeprecatedString const& filename)
-{
- struct stat st;
- if (stat(filename.characters(), &st) < 0)
- return false;
- return S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode);
-}
-
-bool DeprecatedFile::is_device(int fd)
-{
struct stat st;
- if (fstat(fd, &st) < 0)
+ if (fstat(fd(), &st) < 0)
return false;
return S_ISBLK(st.st_mode) || S_ISCHR(st.st_mode);
}
@@ -131,14 +118,6 @@ bool DeprecatedFile::is_block_device() const
return S_ISBLK(stat.st_mode);
}
-bool DeprecatedFile::is_block_device(DeprecatedString const& filename)
-{
- struct stat st;
- if (stat(filename.characters(), &st) < 0)
- return false;
- return S_ISBLK(st.st_mode);
-}
-
bool DeprecatedFile::is_char_device() const
{
struct stat stat;
@@ -147,31 +126,10 @@ bool DeprecatedFile::is_char_device() const
return S_ISCHR(stat.st_mode);
}
-bool DeprecatedFile::is_char_device(DeprecatedString const& filename)
-{
- struct stat st;
- if (stat(filename.characters(), &st) < 0)
- return false;
- return S_ISCHR(st.st_mode);
-}
-
bool DeprecatedFile::is_directory() const
{
- return is_directory(fd());
-}
-
-bool DeprecatedFile::is_directory(DeprecatedString const& filename)
-{
struct stat st;
- if (stat(filename.characters(), &st) < 0)
- return false;
- return S_ISDIR(st.st_mode);
-}
-
-bool DeprecatedFile::is_directory(int fd)
-{
- struct stat st;
- if (fstat(fd, &st) < 0)
+ if (fstat(fd(), &st) < 0)
return false;
return S_ISDIR(st.st_mode);
}
@@ -184,62 +142,9 @@ bool DeprecatedFile::is_link() const
return S_ISLNK(stat.st_mode);
}
-bool DeprecatedFile::is_link(DeprecatedString const& filename)
-{
- struct stat st;
- if (lstat(filename.characters(), &st) < 0)
- return false;
- return S_ISLNK(st.st_mode);
-}
-
bool DeprecatedFile::looks_like_shared_library() const
{
- return DeprecatedFile::looks_like_shared_library(m_filename);
-}
-
-bool DeprecatedFile::looks_like_shared_library(DeprecatedString const& filename)
-{
- return filename.ends_with(".so"sv) || filename.contains(".so."sv);
-}
-
-bool DeprecatedFile::can_delete_or_move(StringView path)
-{
- VERIFY(!path.is_empty());
- auto directory = LexicalPath::dirname(path);
- auto directory_has_write_access = !Core::System::access(directory, W_OK).is_error();
- if (!directory_has_write_access)
- return false;
-
- auto stat_or_empty = [](StringView path) {
- auto stat_or_error = Core::System::stat(path);
- if (stat_or_error.is_error()) {
- struct stat stat { };
- return stat;
- }
- return stat_or_error.release_value();
- };
-
- auto directory_stat = stat_or_empty(directory);
- bool is_directory_sticky = directory_stat.st_mode & S_ISVTX;
- if (!is_directory_sticky)
- return true;
-
- // Directory is sticky, only the file owner, directory owner, and root can modify (rename, remove) it.
- auto user_id = geteuid();
- return user_id == 0 || directory_stat.st_uid == user_id || stat_or_empty(path).st_uid == user_id;
-}
-
-bool DeprecatedFile::exists(StringView filename)
-{
- return !Core::System::stat(filename).is_error();
-}
-
-ErrorOr<size_t> DeprecatedFile::size(DeprecatedString const& filename)
-{
- struct stat st;
- if (stat(filename.characters(), &st) < 0)
- return Error::from_errno(errno);
- return st.st_size;
+ return m_filename.ends_with(".so"sv) || m_filename.contains(".so."sv);
}
DeprecatedString DeprecatedFile::real_path_for(DeprecatedString const& filename)
@@ -268,7 +173,7 @@ DeprecatedString DeprecatedFile::current_working_directory()
DeprecatedString DeprecatedFile::absolute_path(DeprecatedString const& path)
{
- if (DeprecatedFile::exists(path))
+ if (!Core::System::stat(path).is_error())
return DeprecatedFile::real_path_for(path);
if (path.starts_with("/"sv))
@@ -562,41 +467,6 @@ ErrorOr<void, DeprecatedFile::CopyError> DeprecatedFile::copy_directory(Deprecat
return {};
}
-ErrorOr<void> DeprecatedFile::link_file(DeprecatedString const& dst_path, DeprecatedString const& src_path)
-{
- int duplicate_count = 0;
- while (access(get_duplicate_name(dst_path, duplicate_count).characters(), F_OK) == 0) {
- ++duplicate_count;
- }
- if (duplicate_count != 0) {
- return link_file(get_duplicate_name(dst_path, duplicate_count), src_path);
- }
- if (symlink(src_path.characters(), dst_path.characters()) < 0)
- return Error::from_errno(errno);
- return {};
-}
-
-ErrorOr<void> DeprecatedFile::remove(StringView path, RecursionMode mode)
-{
- auto path_stat = TRY(Core::System::lstat(path));
-
- if (S_ISDIR(path_stat.st_mode) && mode == RecursionMode::Allowed) {
- auto di = DirIterator(path, DirIterator::SkipParentAndBaseDir);
- if (di.has_error())
- return di.error();
-
- while (di.has_next()) {
- TRY(remove(di.next_full_path(), RecursionMode::Allowed));
- }
-
- TRY(Core::System::rmdir(path));
- } else {
- TRY(Core::System::unlink(path));
- }
-
- return {};
-}
-
Optional<DeprecatedString> DeprecatedFile::resolve_executable_from_environment(StringView filename)
{
if (filename.is_empty())