]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
xz: Separate string to filter conversion into a helper function.
authorJia Tan <jiat0218@gmail.com>
Mon, 17 Apr 2023 14:22:45 +0000 (22:22 +0800)
committerJia Tan <jiat0218@gmail.com>
Mon, 17 Jul 2023 15:34:55 +0000 (23:34 +0800)
Converting from string to filter will also need to be done for block
specific filter chains.

src/xz/coder.c

index b998cb2bfdb4239be1eccb5cb51d06456d41f3e4..159b7d8bd0c457106cffe2fe3afbe18941bf7c96 100644 (file)
@@ -137,20 +137,12 @@ coder_add_filter(lzma_vli id, void *options)
 }
 
 
-extern void
-coder_add_filters_from_str(const char *filter_str)
+static void
+str_to_filter(const char *str, lzma_filter *filter, uint32_t flags)
 {
-       // Forget presets and previously defined filter chain. See
-       // coder_add_filter() above for why preset_number must be reset too.
-       forget_filter_chain();
-       preset_number = LZMA_PRESET_DEFAULT;
-
-       string_to_filter_used = true;
-
-       // Include LZMA_STR_ALL_FILTERS so this can be used with --format=raw.
        int error_pos;
-       const char *err = lzma_str_to_filters(filter_str, &error_pos,
-                       filters, LZMA_STR_ALL_FILTERS, NULL);
+       const char *err = lzma_str_to_filters(str, &error_pos, filter,
+                       flags, NULL);
 
        if (err != NULL) {
                // FIXME? The message in err isn't translated.
@@ -159,10 +151,25 @@ coder_add_filters_from_str(const char *filter_str)
                // liblzma might not be worth it especially since on some
                // OSes it adds extra dependencies to translation libraries.
                message(V_ERROR, _("Error in --filters=FILTERS option:"));
-               message(V_ERROR, "%s", filter_str);
+               message(V_ERROR, "%s", str);
                message(V_ERROR, "%*s^", error_pos, "");
                message_fatal("%s", err);
        }
+}
+
+
+extern void
+coder_add_filters_from_str(const char *filter_str)
+{
+       // Forget presets and previously defined filter chain. See
+       // coder_add_filter() above for why preset_number must be reset too.
+       forget_filter_chain();
+       preset_number = LZMA_PRESET_DEFAULT;
+
+       string_to_filter_used = true;
+
+       // Include LZMA_STR_ALL_FILTERS so this can be used with --format=raw.
+       str_to_filter(filter_str, filters, LZMA_STR_ALL_FILTERS);
 
        // Set the filters_count to be the number of filters converted from
        // the string.