]> wimlib.net Git - wimlib/blobdiff - programs/imagex.c
Add support for not extracting file attributes
[wimlib] / programs / imagex.c
index f795ded78c0bd9f5de27def77750c96c78e0b93d..6044a93c0c23d9e01a013d89ae88607fb05a4a21 100644 (file)
@@ -145,7 +145,9 @@ enum {
        IMAGEX_NORPFIX_OPTION,
        IMAGEX_NOCHECK_OPTION,
        IMAGEX_NO_ACLS_OPTION,
+       IMAGEX_NO_ATTRIBUTES_OPTION,
        IMAGEX_NO_WILDCARDS_OPTION,
+       IMAGEX_ONE_FILE_ONLY_OPTION,
        IMAGEX_NOT_PIPABLE_OPTION,
        IMAGEX_PACK_CHUNK_SIZE_OPTION,
        IMAGEX_PACK_STREAMS_OPTION,
@@ -182,6 +184,7 @@ static const struct option apply_options[] = {
        {T("noacls"),      no_argument,       NULL, IMAGEX_NO_ACLS_OPTION},
        {T("no-acls"),     no_argument,       NULL, IMAGEX_NO_ACLS_OPTION},
        {T("strict-acls"), no_argument,       NULL, IMAGEX_STRICT_ACLS_OPTION},
+       {T("no-attributes"), no_argument,     NULL, IMAGEX_NO_ATTRIBUTES_OPTION},
        {T("rpfix"),       no_argument,       NULL, IMAGEX_RPFIX_OPTION},
        {T("norpfix"),     no_argument,       NULL, IMAGEX_NORPFIX_OPTION},
        {T("include-invalid-names"), no_argument,       NULL, IMAGEX_INCLUDE_INVALID_NAMES_OPTION},
@@ -232,6 +235,7 @@ static const struct option delete_options[] = {
 static const struct option dir_options[] = {
        {T("path"),     required_argument, NULL, IMAGEX_PATH_OPTION},
        {T("detailed"), no_argument,       NULL, IMAGEX_DETAILED_OPTION},
+       {T("one-file-only"), no_argument,  NULL, IMAGEX_ONE_FILE_ONLY_OPTION},
        {NULL, 0, NULL, 0},
 };
 
@@ -262,6 +266,7 @@ static const struct option extract_options[] = {
        {T("noacls"),      no_argument,       NULL, IMAGEX_NO_ACLS_OPTION},
        {T("no-acls"),     no_argument,       NULL, IMAGEX_NO_ACLS_OPTION},
        {T("strict-acls"), no_argument,       NULL, IMAGEX_STRICT_ACLS_OPTION},
+       {T("no-attributes"), no_argument,     NULL, IMAGEX_NO_ATTRIBUTES_OPTION},
        {T("dest-dir"),    required_argument, NULL, IMAGEX_DEST_DIR_OPTION},
        {T("to-stdout"),   no_argument,       NULL, IMAGEX_TO_STDOUT_OPTION},
        {T("include-invalid-names"), no_argument, NULL, IMAGEX_INCLUDE_INVALID_NAMES_OPTION},
@@ -1616,6 +1621,9 @@ imagex_apply(int argc, tchar **argv, int cmd)
                case IMAGEX_STRICT_ACLS_OPTION:
                        extract_flags |= WIMLIB_EXTRACT_FLAG_STRICT_ACLS;
                        break;
+               case IMAGEX_NO_ATTRIBUTES_OPTION:
+                       extract_flags |= WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES;
+                       break;
                case IMAGEX_NORPFIX_OPTION:
                        extract_flags |= WIMLIB_EXTRACT_FLAG_NORPFIX;
                        break;
@@ -2584,6 +2592,7 @@ imagex_dir(int argc, tchar **argv, int cmd)
        struct print_dentry_options options = {
                .detailed = false,
        };
+       int iterate_flags = WIMLIB_ITERATE_DIR_TREE_FLAG_RECURSIVE;
 
        for_opt(c, dir_options) {
                switch (c) {
@@ -2593,6 +2602,9 @@ imagex_dir(int argc, tchar **argv, int cmd)
                case IMAGEX_DETAILED_OPTION:
                        options.detailed = true;
                        break;
+               case IMAGEX_ONE_FILE_ONLY_OPTION:
+                       iterate_flags &= ~WIMLIB_ITERATE_DIR_TREE_FLAG_RECURSIVE;
+                       break;
                default:
                        goto out_usage;
                }
@@ -2636,8 +2648,7 @@ imagex_dir(int argc, tchar **argv, int cmd)
                image = 1;
        }
 
-       ret = wimlib_iterate_dir_tree(wim, image, path,
-                                     WIMLIB_ITERATE_DIR_TREE_FLAG_RECURSIVE,
+       ret = wimlib_iterate_dir_tree(wim, image, path, iterate_flags,
                                      print_dentry, &options);
 out_wimlib_free:
        wimlib_free(wim);
@@ -3003,6 +3014,9 @@ imagex_extract(int argc, tchar **argv, int cmd)
                case IMAGEX_STRICT_ACLS_OPTION:
                        extract_flags |= WIMLIB_EXTRACT_FLAG_STRICT_ACLS;
                        break;
+               case IMAGEX_NO_ATTRIBUTES_OPTION:
+                       extract_flags |= WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES;
+                       break;
                case IMAGEX_DEST_DIR_OPTION:
                        dest_dir = optarg;
                        break;
@@ -4037,8 +4051,9 @@ T(
 T(
 "    %"TS" WIMFILE [(IMAGE_NUM | IMAGE_NAME | all)]\n"
 "                    (DIRECTORY | NTFS_VOLUME) [--check] [--ref=\"GLOB\"]\n"
-"                    [--no-acls] [--strict-acls] [--rpfix] [--norpfix]\n"
-"                    [--hardlink] [--symlink] [--include-invalid-names]\n"
+"                    [--no-acls] [--strict-acls] [--no-attributes]\n"
+"                    [--rpfix] [--norpfix] [--hardlink] [--symlink]\n"
+"                    [--include-invalid-names]\n"
 ),
 [CMD_CAPTURE] =
 T(
@@ -4070,7 +4085,7 @@ T(
 T(
 "    %"TS" WIMFILE (IMAGE_NUM | IMAGE_NAME) ([PATH...] | @LISTFILE)\n"
 "                    [--check] [--ref=\"GLOB\"] [--no-acls] [--strict-acls]\n"
-"                    [--to-stdout] [--dest-dir=CMD_DIR]\n"
+"                    [--no-attributes] [--to-stdout] [--dest-dir=CMD_DIR]\n"
 "                    [--include-invalid-names]\n"
 ),
 [CMD_INFO] =