else
inode->i_ino = (u64)root_stbuf.st_ino |
((u64)root_stbuf.st_dev << ((sizeof(ino_t) * 8) & 63));
-
- add_image_flags &= ~WIMLIB_ADD_IMAGE_FLAG_ROOT;
inode->i_resolved = 1;
-
+ if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_UNIX_DATA) {
+ ret = inode_set_unix_data(inode, root_stbuf.st_uid,
+ root_stbuf.st_gid,
+ root_stbuf.st_mode,
+ lookup_table,
+ UNIX_DATA_ALL | UNIX_DATA_CREATE);
+ if (ret)
+ goto out;
+ }
+ add_image_flags &= ~WIMLIB_ADD_IMAGE_FLAG_ROOT;
if (S_ISREG(root_stbuf.st_mode)) { /* Archiving a regular file */
struct wim_lookup_table_entry *lte;
ALIGNMENT_LIST,
};
+#define COMPAT_DEFAULT_CONFIG
+
/* Default capture configuration file when none is specified. */
static const char *default_config =
+#ifdef COMPAT_DEFAULT_CONFIG /* XXX: This policy is being moved to library
+ users. The next ABI-incompatible library
+ version will default to the empty string here. */
"[ExclusionList]\n"
"\\$ntfs.log\n"
"\\hiberfil.sys\n"
"*.zip\n"
"*.cab\n"
"\\WINDOWS\\inf\\*.pnf\n";
+#else
+"";
+#endif
static void destroy_pattern_list(struct pattern_list *list)
{
return false;
}
-static void print_pattern_list(const struct pattern_list *list)
-{
- for (size_t i = 0; i < list->num_pats; i++)
- printf(" %s\n", list->pats[i]);
-}
-
-static void print_capture_config(const struct capture_config *config)
-{
- if (config->exclusion_list.num_pats) {
- puts("Files or folders excluded from image capture:");
- print_pattern_list(&config->exclusion_list);
- putchar('\n');
- }
-}
-
/* Return true if the image capture configuration file indicates we should
* exclude the filename @path from capture.
*
if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_NTFS) {
#ifdef WITH_NTFS_3G
- if (add_image_flags & (WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE)) {
+ if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE) {
ERROR("Cannot dereference files when capturing directly from NTFS");
return WIMLIB_ERR_INVALID_PARAM;
}
+ if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_UNIX_DATA) {
+ ERROR("Capturing UNIX owner and mode not supported "
+ "when capturing directly from NTFS");
+ return WIMLIB_ERR_INVALID_PARAM;
+ }
capture_tree = build_dentry_tree_ntfs;
extra_arg = &w->ntfs_vol;
#else
ret = init_capture_config(config_str, config_len, source, &config);
if (ret != 0)
return ret;
- print_capture_config(&config);
DEBUG("Allocating security data");