[LinuxBIOS] r497 - LinuxBIOSv3/lib

svn at openbios.org svn at openbios.org
Sun Sep 16 16:32:26 CEST 2007


Author: uwe
Date: 2007-09-16 16:32:26 +0200 (Sun, 16 Sep 2007)
New Revision: 497

Modified:
   LinuxBIOSv3/lib/lar.c
Log:
Create a file-local process_file() function which has
the common parts of copy_file() and run_file().

Signed-off-by: Alex Beregszaszi <alex at rtfs.hu>
Acked-by: Uwe Hermann <uwe at hermann-uwe.de>



Modified: LinuxBIOSv3/lib/lar.c
===================================================================
--- LinuxBIOSv3/lib/lar.c	2007-09-08 19:36:35 UTC (rev 496)
+++ LinuxBIOSv3/lib/lar.c	2007-09-16 14:32:26 UTC (rev 497)
@@ -123,6 +123,35 @@
 	return 1;
 }
 
+static int process_file(struct mem_file *archive, void *where)
+{
+	printk(BIOS_SPEW, "LAR: Compression algorithm #%i used\n", archive->compression);
+	/* no compression */
+	if (archive->compression == 0) {
+		memcpy(where, archive->start, archive->len);
+		return 0;
+	}
+#ifdef CONFIG_COMPRESSION_LZMA
+	/* lzma */
+	unsigned long ulzma(unsigned char *src, unsigned char *dst);
+	if (archive->compression == 1) {
+		ulzma(archive->start, where);
+		return 0;
+	}
+#endif
+#ifdef CONFIG_COMPRESSION_NRV2B
+	/* nrv2b */
+	unsigned long unrv2b(u8 *src, u8 *dst, unsigned long *ilen_p);
+	if (archive->compression == 2) {
+		unsigned long tmp;
+		unrv2b(archive->start, where, &tmp);
+		return 0;
+	}
+#endif
+	printk(BIOS_INFO, "LAR: Compression algorithm #%i not supported!\n", archive->compression);
+	return -1;
+}
+
 /**
  * Given a file name in the LAR , search for it, and load it into memory, using 
  * the loadaddress pointer in the mem_file struct. 
@@ -146,34 +175,13 @@
 	}
 	entry = result.entry;
 	where = result.loadaddress;
-	printk(BIOS_SPEW, "LAR: Compression algorithm #%i used\n", result.compression);
-	/* no compression */
-	if (result.compression == 0) {
-		memcpy(where, result.start, result.len);
-		return entry;
-	}
-#ifdef CONFIG_COMPRESSION_LZMA
-	/* lzma */
-	unsigned long ulzma(unsigned char *src, unsigned char *dst);
-	if (result.compression == 1) {
-		ulzma(result.start, where);
-		return entry;
-	}
-#endif
-#ifdef CONFIG_COMPRESSION_NRV2B
-	/* nrv2b */
-	unsigned long unrv2b(u8 *src, u8 *dst, unsigned long *ilen_p);
-	if (result.compression == 2) {
-		int tmp;
-		unrv2b(result.start, where, &tmp);
-		return entry;
-	}
-#endif
-	printk(BIOS_INFO, "LAR: Compression algorithm #%i not supported!\n", result.compression);
+	
+	if (process_file(&result, where) == 0)
+	    return entry;
+
 	return (void *)-1;
 }
 
-/* FIXME -- most of copy_file should be replaced by load_file */
 /**
  * Given a file name in the LAR , search for it, and load it into memory, 
  * using the passed-in pointer as the address
@@ -194,31 +202,7 @@
 		return 1;
 	}
 
-	printk(BIOS_SPEW, "LAR: Compression algorithm #%i used\n", result.compression);
-	/* no compression */
-	if (result.compression == 0) {
-		memcpy(where, result.start, result.len);
-		return 0;
-	}
-#ifdef CONFIG_COMPRESSION_LZMA
-	/* lzma */
-	unsigned long ulzma(unsigned char *src, unsigned char *dst);
-	if (result.compression == 1) {
-		ulzma(result.start, where);
-		return 0;
-	}
-#endif
-#ifdef CONFIG_COMPRESSION_NRV2B
-	/* nrv2b */
-	unsigned long unrv2b(u8 *src, u8 *dst, unsigned long *ilen_p);
-	if (result.compression == 2) {
-		int tmp;
-		unrv2b(result.start, where, &tmp);
-		return 0;
-	}
-#endif
-	printk(BIOS_INFO, "LAR: Compression algorithm #%i not supported!\n", result.compression);
-	return 1;
+	return process_file(&result, where);
 }
 
 





More information about the coreboot mailing list