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