From eafaffa0f09b7c22eed906ef5356b1460d44da55 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Fri, 22 Nov 2019 11:01:09 +0100 Subject: Cleanup: move all the compatibillity fluff to a dedicated "libcompat" Signed-off-by: David Oberhollenzer --- include/common.h | 3 +- include/compat.h | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/fstree.h | 2 +- include/util/compat.h | 124 -------------------------------------------------- 4 files changed, 126 insertions(+), 127 deletions(-) create mode 100644 include/compat.h delete mode 100644 include/util/compat.h (limited to 'include') diff --git a/include/common.h b/include/common.h index 684b047..f7e139f 100644 --- a/include/common.h +++ b/include/common.h @@ -26,9 +26,8 @@ #include "sqfs/dir.h" #include "sqfs/io.h" -#include "util/compat.h" #include "util/util.h" - +#include "compat.h" #include "fstree.h" #include "tar.h" diff --git a/include/compat.h b/include/compat.h new file mode 100644 index 0000000..fae9d92 --- /dev/null +++ b/include/compat.h @@ -0,0 +1,124 @@ +/* SPDX-License-Identifier: LGPL-3.0-or-later */ +/* + * util.h + * + * Copyright (C) 2019 David Oberhollenzer + */ +#ifndef COMPAT_H +#define COMPAT_H + +#if defined(__APPLE__) +#include + +#define htole16(x) OSSwapHostToLittleInt16(x) +#define htole32(x) OSSwapHostToLittleInt32(x) +#define htole64(x) OSSwapHostToLittleInt64(x) + +#define le32toh(x) OSSwapLittleToHostInt32(x) +#define le16toh(x) OSSwapLittleToHostInt16(x) +#define le64toh(x) OSSwapLittleToHostInt64(x) +#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#include +#elif defined(_WIN32) || defined(__WINDOWS__) +#define htole16(x) (x) +#define htole32(x) (x) +#define htole64(x) (x) + +#define le16toh(x) (x) +#define le32toh(x) (x) +#define le64toh(x) (x) +#else +#include +#endif + +#if defined(_WIN32) || defined(__WINDOWS__) +#include "sqfs/inode.h" + +#define S_IFSOCK SQFS_INODE_MODE_SOCK +#define S_IFLNK SQFS_INODE_MODE_LNK +#define S_IFREG SQFS_INODE_MODE_REG +#define S_IFBLK SQFS_INODE_MODE_BLK +#define S_IFDIR SQFS_INODE_MODE_DIR +#define S_IFCHR SQFS_INODE_MODE_CHR +#define S_IFIFO SQFS_INODE_MODE_FIFO +#define S_IFMT SQFS_INODE_MODE_MASK + +#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) +#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) +#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) +#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) +#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) +#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) +#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) + +#define S_ISUID SQFS_INODE_SET_UID +#define S_ISGID SQFS_INODE_SET_GID +#define S_ISVTX SQFS_INODE_STICKY + +#define S_IRWXU SQFS_INODE_OWNER_MASK +#define S_IRUSR SQFS_INODE_OWNER_R +#define S_IWUSR SQFS_INODE_OWNER_W +#define S_IXUSR SQFS_INODE_OWNER_X + +#define S_IRWXG SQFS_INODE_GROUP_MASK +#define S_IRGRP SQFS_INODE_GROUP_R +#define S_IWGRP SQFS_INODE_GROUP_W +#define S_IXGRP SQFS_INODE_GROUP_X + +#define S_IRWXO SQFS_INODE_OTHERS_MASK +#define S_IROTH SQFS_INODE_OTHERS_R +#define S_IWOTH SQFS_INODE_OTHERS_W +#define S_IXOTH SQFS_INODE_OTHERS_X + +struct stat { + sqfs_u32 st_dev; + sqfs_u32 st_ino; + sqfs_u16 st_mode; + sqfs_u16 st_nlink; + sqfs_u32 st_uid; + sqfs_u32 st_gid; + sqfs_u32 st_rdev; + sqfs_u64 st_size; + sqfs_u32 st_blksize; + sqfs_u32 st_blocks; + sqfs_u64 st_atime; + sqfs_u64 st_mtime; + sqfs_u64 st_ctime; +}; + +/* lifted from musl libc */ +#define major(x) \ + ((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) )) + +#define minor(x) \ + ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) )) + +#define makedev(x,y) ( \ + (((x)&0xfffff000ULL) << 32) | \ + (((x)&0x00000fffULL) << 8) | \ + (((y)&0xffffff00ULL) << 12) | \ + (((y)&0x000000ffULL)) ) +#else +#include +#include + +#ifdef __linux__ +#include +#endif +#endif + +#ifndef HAVE_GETLINE +#include + +ssize_t getline(char **line, size_t *n, FILE *fp); +#endif + +#ifndef HAVE_STRNDUP +char *strndup(const char *str, size_t max_len); +#endif + +#ifndef HAVE_GETSUBOPT +int getsubopt(char **opt, char *const *keys, char **val); +#endif + +#endif /* COMPAT_H */ diff --git a/include/fstree.h b/include/fstree.h index 5caac51..a63c593 100644 --- a/include/fstree.h +++ b/include/fstree.h @@ -15,7 +15,7 @@ #include #include "sqfs/predef.h" -#include "util/compat.h" +#include "compat.h" typedef struct tree_node_t tree_node_t; typedef struct file_info_t file_info_t; diff --git a/include/util/compat.h b/include/util/compat.h deleted file mode 100644 index fae9d92..0000000 --- a/include/util/compat.h +++ /dev/null @@ -1,124 +0,0 @@ -/* SPDX-License-Identifier: LGPL-3.0-or-later */ -/* - * util.h - * - * Copyright (C) 2019 David Oberhollenzer - */ -#ifndef COMPAT_H -#define COMPAT_H - -#if defined(__APPLE__) -#include - -#define htole16(x) OSSwapHostToLittleInt16(x) -#define htole32(x) OSSwapHostToLittleInt32(x) -#define htole64(x) OSSwapHostToLittleInt64(x) - -#define le32toh(x) OSSwapLittleToHostInt32(x) -#define le16toh(x) OSSwapLittleToHostInt16(x) -#define le64toh(x) OSSwapLittleToHostInt64(x) -#elif defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) -#include -#elif defined(_WIN32) || defined(__WINDOWS__) -#define htole16(x) (x) -#define htole32(x) (x) -#define htole64(x) (x) - -#define le16toh(x) (x) -#define le32toh(x) (x) -#define le64toh(x) (x) -#else -#include -#endif - -#if defined(_WIN32) || defined(__WINDOWS__) -#include "sqfs/inode.h" - -#define S_IFSOCK SQFS_INODE_MODE_SOCK -#define S_IFLNK SQFS_INODE_MODE_LNK -#define S_IFREG SQFS_INODE_MODE_REG -#define S_IFBLK SQFS_INODE_MODE_BLK -#define S_IFDIR SQFS_INODE_MODE_DIR -#define S_IFCHR SQFS_INODE_MODE_CHR -#define S_IFIFO SQFS_INODE_MODE_FIFO -#define S_IFMT SQFS_INODE_MODE_MASK - -#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) -#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) -#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) -#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) -#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) -#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) -#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) - -#define S_ISUID SQFS_INODE_SET_UID -#define S_ISGID SQFS_INODE_SET_GID -#define S_ISVTX SQFS_INODE_STICKY - -#define S_IRWXU SQFS_INODE_OWNER_MASK -#define S_IRUSR SQFS_INODE_OWNER_R -#define S_IWUSR SQFS_INODE_OWNER_W -#define S_IXUSR SQFS_INODE_OWNER_X - -#define S_IRWXG SQFS_INODE_GROUP_MASK -#define S_IRGRP SQFS_INODE_GROUP_R -#define S_IWGRP SQFS_INODE_GROUP_W -#define S_IXGRP SQFS_INODE_GROUP_X - -#define S_IRWXO SQFS_INODE_OTHERS_MASK -#define S_IROTH SQFS_INODE_OTHERS_R -#define S_IWOTH SQFS_INODE_OTHERS_W -#define S_IXOTH SQFS_INODE_OTHERS_X - -struct stat { - sqfs_u32 st_dev; - sqfs_u32 st_ino; - sqfs_u16 st_mode; - sqfs_u16 st_nlink; - sqfs_u32 st_uid; - sqfs_u32 st_gid; - sqfs_u32 st_rdev; - sqfs_u64 st_size; - sqfs_u32 st_blksize; - sqfs_u32 st_blocks; - sqfs_u64 st_atime; - sqfs_u64 st_mtime; - sqfs_u64 st_ctime; -}; - -/* lifted from musl libc */ -#define major(x) \ - ((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) )) - -#define minor(x) \ - ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) )) - -#define makedev(x,y) ( \ - (((x)&0xfffff000ULL) << 32) | \ - (((x)&0x00000fffULL) << 8) | \ - (((y)&0xffffff00ULL) << 12) | \ - (((y)&0x000000ffULL)) ) -#else -#include -#include - -#ifdef __linux__ -#include -#endif -#endif - -#ifndef HAVE_GETLINE -#include - -ssize_t getline(char **line, size_t *n, FILE *fp); -#endif - -#ifndef HAVE_STRNDUP -char *strndup(const char *str, size_t max_len); -#endif - -#ifndef HAVE_GETSUBOPT -int getsubopt(char **opt, char *const *keys, char **val); -#endif - -#endif /* COMPAT_H */ -- cgit v1.2.3