changeset 219:11e99cacb09e

Fix the old busybox tar so it can extract linux kernel tarballs.
author Rob Landley <rob@landley.net>
date Mon, 17 Sep 2007 21:58:21 -0500
parents 08138aee2110
children 8d2d0feff1ef
files sources/patches/busybox-fixtar.patch
diffstat 1 files changed, 33 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sources/patches/busybox-fixtar.patch	Mon Sep 17 21:58:21 2007 -0500
@@ -0,0 +1,33 @@
+--- busybox-1.2.2/archival/libunarchive/get_header_tar.c	2006-07-28 17:53:44.000000000 -0500
++++ busybox-new/archival/libunarchive/get_header_tar.c	2007-09-17 21:50:44.000000000 -0500
+@@ -51,6 +51,7 @@
+ 	long sum = 0;
+ 	long i;
+ 	static int end = 0;
++	int skippy = 0;
+ 
+ 	/* Align header */
+ 	data_align(archive_handle, 512);
+@@ -183,10 +184,12 @@
+ 	case 'N':	/* Old GNU for names > 100 characters */
+ 	case 'S':	/* Sparse file */
+ 	case 'V':	/* Volume header */
++		bb_error_msg("Ignoring extension type %c", tar.formated.typeflag);
++		break;
+ #endif
+ 	case 'g':	/* pax global header */
+ 	case 'x':	/* pax extended header */
+-		bb_error_msg("Ignoring extension type %c", tar.formated.typeflag);
++		skippy = 1;
+ 		break;
+ 	default:
+ 		bb_error_msg("Unknown typeflag: 0x%x", tar.formated.typeflag);
+@@ -199,7 +202,7 @@
+ 		}
+ 	}
+ 
+-	if (archive_handle->filter(archive_handle) == EXIT_SUCCESS) {
++	if (!skippy && archive_handle->filter(archive_handle) == EXIT_SUCCESS) {
+ 		archive_handle->action_header(archive_handle->file_header);
+ 		archive_handle->flags |= ARCHIVE_EXTRACT_QUIET;
+ 		archive_handle->action_data(archive_handle);