]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
xz: Move suffix check after stdout mode is detected.
authorJia Tan <jiat0218@gmail.com>
Tue, 14 Nov 2023 12:27:46 +0000 (20:27 +0800)
committerJia Tan <jiat0218@gmail.com>
Tue, 14 Nov 2023 12:27:46 +0000 (20:27 +0800)
This fixes a bug introduced in cc5aa9ab138beeecaee5a1e81197591893ee9ca0
when the suffix check was initially moved. This caused a situation that
previously worked:

    echo foo | xz -Fraw --lzma1 | wc -c

to fail because the old code knew that this would write to standard out
so a suffix was not needed.

src/xz/args.c

index e3cddda32d1a32dc90c8553dfaab24450aad563a..bdeaed67eab1822d1e2561b6ac071416323a761e 100644 (file)
@@ -820,14 +820,6 @@ args_parse(args_info *args, int argc, char **argv)
                        && opt_mode != MODE_LIST))
                coder_set_compression_settings();
 
-       // If raw format is used and a custom suffix is not provided,
-       // then only stdout mode can be used when compressing or decompressing.
-       if (opt_format == FORMAT_RAW && !suffix_is_set() && !opt_stdout
-                       && (opt_mode == MODE_COMPRESS
-                               || opt_mode == MODE_DECOMPRESS))
-               message_fatal(_("With --format=raw, --suffix=.SUF is "
-                               "required unless writing to stdout"));
-
        // If no filenames are given, use stdin.
        if (argv[optind] == NULL && args->files_name == NULL) {
                // We don't modify or free() the "-" constant. The caller
@@ -863,6 +855,14 @@ args_parse(args_info *args, int argc, char **argv)
                opt_stdout = i == args->arg_count;
        }
 
+       // If raw format is used and a custom suffix is not provided,
+       // then only stdout mode can be used when compressing or decompressing.
+       if (opt_format == FORMAT_RAW && !suffix_is_set() && !opt_stdout
+                       && (opt_mode == MODE_COMPRESS
+                               || opt_mode == MODE_DECOMPRESS))
+               message_fatal(_("With --format=raw, --suffix=.SUF is "
+                               "required unless writing to stdout"));
+
        return;
 }