diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-06 10:53:17 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-06 10:53:17 +0100 |
commit | aa4977d8e549d9fff2b2946f03d304e435eb20f1 (patch) | |
tree | bc7c7fe4ab64263a9f8356762cb8f7e77165de73 /archival/dpkg.c | |
parent | 86350f8d5f5d5a1006cffe0bedccd625f012702f (diff) | |
download | busybox-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.c | 40 |
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 | ||
1452 | static void init_archive_deb_data(archive_handle_t *ar_handle) | 1452 | static 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 | ||
1472 | static void FAST_FUNC data_extract_to_buffer(archive_handle_t *archive_handle) | 1472 | static 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 | ||
1480 | static char *deb_extract_control_file_to_buffer(archive_handle_t *ar_handle, llist_t *myaccept) | 1480 | static 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 | ||
1492 | static void FAST_FUNC data_extract_all_prefix(archive_handle_t *archive_handle) | 1492 | static 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 | ||