aboutsummaryrefslogtreecommitdiff
path: root/archival/libarchive
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-01-19 11:47:11 +0000
committerRon Yorston <rmy@pobox.com>2021-01-19 11:47:11 +0000
commitdf81ab878f0b8124f3ead12d8299abec6ce5fac3 (patch)
tree72ec1a8bcb405cf48099b9d2d9a71f7fc6090d49 /archival/libarchive
parent12e14ebba6b6fe111829cac357b48154e769d778 (diff)
downloadbusybox-w32-df81ab878f0b8124f3ead12d8299abec6ce5fac3.tar.gz
busybox-w32-df81ab878f0b8124f3ead12d8299abec6ce5fac3.tar.bz2
busybox-w32-df81ab878f0b8124f3ead12d8299abec6ce5fac3.zip
libarchive: allow extraction of hard links
Allow create_or_remember_link() to create hardlinks. As a result tar and cpio can now extract hard links. Since unzip only supports symlinks it sees no improvement. As before, attempts to extract symlinks result in a warning.
Diffstat (limited to 'archival/libarchive')
-rw-r--r--archival/libarchive/unsafe_symlink_target.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/archival/libarchive/unsafe_symlink_target.c b/archival/libarchive/unsafe_symlink_target.c
index ff96991f5..b5f5a2670 100644
--- a/archival/libarchive/unsafe_symlink_target.c
+++ b/archival/libarchive/unsafe_symlink_target.c
@@ -24,12 +24,17 @@ void FAST_FUNC create_or_remember_link(llist_t **link_placeholders,
24 ); 24 );
25 } 25 }
26#else 26#else
27 if (hard_link) {
28 llist_add_to_end(link_placeholders,
29 xasprintf("%c%s%c%s", hard_link, linkname, '\0', target)
30 );
31 return;
32 }
27 /* symlink isn't implemented for WIN32, just issue a warning */ 33 /* symlink isn't implemented for WIN32, just issue a warning */
28 bb_perror_msg("can't create %slink '%s' to '%s'", "sym", linkname, target); 34 bb_perror_msg("can't create symlink '%s' to '%s'", linkname, target);
29#endif 35#endif
30} 36}
31 37
32#if !ENABLE_PLATFORM_MINGW32
33void FAST_FUNC create_links_from_list(llist_t *list) 38void FAST_FUNC create_links_from_list(llist_t *list)
34{ 39{
35 while (list) { 40 while (list) {
@@ -46,4 +51,3 @@ void FAST_FUNC create_links_from_list(llist_t *list)
46 list = list->link; 51 list = list->link;
47 } 52 }
48} 53}
49#endif