From e7ecb1f92ae618a56ee8eabb6cbf98365de3695a Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Sun, 2 Jul 2023 19:50:05 +0200 Subject: Move sqfs_dir_entry_t code from libio into libsquashfs Signed-off-by: David Oberhollenzer --- include/sqfs/dir_entry.h | 101 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 include/sqfs/dir_entry.h (limited to 'include/sqfs/dir_entry.h') diff --git a/include/sqfs/dir_entry.h b/include/sqfs/dir_entry.h new file mode 100644 index 0000000..5f80bab --- /dev/null +++ b/include/sqfs/dir_entry.h @@ -0,0 +1,101 @@ +/* SPDX-License-Identifier: LGPL-3.0-or-later */ +/* + * dir_entry.h + * + * Copyright (C) 2023 David Oberhollenzer + */ +#ifndef SQFS_DIR_ENTRY_H +#define SQFS_DIR_ENTRY_H + +#include "sqfs/predef.h" + +typedef enum { + SQFS_DIR_ENTRY_FLAG_MOUNT_POINT = 0x0001, + + SQFS_DIR_ENTRY_FLAG_HARD_LINK = 0x0002, + + SQFS_DIR_ENTRY_FLAG_ALL = 0x0003, +} SQFS_DIR_ENTRY_FLAG; + +/** + * @struct sqfs_dir_entry_t + * + * @brief A directory entry returned by a @ref dir_iterator_t + */ +struct sqfs_dir_entry_t { + /** + * @brief Total size of file entries + */ + sqfs_u64 size; + + /** + * @brief Unix time stamp when the entry was last modified. + * + * If necessary, the OS native time stamp is converted to Unix time. + */ + sqfs_s64 mtime; + + /** + * @brief Device number where the entry is stored on. + * + * On Windows and other non-Unix OSes, a dummy value is stored here. + */ + sqfs_u64 dev; + + /** + * @brief Device number for device special files. + * + * On Windows and other non-Unix OSes, a dummy value is stored here. + */ + sqfs_u64 rdev; + + /** + * @brief ID of the user that owns the entry. + * + * On Windows and other non-Unix OSes, this always reports user 0. + */ + sqfs_u64 uid; + + /** + * @brief ID of the group that owns the entry. + * + * On Windows and other non-Unix OSes, this always reports group 0. + */ + sqfs_u64 gid; + + /** + * @brief Unix style permissions and entry type. + * + * On Windows and other non-Unix OSes, this is synthesized from the + * Unix-like file type, default 0755 permissions for directories or + * 0644 for files. + */ + sqfs_u16 mode; + + /** + * @brief Combination of SQFS_DIR_ENTRY_FLAG values + */ + sqfs_u16 flags; + + /** + * @brief Name of the entry + * + * On Unix-like OSes, the name is returned as-is. On systems like + * Windows with encoding-aware APIs, the name is converted to UTF-8. + */ + char name[]; +}; + +#ifdef __cplusplus +extern "C" { +#endif + +SQFS_API sqfs_dir_entry_t *sqfs_dir_entry_create(const char *name, + sqfs_u16 mode, + sqfs_u16 flags); + +#ifdef __cplusplus +} +#endif + +#endif /* SQFS_DIR_ENTRY_H */ -- cgit v1.2.3