[file-roller: 65/123] libarchive: set the compression level when creating an archive



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]