]> wimlib.net Git - wimlib/blobdiff - src/util.c
Remove verify_dentry(); separate refcnt recalc. from verify_inode()
[wimlib] / src / util.c
index 847510616de12084bfda260de8c13b8bcd835d11..f5a8ca29fb5e6451aea7926a0975471ce10f2514 100644 (file)
@@ -145,7 +145,7 @@ wimlib_fprintf(FILE *fp, const tchar *format, ...)
 #endif /* __WIN32__ */
 
 #ifdef ENABLE_ERROR_MESSAGES
-static bool wimlib_print_errors = false;
+bool wimlib_print_errors = false;
 #endif
 
 #if defined(ENABLE_ERROR_MESSAGES) || defined(ENABLE_DEBUG)
@@ -389,6 +389,8 @@ static const tchar *error_strings[] = {
                = T("The requested operation is unsupported"),
        [WIMLIB_ERR_VOLUME_LACKS_FEATURES]
                = T("The volume did not support a feature necessary to complete the operation"),
+       [WIMLIB_ERR_WIM_IS_READONLY]
+               = T("The WIM is read-only (file permissions, header flag, or split WIM)"),
        [WIMLIB_ERR_WRITE]
                = T("Failed to write data to a file"),
        [WIMLIB_ERR_XML]
@@ -439,7 +441,7 @@ void *
 wimlib_calloc(size_t nmemb, size_t size)
 {
        size_t total_size = nmemb * size;
-       void *p = (*wimlib_malloc_func)(total_size);
+       void *p = MALLOC(total_size);
        if (p)
                p = memset(p, 0, total_size);
        return p;
@@ -452,9 +454,9 @@ wimlib_strdup(const char *str)
        char *p;
 
        size = strlen(str);
-       p = (*wimlib_malloc_func)(size + 1);
+       p = MALLOC(size + 1);
        if (p)
-               memcpy(p, str, size + 1);
+               p = memcpy(p, str, size + 1);
        return p;
 }
 
@@ -466,7 +468,7 @@ wimlib_wcsdup(const wchar_t *str)
        wchar_t *p;
 
        size = wcslen(str);
-       p = (*wimlib_malloc_func)((size + 1) * sizeof(wchar_t));
+       p = MALLOC((size + 1) * sizeof(wchar_t));
        if (p)
                p = wmemcpy(p, str, size + 1);
        return p;
@@ -475,6 +477,15 @@ wimlib_wcsdup(const wchar_t *str)
 
 #endif /* ENABLE_CUSTOM_MEMORY_ALLOCATOR */
 
+void *
+memdup(const void *mem, size_t size)
+{
+       void *ptr = MALLOC(size);
+       if (ptr)
+               ptr = memcpy(ptr, mem, size);
+       return ptr;
+}
+
 WIMLIBAPI int
 wimlib_set_memory_allocator(void *(*malloc_func)(size_t),
                            void (*free_func)(void *),