]> wimlib.net Git - wimlib/blobdiff - include/wimlib/util.h
Fix reading > 16 bits from bitstream
[wimlib] / include / wimlib / util.h
index 646fdafc768b6b98560d8364eee236e8bdbe5ed9..cd0d599f28875596f059b517da55bfd67e37dbc2 100644 (file)
 
 #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
 
+/* Maximum number of array elements to allocate on the stack (used in various
+ * places when large temporary buffers are needed).  */
+#define STACK_MAX 32768
+
 #ifdef ENABLE_CUSTOM_MEMORY_ALLOCATOR
 extern void *
 wimlib_malloc(size_t) _malloc_attribute;
@@ -90,6 +94,11 @@ wimlib_strdup(const char *str) _malloc_attribute;
 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,6 +125,13 @@ 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)
 {
@@ -143,7 +159,6 @@ hash_u64(u64 n)
 #  define is_any_path_separator(c) ((c) == '/' || (c) == '\\')
 #endif
 
-#define WIM_PATH_SEPARATOR OS_PREFERRED_PATH_SEPARATOR
-
+#define WIM_PATH_SEPARATOR WIMLIB_WIM_PATH_SEPARATOR
 
 #endif /* _WIMLIB_UTIL_H */