]> wimlib.net Git - wimlib/blobdiff - src/add_image.c
Implement workaround for NTFS-3g bug when handling empty DACLs
[wimlib] / src / add_image.c
index fcb4c472661dd6db75b08d6f99b14a370aff5c63..746c06a92dd43ed6d1cf0c427b5e1080988699ec 100644 (file)
  * along with wimlib; if not, see http://www.gnu.org/licenses/.
  */
 
-#include "wimlib_internal.h"
-#include "lookup_table.h"
-#include "xml.h"
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "wimlib.h"
+#include "wimlib/capture.h"
+#include "wimlib/error.h"
+#include "wimlib/lookup_table.h"
+#include "wimlib/metadata.h"
+#include "wimlib/xml.h"
 
 /*
  * Adds the dentry tree and security data for a new image to the image metadata
@@ -61,7 +68,7 @@ add_new_dentry_tree(WIMStruct *wim, struct wim_dentry *root_dentry,
        return ret;
 }
 
-/* Append an empty image to the WIMStruct. */
+/* API function documented in wimlib.h  */
 WIMLIBAPI int
 wimlib_add_empty_image(WIMStruct *wim, const tchar *name, int *new_idx_ret)
 {
@@ -70,17 +77,12 @@ wimlib_add_empty_image(WIMStruct *wim, const tchar *name, int *new_idx_ret)
 
        DEBUG("Adding empty image \"%"TS"\"", name);
 
-       if (name == NULL || name[0] == T('\0')) {
-               ERROR("Must specify a non-empty string for the image name");
-               ret = WIMLIB_ERR_INVALID_PARAM;
-               goto out;
-       }
+       if (name == NULL)
+               name = T("");
 
-       if (wim->hdr.total_parts != 1) {
-               ERROR("Cannot add an image to a split WIM");
-               ret = WIMLIB_ERR_SPLIT_UNSUPPORTED;
+       ret = can_modify_wim(wim);
+       if (ret)
                goto out;
-       }
 
        if (wimlib_image_name_in_use(wim, name)) {
                ERROR("There is already an image named \"%"TS"\" in the WIM!",
@@ -113,7 +115,7 @@ out_put_image_metadata:
                           wim->lookup_table);
        goto out;
 out_free_security_data:
-       free_security_data(sd);
+       free_wim_security_data(sd);
 out:
        return ret;
 }
@@ -146,8 +148,7 @@ capture_sources_to_add_cmds(const struct wimlib_capture_source *sources,
        return add_cmds;
 }
 
-/* Adds an image to the WIMStruct from multiple on-disk directory trees, or a
- * NTFS volume. */
+/* API function documented in wimlib.h  */
 WIMLIBAPI int
 wimlib_add_image_multisource(WIMStruct *wim,
                             const struct wimlib_capture_source *sources,
@@ -198,7 +199,7 @@ out:
        return ret;
 }
 
-/* Adds an image to the WIMStruct from an on-disk directory tree or NTFS volume. */
+/* API function documented in wimlib.h  */
 WIMLIBAPI int
 wimlib_add_image(WIMStruct *wim,
                 const tchar *source,