[file-roller: 65/123] libarchive: set the compression level when creating an archive
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [file-roller: 65/123] libarchive: set the compression level when creating an archive
- Date: Mon, 6 Aug 2012 13:46:19 +0000 (UTC)
commit fb62edf300ecea42e63b90d9b5d90884b7ca9f94
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Jul 28 20:46:53 2012 +0200
libarchive: set the compression level when creating an archive
src/fr-archive-libarchive.c | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/src/fr-archive-libarchive.c b/src/fr-archive-libarchive.c
index c2e6a72..a44d021 100644
--- a/src/fr-archive-libarchive.c
+++ b/src/fr-archive-libarchive.c
@@ -577,6 +577,27 @@ _archive_write_set_format_from_filename (struct archive *a,
}
+static void
+_archive_write_set_compression_level (struct archive *a,
+ FrCompression compression)
+{
+ switch (compression) {
+ case FR_COMPRESSION_VERY_FAST:
+ archive_write_set_filter_option (a, NULL, "compression-level", "1");
+ break;
+ case FR_COMPRESSION_FAST:
+ archive_write_set_filter_option (a, NULL, "compression-level", "3");
+ break;
+ case FR_COMPRESSION_NORMAL:
+ archive_write_set_filter_option (a, NULL, "compression-level", "6");
+ break;
+ case FR_COMPRESSION_MAXIMUM:
+ archive_write_set_filter_option (a, NULL, "compression-level", "9");
+ break;
+ }
+}
+
+
typedef enum {
WRITE_ACTION_ABORT,
WRITE_ACTION_SKIP_ENTRY,
@@ -669,6 +690,7 @@ add_to_archive_thread (GSimpleAsyncResult *result,
b = archive_write_new ();
_archive_write_set_format_from_filename (b, fr_archive_get_file (load_data->archive));
+ _archive_write_set_compression_level (b, add_data->compression);
archive_write_open (b, add_data, save_data_open, save_data_write, save_data_close);
a = archive_read_new ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]