diff options
author | Glenn L McGrath <bug1@ihug.co.nz> | 2002-10-19 10:40:55 +0000 |
---|---|---|
committer | Glenn L McGrath <bug1@ihug.co.nz> | 2002-10-19 10:40:55 +0000 |
commit | 61b7904afdf2fca21e4d6a4f70a73d1079f8f877 (patch) | |
tree | 1043011878a4948559389074556e24940a71cfa8 /archival/libunarchive | |
parent | c5c1a8a112ebae29862a902e6e511b392c59da74 (diff) | |
download | busybox-w32-61b7904afdf2fca21e4d6a4f70a73d1079f8f877.tar.gz busybox-w32-61b7904afdf2fca21e4d6a4f70a73d1079f8f877.tar.bz2 busybox-w32-61b7904afdf2fca21e4d6a4f70a73d1079f8f877.zip |
Update dpkg to use new unarchive code
Diffstat (limited to 'archival/libunarchive')
-rw-r--r-- | archival/libunarchive/Makefile.in | 2 | ||||
-rw-r--r-- | archival/libunarchive/data_extract_all_prefix.c | 23 | ||||
-rw-r--r-- | archival/libunarchive/data_extract_to_buffer.c | 11 |
3 files changed, 36 insertions, 0 deletions
diff --git a/archival/libunarchive/Makefile.in b/archival/libunarchive/Makefile.in index e559cb40e..87c888b0b 100644 --- a/archival/libunarchive/Makefile.in +++ b/archival/libunarchive/Makefile.in | |||
@@ -26,7 +26,9 @@ LIBUNARCHIVE-y:= \ | |||
26 | \ | 26 | \ |
27 | data_skip.o \ | 27 | data_skip.o \ |
28 | data_extract_all.o \ | 28 | data_extract_all.o \ |
29 | data_extract_all_prefix.o \ | ||
29 | data_extract_to_stdout.o \ | 30 | data_extract_to_stdout.o \ |
31 | data_extract_to_buffer.o \ | ||
30 | \ | 32 | \ |
31 | filter_accept_all.o \ | 33 | filter_accept_all.o \ |
32 | filter_accept_list.o \ | 34 | filter_accept_list.o \ |
diff --git a/archival/libunarchive/data_extract_all_prefix.c b/archival/libunarchive/data_extract_all_prefix.c new file mode 100644 index 000000000..e4e93fc74 --- /dev/null +++ b/archival/libunarchive/data_extract_all_prefix.c | |||
@@ -0,0 +1,23 @@ | |||
1 | #include <sys/types.h> | ||
2 | #include <errno.h> | ||
3 | #include <fcntl.h> | ||
4 | #include <stdlib.h> | ||
5 | #include <string.h> | ||
6 | #include <utime.h> | ||
7 | #include <unistd.h> | ||
8 | #include <stdlib.h> | ||
9 | #include "libbb.h" | ||
10 | #include "unarchive.h" | ||
11 | |||
12 | extern void data_extract_all_prefix(archive_handle_t *archive_handle) | ||
13 | { | ||
14 | char *name_ptr = archive_handle->file_header->name; | ||
15 | |||
16 | name_ptr += strspn(name_ptr, "./"); | ||
17 | if (name_ptr[0] != '\0') { | ||
18 | archive_handle->file_header->name = xmalloc(strlen(archive_handle->buffer) + 2 + strlen(name_ptr)); | ||
19 | sprintf(archive_handle->file_header->name, "%s%s", archive_handle->buffer, name_ptr); | ||
20 | data_extract_all(archive_handle); | ||
21 | } | ||
22 | return; | ||
23 | } | ||
diff --git a/archival/libunarchive/data_extract_to_buffer.c b/archival/libunarchive/data_extract_to_buffer.c new file mode 100644 index 000000000..02ee4b362 --- /dev/null +++ b/archival/libunarchive/data_extract_to_buffer.c | |||
@@ -0,0 +1,11 @@ | |||
1 | #include <stdlib.h> | ||
2 | #include <stdio.h> | ||
3 | #include "unarchive.h" | ||
4 | #include "libbb.h" | ||
5 | |||
6 | extern void data_extract_to_buffer(archive_handle_t *archive_handle) | ||
7 | { | ||
8 | archive_handle->buffer = xmalloc(archive_handle->file_header->size + 1); | ||
9 | |||
10 | xread_all(archive_handle->src_fd, archive_handle->buffer, archive_handle->file_header->size); | ||
11 | } | ||