aboutsummaryrefslogtreecommitdiff
path: root/archival/dpkg.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2010-01-06 10:53:17 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2010-01-06 10:53:17 +0100
commitaa4977d8e549d9fff2b2946f03d304e435eb20f1 (patch)
treebc7c7fe4ab64263a9f8356762cb8f7e77165de73 /archival/dpkg.c
parent86350f8d5f5d5a1006cffe0bedccd625f012702f (diff)
downloadbusybox-w32-aa4977d8e549d9fff2b2946f03d304e435eb20f1.tar.gz
busybox-w32-aa4977d8e549d9fff2b2946f03d304e435eb20f1.tar.bz2
busybox-w32-aa4977d8e549d9fff2b2946f03d304e435eb20f1.zip
libunarchive: clean up dirty hacks. code shrank as a result
function old new delta cpio_main 526 539 +13 init_handle 57 58 +1 init_archive_deb_ar 34 35 +1 get_header_ar 408 409 +1 dpkg_main 3900 3901 +1 unpack_package 516 515 -1 rpm_main 1673 1672 -1 tar_main 774 767 -7 get_header_cpio 990 972 -18 data_extract_all 750 727 -23 get_header_tar 1631 1576 -55 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 5/6 up/down: 17/-105) Total: -88 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'archival/dpkg.c')
-rw-r--r--archival/dpkg.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/archival/dpkg.c b/archival/dpkg.c
index 2e24541bf..616bce977 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -1446,7 +1446,7 @@ static void init_archive_deb_control(archive_handle_t *ar_handle)
1446#endif 1446#endif
1447 1447
1448 /* Assign the tar handle as a subarchive of the ar handle */ 1448 /* Assign the tar handle as a subarchive of the ar handle */
1449 ar_handle->sub_archive = tar_handle; 1449 ar_handle->dpkg__sub_archive = tar_handle;
1450} 1450}
1451 1451
1452static void init_archive_deb_data(archive_handle_t *ar_handle) 1452static void init_archive_deb_data(archive_handle_t *ar_handle)
@@ -1466,27 +1466,27 @@ static void init_archive_deb_data(archive_handle_t *ar_handle)
1466#endif 1466#endif
1467 1467
1468 /* Assign the tar handle as a subarchive of the ar handle */ 1468 /* Assign the tar handle as a subarchive of the ar handle */
1469 ar_handle->sub_archive = tar_handle; 1469 ar_handle->dpkg__sub_archive = tar_handle;
1470} 1470}
1471 1471
1472static void FAST_FUNC data_extract_to_buffer(archive_handle_t *archive_handle) 1472static void FAST_FUNC data_extract_to_buffer(archive_handle_t *archive_handle)
1473{ 1473{
1474 unsigned size = archive_handle->file_header->size; 1474 unsigned size = archive_handle->file_header->size;
1475 1475
1476 archive_handle->ah_buffer = xzalloc(size + 1); 1476 archive_handle->dpkg__buffer = xzalloc(size + 1);
1477 xread(archive_handle->src_fd, archive_handle->ah_buffer, size); 1477 xread(archive_handle->src_fd, archive_handle->dpkg__buffer, size);
1478} 1478}
1479 1479
1480static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, llist_t *myaccept) 1480static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, llist_t *myaccept)
1481{ 1481{
1482 ar_handle->sub_archive->action_data = data_extract_to_buffer; 1482 ar_handle->dpkg__sub_archive->action_data = data_extract_to_buffer;
1483 ar_handle->sub_archive->accept = myaccept; 1483 ar_handle->dpkg__sub_archive->accept = myaccept;
1484 ar_handle->sub_archive->filter = filter_accept_list; 1484 ar_handle->dpkg__sub_archive->filter = filter_accept_list;
1485 1485
1486 unpack_ar_archive(ar_handle); 1486 unpack_ar_archive(ar_handle);
1487 close(ar_handle->src_fd); 1487 close(ar_handle->src_fd);
1488 1488
1489 return ar_handle->sub_archive->ah_buffer; 1489 return ar_handle->dpkg__sub_archive->dpkg__buffer;
1490} 1490}
1491 1491
1492static void FAST_FUNC data_extract_all_prefix(archive_handle_t *archive_handle) 1492static void FAST_FUNC data_extract_all_prefix(archive_handle_t *archive_handle)
@@ -1495,7 +1495,7 @@ static void FAST_FUNC data_extract_all_prefix(archive_handle_t *archive_handle)
1495 1495
1496 name_ptr += strspn(name_ptr, "./"); 1496 name_ptr += strspn(name_ptr, "./");
1497 if (name_ptr[0] != '\0') { 1497 if (name_ptr[0] != '\0') {
1498 archive_handle->file_header->name = xasprintf("%s%s", archive_handle->ah_buffer, name_ptr); 1498 archive_handle->file_header->name = xasprintf("%s%s", archive_handle->dpkg__buffer, name_ptr);
1499 data_extract_all(archive_handle); 1499 data_extract_all(archive_handle);
1500 } 1500 }
1501} 1501}
@@ -1535,11 +1535,11 @@ static void unpack_package(deb_file_t *deb_file)
1535 llist_add_to(&accept_list, c); 1535 llist_add_to(&accept_list, c);
1536 i++; 1536 i++;
1537 } 1537 }
1538 archive_handle->sub_archive->accept = accept_list; 1538 archive_handle->dpkg__sub_archive->accept = accept_list;
1539 archive_handle->sub_archive->filter = filter_accept_list; 1539 archive_handle->dpkg__sub_archive->filter = filter_accept_list;
1540 archive_handle->sub_archive->action_data = data_extract_all_prefix; 1540 archive_handle->dpkg__sub_archive->action_data = data_extract_all_prefix;
1541 archive_handle->sub_archive->ah_buffer = info_prefix; 1541 archive_handle->dpkg__sub_archive->dpkg__buffer = info_prefix;
1542 archive_handle->sub_archive->ah_flags |= ARCHIVE_UNLINK_OLD; 1542 archive_handle->dpkg__sub_archive->ah_flags |= ARCHIVE_UNLINK_OLD;
1543 unpack_ar_archive(archive_handle); 1543 unpack_ar_archive(archive_handle);
1544 1544
1545 /* Run the preinst prior to extracting */ 1545 /* Run the preinst prior to extracting */
@@ -1548,19 +1548,19 @@ static void unpack_package(deb_file_t *deb_file)
1548 /* Extract data.tar.gz to the root directory */ 1548 /* Extract data.tar.gz to the root directory */
1549 archive_handle = init_archive_deb_ar(deb_file->filename); 1549 archive_handle = init_archive_deb_ar(deb_file->filename);
1550 init_archive_deb_data(archive_handle); 1550 init_archive_deb_data(archive_handle);
1551 archive_handle->sub_archive->action_data = data_extract_all_prefix; 1551 archive_handle->dpkg__sub_archive->action_data = data_extract_all_prefix;
1552 archive_handle->sub_archive->ah_buffer = (char*)"/"; /* huh? */ 1552 archive_handle->dpkg__sub_archive->dpkg__buffer = (char*)"/"; /* huh? */
1553 archive_handle->sub_archive->ah_flags |= ARCHIVE_UNLINK_OLD; 1553 archive_handle->dpkg__sub_archive->ah_flags |= ARCHIVE_UNLINK_OLD;
1554 unpack_ar_archive(archive_handle); 1554 unpack_ar_archive(archive_handle);
1555 1555
1556 /* Create the list file */ 1556 /* Create the list file */
1557 list_filename = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "list"); 1557 list_filename = xasprintf("/var/lib/dpkg/info/%s.%s", package_name, "list");
1558 out_stream = xfopen_for_write(list_filename); 1558 out_stream = xfopen_for_write(list_filename);
1559 while (archive_handle->sub_archive->passed) { 1559 while (archive_handle->dpkg__sub_archive->passed) {
1560 /* the leading . has been stripped by data_extract_all_prefix already */ 1560 /* the leading . has been stripped by data_extract_all_prefix already */
1561 fputs(archive_handle->sub_archive->passed->data, out_stream); 1561 fputs(archive_handle->dpkg__sub_archive->passed->data, out_stream);
1562 fputc('\n', out_stream); 1562 fputc('\n', out_stream);
1563 archive_handle->sub_archive->passed = archive_handle->sub_archive->passed->link; 1563 archive_handle->dpkg__sub_archive->passed = archive_handle->dpkg__sub_archive->passed->link;
1564 } 1564 }
1565 fclose(out_stream); 1565 fclose(out_stream);
1566 1566