summaryrefslogtreecommitdiff
path: root/archival/dpkg.c
diff options
context:
space:
mode:
authorGlenn L McGrath2002-11-03 11:57:10 +0000
committerGlenn L McGrath2002-11-03 11:57:10 +0000
commit6ab32eb34ca6e0023bc7ab7f6ece9321116e091f (patch)
tree9c85cc19ea413e758efd1466c44997a110282c61 /archival/dpkg.c
parentb8e556e5f54f2848bf1ad246189cb2bf44b643bd (diff)
downloadbusybox-6ab32eb34ca6e0023bc7ab7f6ece9321116e091f.zip
busybox-6ab32eb34ca6e0023bc7ab7f6ece9321116e091f.tar.gz
Move data_extract_all_prefix to dpkg, its only used there.
Diffstat (limited to 'archival/dpkg.c')
-rw-r--r--archival/dpkg.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/archival/dpkg.c b/archival/dpkg.c
index df89447..f921c43 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -1341,7 +1341,21 @@ static archive_handle_t *deb_extract(const char *filename, const char *ar_name,
return(ar_archive->sub_archive);
}
-void unpack_package(deb_file_t *deb_file)
+static void data_extract_all_prefix(archive_handle_t *archive_handle)
+{
+ char *name_ptr = archive_handle->file_header->name;
+
+ name_ptr += strspn(name_ptr, "./");
+ if (name_ptr[0] != '\0') {
+ archive_handle->file_header->name = xmalloc(strlen(archive_handle->buffer) + 2 + strlen(name_ptr));
+ strcpy(archive_handle->file_header->name, archive_handle->buffer);
+ strcat(archive_handle->file_header->name, name_ptr);
+ data_extract_all(archive_handle);
+ }
+ return;
+}
+
+static void unpack_package(deb_file_t *deb_file)
{
const char *package_name = name_hashtable[package_hashtable[deb_file->package]->name];
const unsigned int status_num = search_status_hashtable(package_name);