X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Futil.h;h=8e9d695ed090a1cbd35ad75e37da425be7663a7b;hp=646fdafc768b6b98560d8364eee236e8bdbe5ed9;hb=26c7f8bb32e4a32001d409f1693e0df016270ed5;hpb=01c6f902b2a48a33af3f94e29791f85c68df91d0 diff --git a/include/wimlib/util.h b/include/wimlib/util.h index 646fdafc..8e9d695e 100644 --- a/include/wimlib/util.h +++ b/include/wimlib/util.h @@ -49,6 +49,10 @@ #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,12 +125,30 @@ 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 @@ -143,7 +170,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 */