Sophie

Sophie

distrib > Mandriva > 2009.1 > i586 > by-pkgid > 70eabd7a15330370b2ffb28b84c20236 > files > 2

xz-4.999.8beta-0.2mdv2009.1.src.rpm

diff --git a/src/liblzma/api/lzma/container.h b/src/liblzma/api/lzma/container.h
index ba2c4f8..daf0edc 100644
--- a/src/liblzma/api/lzma/container.h
+++ b/src/liblzma/api/lzma/container.h
@@ -47,7 +47,7 @@
 /*
  * Preset flags
  *
- * Currently only one flag is defined.
+ * Currently only two flags are defined.
  */
 
 /**
@@ -63,6 +63,13 @@
  */
 #define LZMA_PRESET_EXTREME       (UINT32_C(1) << 31)
 
+/**
+ * \brief       Text compression preset
+ *
+ * TODO
+ */
+#define LZMA_PRESET_TEXT          (UINT32_C(1) << 18)
+
 
 /**
  * \brief       Calculate rough memory usage of easy encoder
diff --git a/src/liblzma/lzma/lzma_encoder_presets.c b/src/liblzma/lzma/lzma_encoder_presets.c
index 31928d6..74e66ff 100644
--- a/src/liblzma/lzma/lzma_encoder_presets.c
+++ b/src/liblzma/lzma/lzma_encoder_presets.c
@@ -25,7 +25,7 @@ lzma_lzma_preset(lzma_options_lzma *options, uint32_t preset)
 {
 	const uint32_t level = preset & LZMA_PRESET_LEVEL_MASK;
 	const uint32_t flags = preset & ~LZMA_PRESET_LEVEL_MASK;
-	const uint32_t supported_flags = LZMA_PRESET_EXTREME;
+	const uint32_t supported_flags = LZMA_PRESET_EXTREME | LZMA_PRESET_TEXT;
 
 	if (level > 9 || (flags & ~supported_flags))
 		return true;
@@ -56,5 +56,16 @@ lzma_lzma_preset(lzma_options_lzma *options, uint32_t preset)
 		options->depth = 512;
 	}
 
+	if (flags & LZMA_PRESET_TEXT) {
+		options->dict_size = LZMA_PRESET_TEXT;
+		options->lc = 3;
+		options->lp = 0;
+		options->pb = 0;
+		options->mode = LZMA_MODE_NORMAL;
+		options->nice_len = 273;
+		options->mf = LZMA_MF_BT4;
+		options->depth = 512;
+	}
+
 	return false;
 }
diff --git a/src/xz/args.c b/src/xz/args.c
index c9d1dc1..9d848fb 100644
--- a/src/xz/args.c
+++ b/src/xz/args.c
@@ -51,6 +51,8 @@ parse_real(args_info *args, int argc, char **argv)
 
 		OPT_FILES,
 		OPT_FILES0,
+
+		OPT_TEXT,
 	};
 
 	static const char short_opts[] = "cC:defF:hHlkM:qrS:tT:vVz0123456789";
@@ -83,6 +85,7 @@ parse_real(args_info *args, int argc, char **argv)
 		{ "extreme",        no_argument,       NULL,  'e' },
 		{ "fast",           no_argument,       NULL,  '0' },
 		{ "best",           no_argument,       NULL,  '9' },
+		{ "text",           no_argument,       NULL,  OPT_TEXT },
 
 		// Filters
 		{ "lzma1",          optional_argument, NULL,  OPT_LZMA1 },
@@ -327,6 +330,10 @@ parse_real(args_info *args, int argc, char **argv)
 
 			break;
 
+		case OPT_TEXT:
+			coder_set_text();
+			break;
+
 		default:
 			message_try_help();
 			my_exit(E_ERROR);
diff --git a/src/xz/process.c b/src/xz/process.c
index e6870f8..12bc8a7 100644
--- a/src/xz/process.c
+++ b/src/xz/process.c
@@ -50,6 +50,9 @@ static bool preset_default = true;
 /// compression ratio.
 static bool preset_extreme = false;
 
+/// TODO: Description..
+static bool preset_text = false;
+
 /// Integrity check type
 static lzma_check check = LZMA_CHECK_CRC64;
 
@@ -80,6 +83,14 @@ coder_set_extreme(void)
 
 
 extern void
+coder_set_text(void)
+{
+	preset_text = true;
+	return;
+}
+
+
+extern void
 coder_add_filter(lzma_vli id, void *options)
 {
 	if (filters_count == LZMA_FILTERS_MAX)
@@ -127,6 +138,9 @@ coder_set_compression_settings(void)
 		if (preset_extreme)
 			preset_number |= LZMA_PRESET_EXTREME;
 
+		if (preset_text)
+			preset_number |= LZMA_PRESET_TEXT;
+
 		if (lzma_lzma_preset(&opt_lzma, preset_number))
 			message_bug();
 
diff --git a/src/xz/process.h b/src/xz/process.h
index 3848528..964ad79 100644
--- a/src/xz/process.h
+++ b/src/xz/process.h
@@ -60,6 +60,9 @@ extern void coder_set_preset(size_t new_preset);
 /// Enable extreme mode
 extern void coder_set_extreme(void);
 
+/// Enable text mode
+extern void coder_set_text(void);
+
 /// Add a filter to the custom filter chain
 extern void coder_add_filter(lzma_vli id, void *options);