{T("threads"), required_argument, NULL, IMAGEX_THREADS_OPTION},
{T("check"), no_argument, NULL, IMAGEX_CHECK_OPTION},
{T("rebuild"), no_argument, NULL, IMAGEX_REBUILD_OPTION},
+
+ /* Default delete options */
{T("force"), no_argument, NULL, IMAGEX_FORCE_OPTION},
{T("recursive"), no_argument, NULL, IMAGEX_RECURSIVE_OPTION},
+
+ /* Global add option */
{T("config"), required_argument, NULL, IMAGEX_CONFIG_OPTION},
+
+ /* Default add options */
+ {T("verbose"), no_argument, NULL, IMAGEX_VERBOSE_OPTION},
{T("dereference"), no_argument, NULL, IMAGEX_DEREFERENCE_OPTION},
{T("unix-data"), no_argument, NULL, IMAGEX_UNIX_DATA_OPTION},
{T("noacls"), no_argument, NULL, IMAGEX_NO_ACLS_OPTION},
bool recognized = true;
switch (op) {
case WIMLIB_UPDATE_OP_ADD:
- if (!tstrcmp(option, T("--unix-data")))
+ if (!tstrcmp(option, T("--verbose")))
+ cmd->add.add_flags |= WIMLIB_ADD_IMAGE_FLAG_VERBOSE;
+ else if (!tstrcmp(option, T("--unix-data")))
cmd->add.add_flags |= WIMLIB_ADD_IMAGE_FLAG_UNIX_DATA;
else if (!tstrcmp(option, T("--no-acls")) || !tstrcmp(option, T("--noacls")))
cmd->add.add_flags |= WIMLIB_ADD_IMAGE_FLAG_NO_ACLS;
else
recognized = false;
break;
- case WIMLIB_UPDATE_OP_RENAME:
+ default:
recognized = false;
break;
}
if (!update_command_add_option(op, next_string, command))
{
imagex_error(T("Unrecognized option \"%"TS"\" to "
- "update command on line %zu"),
- next_string, line_number);
+ "update command \"%"TS"\" on line %zu"),
+ next_string, command_name, line_number);
return false;
}
win32_acquire_restore_privileges();
#endif
- ret = wimlib_extract_files(wim, image, 0, cmds, num_cmds,
+ ret = wimlib_extract_files(wim, image, cmds, num_cmds, 0,
additional_swms, num_additional_swms,
imagex_progress_func);
if (ret == 0) {
WIMStruct *wim;
int ret;
int open_flags = 0;
- int write_flags = WIMLIB_WRITE_FLAG_SOFT_DELETE;
+ int write_flags = 0;
int update_flags = 0;
int default_add_flags = WIMLIB_ADD_IMAGE_FLAG_EXCLUDE_VERBOSE;
int default_delete_flags = 0;
for_opt(c, update_options) {
switch (c) {
+ /* Generic or write options */
case IMAGEX_THREADS_OPTION:
num_threads = parse_num_threads(optarg);
if (num_threads == UINT_MAX) {
case IMAGEX_REBUILD_OPTION:
write_flags |= WIMLIB_WRITE_FLAG_REBUILD;
break;
+
+ /* Default delete options */
case IMAGEX_FORCE_OPTION:
default_delete_flags |= WIMLIB_DELETE_FLAG_FORCE;
break;
case IMAGEX_RECURSIVE_OPTION:
default_delete_flags |= WIMLIB_DELETE_FLAG_RECURSIVE;
break;
+
+ /* Global add option */
case IMAGEX_CONFIG_OPTION:
config_file = optarg;
break;
+
+ /* Default add options */
+ case IMAGEX_VERBOSE_OPTION:
+ default_add_flags |= WIMLIB_ADD_IMAGE_FLAG_VERBOSE;
+ break;
case IMAGEX_DEREFERENCE_OPTION:
default_add_flags |= WIMLIB_ADD_IMAGE_FLAG_DEREFERENCE;
break;
ret = rename_wim_path(wim, rename_cmd->rename.wim_source_path,
rename_cmd->rename.wim_target_path);
if (ret) {
+ ret = -ret;
+ errno = ret;
+ ERROR_WITH_ERRNO("Can't rename \"%"TS"\" to \"%"TS"\"",
+ rename_cmd->rename.wim_source_path,
+ rename_cmd->rename.wim_target_path);
switch (ret) {
- case -ENOMEM:
+ case ENOMEM:
ret = WIMLIB_ERR_NOMEM;
break;
- case -ENOTDIR:
+ case ENOTDIR:
ret = WIMLIB_ERR_NOTDIR;
break;
- case -ENOTEMPTY:
+ case ENOTEMPTY:
ret = WIMLIB_ERR_NOTEMPTY;
break;
- case -EISDIR:
+ case EISDIR:
ret = WIMLIB_ERR_IS_DIRECTORY;
break;
- case -ENOENT:
+ case ENOENT:
default:
ret = WIMLIB_ERR_PATH_DOES_NOT_EXIST;
break;
case WIMLIB_UPDATE_OP_RENAME:
return T("rename");
default:
- return T("???");
+ wimlib_assert(0);
}
}
break;
case WIMLIB_UPDATE_OP_DELETE:
ret = execute_delete_command(wim, &cmds[i]);
- if (ret == 0)
- wim->deletion_occurred = 1;
break;
case WIMLIB_UPDATE_OP_RENAME:
ret = execute_rename_command(wim, &cmds[i]);
break;
default:
wimlib_assert(0);
- break;
}
if (ret)
break;
FREE(cmds[i].rename.wim_source_path);
FREE(cmds[i].rename.wim_target_path);
break;
- default:
- wimlib_assert(0);
}
}
FREE(cmds);
* The 1-based number of the image in @a wim from which the files or
* directory trees are to be extracted. It cannot be ::WIMLIB_ALL_IMAGES.
*
- * @param default_extract_flags
- * Default extraction flags; the behavior shall be as if these flags had
- * been specified in the ::wimlib_extract_command.extract_flags member in
- * each extraction command, in combination with any flags already present.
- *
* @param cmds
* An array of ::wimlib_extract_command structures that specifies the
* extractions to perform.
* @param num_cmds
* Number of commands in the @a cmds array.
*
+ * @param default_extract_flags
+ * Default extraction flags; the behavior shall be as if these flags had
+ * been specified in the ::wimlib_extract_command.extract_flags member in
+ * each extraction command, in combination with any flags already present.
+ *
* @param additional_swms
* Array of pointers to the ::WIMStruct for each additional part in the
* split WIM. Ignored if @a num_additional_swms is 0. The pointers do not
extern int
wimlib_extract_files(WIMStruct *wim,
int image,
- int default_extract_flags,
const struct wimlib_extract_command *cmds,
size_t num_cmds,
+ int default_extract_flags,
WIMStruct **additional_swms,
unsigned num_additional_swms,
wimlib_progress_func_t progress_func);