]> wimlib.net Git - wimlib/blobdiff - include/wimlib/util.h
Remove quotes in do_load_text_file()
[wimlib] / include / wimlib / util.h
index 329368384cc26d76b516793244cd6c9fcaad64d5..b2d7b5df29e7aa899be1acda17b4da1c491d5603 100644 (file)
@@ -5,7 +5,6 @@
 #include "wimlib/compiler.h"
 
 #include <stdio.h>
-#include <stddef.h>
 
 #ifndef min
 #define min(a, b) ({ typeof(a) __a = (a); typeof(b) __b = (b); \
 
 #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
 
-#ifdef ENABLE_CUSTOM_MEMORY_ALLOCATOR
+/* Maximum number of array elements to allocate on the stack (used in various
+ * places when large temporary buffers are needed).  */
+#define STACK_MAX 32768
+
 extern void *
 wimlib_malloc(size_t) _malloc_attribute;
 
@@ -70,26 +72,21 @@ wimlib_wcsdup(const wchar_t *str) _malloc_attribute;
 extern char *
 wimlib_strdup(const char *str) _malloc_attribute;
 
-#  define      MALLOC  wimlib_malloc
-#  define      FREE    wimlib_free_memory
-#  define      REALLOC wimlib_realloc
-#  define      CALLOC  wimlib_calloc
-#  define      STRDUP  wimlib_strdup
-#  define      WCSDUP  wimlib_wcsdup
-#else /* ENABLE_CUSTOM_MEMORY_ALLOCATOR */
-#  include <stdlib.h>
-#  include <string.h>
-#  define      MALLOC  malloc
-#  define      FREE    free
-#  define      REALLOC realloc
-#  define      CALLOC  calloc
-#  define      STRDUP  strdup
-#  define       WCSDUP  wcsdup
-#endif /* !ENABLE_CUSTOM_MEMORY_ALLOCATOR */
+#define        MALLOC  wimlib_malloc
+#define        FREE    wimlib_free_memory
+#define        REALLOC wimlib_realloc
+#define        CALLOC  wimlib_calloc
+#define        STRDUP  wimlib_strdup
+#define        WCSDUP  wimlib_wcsdup
 
 extern void *
 memdup(const void *mem, size_t size) _malloc_attribute;
 
+#ifndef HAVE_MEMPCPY
+extern void *
+mempcpy(void *dst, const void *src, size_t n);
+#endif
+
 /* util.c */
 extern void
 randomize_byte_array(u8 *p, size_t n);
@@ -116,16 +113,51 @@ bsr32(u32 n)
 #endif
 }
 
+static inline bool
+is_power_of_2(unsigned long n)
+{
+       return (n != 0 && (n & (n - 1)) == 0);
+
+}
+
 static inline u64
 hash_u64(u64 n)
 {
        return n * 0x9e37fffffffc0001ULL;
 }
 
+static inline int
+cmp_u64(u64 n1, u64 n2)
+{
+       if (n1 < n2)
+               return -1;
+       else if (n1 > n2)
+               return 1;
+       else
+               return 0;
+}
+
+/* is_any_path_separator() - characters treated as path separators in WIM path
+ * specifications and capture configuration files (the former will be translated
+ * to WIM_PATH_SEPARATOR; the latter will be translated to
+ * OS_PREFERRED_PATH_SEPARATOR)
+ *
+ * OS_PREFERRED_PATH_SEPARATOR - preferred (or only) path separator on the
+ * operating system.  Used when constructing filesystem paths to extract or
+ * archive.
+ *
+ * WIM_PATH_SEPARATOR - character treated as path separator for WIM paths.
+ * Currently needs to be '/' on UNIX for the WIM mounting code to work properly.
+ */
+
 #ifdef __WIN32__
 #  define OS_PREFERRED_PATH_SEPARATOR L'\\'
+#  define is_any_path_separator(c) ((c) == L'/' || (c) == L'\\')
 #else
 #  define OS_PREFERRED_PATH_SEPARATOR '/'
+#  define is_any_path_separator(c) ((c) == '/' || (c) == '\\')
 #endif
 
+#define WIM_PATH_SEPARATOR WIMLIB_WIM_PATH_SEPARATOR
+
 #endif /* _WIMLIB_UTIL_H */