#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;
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 */
+extern void *
+wimlib_aligned_malloc(size_t size, size_t alignment) _malloc_attribute;
+
+extern void
+wimlib_aligned_free(void *ptr);
+
+#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
+#define ALIGNED_MALLOC wimlib_aligned_malloc
+#define ALIGNED_FREE wimlib_aligned_free
extern void *
memdup(const void *mem, size_t size) _malloc_attribute;
mempcpy(void *dst, const void *src, size_t n);
#endif
-/* util.c */
+extern size_t
+utf16le_strlen(const utf16lechar *s);
+
extern void
randomize_byte_array(u8 *p, size_t 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