From c69ea44397b16a3ed2079c24a9a81692097f44c2 Mon Sep 17 00:00:00 2001 From: Valtteri Koskivuori Date: Tue, 15 Jun 2021 20:29:04 +0300 Subject: [PATCH] Userland: Teach the file utility that empty files also exist Previously, empty files with no identifiable file type extension would show up as `text/plain`. This fixes it up to show empty files as what they really are - full of nothing. --- Userland/Utilities/file.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Userland/Utilities/file.cpp b/Userland/Utilities/file.cpp index e9e2414db7..e35d676089 100644 --- a/Userland/Utilities/file.cpp +++ b/Userland/Utilities/file.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include static Optional description_only(String description, [[maybe_unused]] const String& path) @@ -121,8 +122,17 @@ int main(int argc, char** argv) continue; } + struct stat file_stat; + if (lstat(path, &file_stat) < 0) { + perror("lstat"); + return 1; + } + + auto file_size_in_bytes = file_stat.st_size; if (file->is_directory()) { outln("{}: directory", path); + } else if (!file_size_in_bytes) { + outln("{}: empty", path); } else { // Read accounts for longest possible offset + signature we currently match against. auto bytes = file->read(0x9006);