diff options
-rw-r--r-- | archival/rpm.c | 88 |
1 files changed, 48 insertions, 40 deletions
diff --git a/archival/rpm.c b/archival/rpm.c index c24cfdf41..790eeb59d 100644 --- a/archival/rpm.c +++ b/archival/rpm.c @@ -88,37 +88,6 @@ struct globals { #define G (*(struct globals*)bb_common_bufsiz1) #define INIT_G() do { setup_common_bufsiz(); } while (0) -static void extract_cpio(int fd, const char *source_rpm) -{ - archive_handle_t *archive_handle; - - if (source_rpm != NULL) { - /* Binary rpm (it was built from some SRPM), install to root */ - xchdir("/"); - } /* else: SRPM, install to current dir */ - - /* Initialize */ - archive_handle = init_handle(); - archive_handle->seek = seek_by_read; - archive_handle->action_data = data_extract_all; -#if 0 /* For testing (rpm -i only lists the files in internal cpio): */ - archive_handle->action_header = header_list; - archive_handle->action_data = data_skip; -#endif - archive_handle->ah_flags = ARCHIVE_RESTORE_DATE | ARCHIVE_CREATE_LEADING_DIRS - /* compat: overwrite existing files. - * try "rpm -i foo.src.rpm" few times in a row - - * standard rpm will not complain. - */ - | ARCHIVE_REPLACE_VIA_RENAME; - archive_handle->src_fd = fd; - /*archive_handle->offset = 0; - init_handle() did it */ - - setup_unzip_on_fd(archive_handle->src_fd, /*fail_if_not_compressed:*/ 1); - while (get_header_cpio(archive_handle) == EXIT_SUCCESS) - continue; -} - static int rpm_gettags(const char *filename) { rpm_index *tags; @@ -190,15 +159,6 @@ static int bsearch_rpmtag(const void *key, const void *item) return (*tag - tmp->tag); } -static int rpm_getcount(int tag) -{ - rpm_index *found; - found = bsearch(&tag, G.mytags, G.tagcount, sizeof(G.mytags[0]), bsearch_rpmtag); - if (!found) - return 0; - return found->count; -} - static char *rpm_getstr(int tag, int itemindex) { rpm_index *found; @@ -222,6 +182,8 @@ static char *rpm_getstr0(int tag) return rpm_getstr(tag, 0); } +#if ENABLE_RPM + static int rpm_getint(int tag, int itemindex) { rpm_index *found; @@ -249,6 +211,15 @@ static int rpm_getint(int tag, int itemindex) return -1; } +static int rpm_getcount(int tag) +{ + rpm_index *found; + found = bsearch(&tag, G.mytags, G.tagcount, sizeof(G.mytags[0]), bsearch_rpmtag); + if (!found) + return 0; + return found->count; +} + static void fileaction_dobackup(char *filename, int fileref) { struct stat oldfile; @@ -317,6 +288,37 @@ static void print_all_tags(void) #define print_all_tags() ((void)0) #endif +static void extract_cpio(int fd, const char *source_rpm) +{ + archive_handle_t *archive_handle; + + if (source_rpm != NULL) { + /* Binary rpm (it was built from some SRPM), install to root */ + xchdir("/"); + } /* else: SRPM, install to current dir */ + + /* Initialize */ + archive_handle = init_handle(); + archive_handle->seek = seek_by_read; + archive_handle->action_data = data_extract_all; +#if 0 /* For testing (rpm -i only lists the files in internal cpio): */ + archive_handle->action_header = header_list; + archive_handle->action_data = data_skip; +#endif + archive_handle->ah_flags = ARCHIVE_RESTORE_DATE | ARCHIVE_CREATE_LEADING_DIRS + /* compat: overwrite existing files. + * try "rpm -i foo.src.rpm" few times in a row - + * standard rpm will not complain. + */ + | ARCHIVE_REPLACE_VIA_RENAME; + archive_handle->src_fd = fd; + /*archive_handle->offset = 0; - init_handle() did it */ + + setup_unzip_on_fd(archive_handle->src_fd, /*fail_if_not_compressed:*/ 1); + while (get_header_cpio(archive_handle) == EXIT_SUCCESS) + continue; +} + //usage:#define rpm_trivial_usage //usage: "-i PACKAGE.rpm; rpm -qp[ildc] PACKAGE.rpm" //usage:#define rpm_full_usage "\n\n" @@ -487,6 +489,8 @@ int rpm_main(int argc, char **argv) return 0; } +#endif /* RPM */ + /* * Mini rpm2cpio implementation for busybox * @@ -509,6 +513,8 @@ int rpm_main(int argc, char **argv) //usage:#define rpm2cpio_full_usage "\n\n" //usage: "Output a cpio archive of the rpm file" +#if ENABLE_RPM2CPIO + /* No getopt required */ int rpm2cpio_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) @@ -549,3 +555,5 @@ int rpm2cpio_main(int argc UNUSED_PARAM, char **argv) } return EXIT_SUCCESS; } + +#endif /* RPM2CPIO */ |