DirectoryEntry.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "DirectoryEntry.h"
  7. #include <dirent.h>
  8. namespace Core {
  9. static DirectoryEntry::Type directory_entry_type_from_posix(unsigned char dt_constant)
  10. {
  11. switch (dt_constant) {
  12. case DT_UNKNOWN:
  13. return DirectoryEntry::Type::Unknown;
  14. case DT_FIFO:
  15. return DirectoryEntry::Type::NamedPipe;
  16. case DT_CHR:
  17. return DirectoryEntry::Type::CharacterDevice;
  18. case DT_DIR:
  19. return DirectoryEntry::Type::Directory;
  20. case DT_BLK:
  21. return DirectoryEntry::Type::BlockDevice;
  22. case DT_REG:
  23. return DirectoryEntry::Type::File;
  24. case DT_LNK:
  25. return DirectoryEntry::Type::SymbolicLink;
  26. case DT_SOCK:
  27. return DirectoryEntry::Type::Socket;
  28. #ifndef AK_OS_OPENBSD
  29. case DT_WHT:
  30. return DirectoryEntry::Type::Whiteout;
  31. #endif
  32. }
  33. VERIFY_NOT_REACHED();
  34. }
  35. DirectoryEntry DirectoryEntry::from_dirent(dirent const& de)
  36. {
  37. return DirectoryEntry {
  38. .type = directory_entry_type_from_posix(de.d_type),
  39. .name = de.d_name,
  40. };
  41. }
  42. }