#include "wimlib/alloca.h"
#include "wimlib/assert.h"
#include "wimlib/blob_table.h"
-#include "wimlib/capture.h"
#include "wimlib/dentry.h"
#include "wimlib/encoding.h"
#include "wimlib/endianness.h"
#include "wimlib/metadata.h"
#include "wimlib/paths.h"
#include "wimlib/progress.h"
+#include "wimlib/scan.h"
+#include "wimlib/test_support.h"
#include "wimlib/xml_windows.h"
/* Saved specification of a "primitive" update operation that was performed. */
"/swapfile.sys\n"
"/System Volume Information\n"
"/RECYCLER\n"
+"/$RECYCLE.BIN\n"
+"/$Recycle.Bin\n"
"/Windows/CSC\n";
static const tchar *wimboot_cfgfile =
size_t len = tstrlen(fs_source_path) +
tstrlen(wimboot_cfgfile);
- tmp_config_file = MALLOC((len + 1) * sizeof(tchar));
struct stat st;
+ tmp_config_file = MALLOC((len + 1) * sizeof(tchar));
+ if (!tmp_config_file)
+ return WIMLIB_ERR_NOMEM;
+
tsprintf(tmp_config_file, T("%"TS"%"TS),
fs_source_path, wimboot_cfgfile);
if (!tstat(tmp_config_file, &st)) {
tchar *fs_source_path;
tchar *wim_target_path;
const tchar *config_file;
- struct capture_params params;
+ struct scan_params params;
struct capture_config config;
- capture_tree_t capture_tree = platform_default_capture_tree;
+ scan_tree_t scan_tree = platform_default_scan_tree;
struct wim_dentry *branch;
add_flags = add_cmd->add.add_flags;
#ifdef WITH_NTFS_3G
if (add_flags & WIMLIB_ADD_FLAG_NTFS)
- capture_tree = ntfs_3g_build_dentry_tree;
+ scan_tree = ntfs_3g_build_dentry_tree;
+#endif
+
+#ifdef ENABLE_TEST_SUPPORT
+ if (add_flags & WIMLIB_ADD_FLAG_GENERATE_TEST_DATA)
+ scan_tree = generate_dentry_tree;
#endif
ret = get_capture_config(config_file, &config,
if (WIMLIB_IS_WIM_ROOT_PATH(wim_target_path))
params.add_flags |= WIMLIB_ADD_FLAG_ROOT;
- ret = (*capture_tree)(&branch, fs_source_path, ¶ms);
+ ret = (*scan_tree)(&branch, fs_source_path, ¶ms);
if (ret)
goto out_destroy_config;
/* If a capture configuration file was explicitly specified when
* capturing an image in WIMBoot mode, save it as
* /Windows/System32/WimBootCompress.ini in the WIM image. */
- ret = platform_default_capture_tree(&branch, config_file, ¶ms);
+ ret = platform_default_scan_tree(&branch, config_file, ¶ms);
if (ret)
goto out_destroy_config;
goto out_destroy_config;
}
- if (WIMLIB_IS_WIM_ROOT_PATH(wim_target_path) &&
- get_dentry(wim, T("Windows"), WIMLIB_CASE_INSENSITIVE))
- {
+ if (WIMLIB_IS_WIM_ROOT_PATH(wim_target_path)) {
ret = set_windows_specific_info(wim);
if (ret)
goto out_destroy_config;
out_destroy_config:
destroy_capture_config(&config);
out:
+ FREE(params.cur_path);
return ret;
}
inode_table = alloca(sizeof(struct wim_inode_table));
sd_set = alloca(sizeof(struct wim_sd_set));
- ret = init_inode_table(inode_table, 9001);
+ ret = init_inode_table(inode_table, 64);
if (ret)
goto out;
WIMLIB_ADD_FLAG_WIMBOOT |
WIMLIB_ADD_FLAG_NO_REPLACE |
WIMLIB_ADD_FLAG_TEST_FILE_EXCLUSION |
- WIMLIB_ADD_FLAG_SNAPSHOT))
+ WIMLIB_ADD_FLAG_SNAPSHOT |
+ #ifdef ENABLE_TEST_SUPPORT
+ WIMLIB_ADD_FLAG_GENERATE_TEST_DATA |
+ #endif
+ WIMLIB_ADD_FLAG_FILE_PATHS_UNNEEDED))
return WIMLIB_ERR_INVALID_PARAM;
bool is_entire_image = WIMLIB_IS_WIM_ROOT_PATH(cmd->add.wim_target_path);
#ifndef WITH_NTFS_3G
if (add_flags & WIMLIB_ADD_FLAG_NTFS) {
- ERROR("NTFS-3g capture mode is unsupported because wimlib "
+ ERROR("NTFS-3G capture mode is unsupported because wimlib "
"was compiled --without-ntfs-3g");
return WIMLIB_ERR_UNSUPPORTED;
}
/* Currently, SNAPSHOT means Windows VSS. In the future, it perhaps
* could be implemented for other types of snapshots, such as btrfs. */
if (add_flags & WIMLIB_ADD_FLAG_SNAPSHOT) {
- ERROR("Snapshot mode is only supported on Windows (VSS)");
+ ERROR("Snapshot mode is only supported on Windows, where it uses VSS.");
return WIMLIB_ERR_UNSUPPORTED;
}
#endif