[LinuxBIOS] r356 - in LinuxBIOSv3/util: lzma nrv2b

svn at openbios.org svn at openbios.org
Sat Jun 16 16:37:02 CEST 2007


Author: stepan
Date: 2007-06-16 16:37:02 +0200 (Sat, 16 Jun 2007)
New Revision: 356

Modified:
   LinuxBIOSv3/util/lzma/minilzma.cc
   LinuxBIOSv3/util/nrv2b/nrv2b.c
Log:
This patch provides a simple API to nrv2b and lzma. Necessary for
integrating compression algorithms into lar.

lar -x (extract) will be done using the decompression routines in lib/ to
ease debugging (just in case - they _should_ be functionally equivalent to
the decompression routines in the compression utilities)

Signed-off-by: Patrick Georgi <patrick at georgi-clan.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>



Modified: LinuxBIOSv3/util/lzma/minilzma.cc
===================================================================
--- LinuxBIOSv3/util/lzma/minilzma.cc	2007-06-16 14:34:17 UTC (rev 355)
+++ LinuxBIOSv3/util/lzma/minilzma.cc	2007-06-16 14:37:02 UTC (rev 356)
@@ -234,6 +234,7 @@
     return result;
 }
 
+#ifndef COMPACT
 int main(int argc, char *argv[])
 {
 	char  *s;
@@ -277,4 +278,16 @@
 	fclose(outfile);
 	return EXIT_SUCCESS;
 }
+#else
+extern "C" {
 
+void do_lzma_compress(char* in, unsigned long in_len, char* out, unsigned long* out_len) {
+	std::vector<unsigned char> result;
+	result = LZMACompress(std::vector<unsigned char>(in,in+in_len));
+	*out_len = result.size();
+    	std::memcpy(out, &result[0], *out_len);
+}
+
+}
+#endif
+

Modified: LinuxBIOSv3/util/nrv2b/nrv2b.c
===================================================================
--- LinuxBIOSv3/util/nrv2b/nrv2b.c	2007-06-16 14:34:17 UTC (rev 355)
+++ LinuxBIOSv3/util/nrv2b/nrv2b.c	2007-06-16 14:37:02 UTC (rev 356)
@@ -65,11 +65,13 @@
 #define BITSIZE 32
 #endif
 
+#ifndef COMPACT
 static __inline__ void Error(char *message)
 {
 	Fprintf((stderr, "\n%s\n", message));
 	exit(EXIT_FAILURE);
 }
+#endif
 
 /* These will be a complete waste of time on a lo-endian */
 /* system, but it only gets done once so WTF. */
@@ -1213,6 +1215,7 @@
 }
 
 
+#ifndef COMPACT
 void Encode(void)  /* compression */
 {
 	uint8_t *in, *out;
@@ -1291,9 +1294,18 @@
 #endif
 	
 }
+#endif
 
 #endif
 
+#ifdef COMPACT
+void do_nrv2b_compress(char* in, unsigned long in_len, char* out, unsigned long* out_len) {
+	*out_len = in_len + (in_len/8) + 256;
+	out = malloc(*out_len);
+	ucl_nrv2b_99_compress(in, in_len, out, out_len, 0 );
+}
+#endif
+
 #ifdef DECODE
 
 #define GETBIT_8(bb, src, ilen) \





More information about the coreboot mailing list