diff --git a/bin/xbps-bin/unpack_cb.c b/bin/xbps-bin/unpack_cb.c index 837de90a..0fcc08c9 100644 --- a/bin/xbps-bin/unpack_cb.c +++ b/bin/xbps-bin/unpack_cb.c @@ -34,12 +34,11 @@ unpack_progress_cb_verbose(const struct xbps_unpack_cb_data *xpd, void *cbdata) { (void)cbdata; - if (xpd->entry == NULL || xpd->entry_is_metadata) - return; - else if (xpd->entry_size <= 0) + if (xpd->entry == NULL || xpd->entry_total_count <= 0) return; - printf("Extracted %sfile `%s' (%" PRIi64 " bytes)\n", + printf("%s: unpacked %sfile `%s' (%" PRIi64 " bytes)\n", + xpd->pkgver, xpd->entry_is_conf ? "configuration " : "", xpd->entry, xpd->entry_size); } @@ -49,11 +48,10 @@ unpack_progress_cb(const struct xbps_unpack_cb_data *xpd, void *cbdata) { (void)cbdata; - if (xpd->entry == NULL || xpd->entry_is_metadata) - return; - else if (xpd->entry_size <= 0) + if (xpd->entry_total_count <= 0) return; - printf("Extracting `%s'...\n", xpd->entry); + printf("%s: unpacked %zd of %zd files...\n", + xpd->pkgver, xpd->entry_extract_count, xpd->entry_total_count); printf("\033[1A\033[K"); } diff --git a/include/xbps_api.h b/include/xbps_api.h index 0be3d9a8..e0cecabb 100644 --- a/include/xbps_api.h +++ b/include/xbps_api.h @@ -56,7 +56,7 @@ */ #define XBPS_PKGINDEX_VERSION "1.4" -#define XBPS_API_VERSION "20120506" +#define XBPS_API_VERSION "20120506-1" #define XBPS_VERSION "0.16" /** @@ -403,6 +403,12 @@ struct xbps_fetch_cb_data { * The \a cookie member can be used to pass user supplied data. */ struct xbps_unpack_cb_data { + /** + * @var pkgver + * + * Package name/version string of package being unpacked. + */ + const char *pkgver; /** * @var entry * @@ -427,12 +433,6 @@ struct xbps_unpack_cb_data { * Total number of entries in package. */ ssize_t entry_total_count; - /** - * @var entry_is_metadata - * - * If true "entry" is a metadata file. - */ - bool entry_is_metadata; /** * @var entry_is_conf * diff --git a/include/xbps_api_impl.h b/include/xbps_api_impl.h index a8efb8eb..3509df36 100644 --- a/include/xbps_api_impl.h +++ b/include/xbps_api_impl.h @@ -185,8 +185,6 @@ void HIDDEN xbps_set_cb_fetch(off_t, off_t, off_t, const char *, bool, bool, bool); void HIDDEN xbps_set_cb_state(xbps_state_t, int, const char *, const char *, const char *, ...); -void HIDDEN xbps_set_cb_unpack(const char *, int64_t, ssize_t, - ssize_t, bool, bool); /** * @private diff --git a/lib/cb_util.c b/lib/cb_util.c index cda2fa76..68f84bc6 100644 --- a/lib/cb_util.c +++ b/lib/cb_util.c @@ -99,26 +99,3 @@ xbps_set_cb_state(xbps_state_t state, if (buf != NULL) free(buf); } - -void HIDDEN -xbps_set_cb_unpack(const char *entry, - int64_t entry_size, - ssize_t entry_extract_count, - ssize_t entry_total_count, - bool entry_is_metadata, - bool entry_is_conf) -{ - const struct xbps_handle *xhp = xbps_handle_get(); - struct xbps_unpack_cb_data xucd; - - if (xhp->unpack_cb == NULL) - return; - - xucd.entry = entry; - xucd.entry_size = entry_size; - xucd.entry_extract_count = entry_extract_count; - xucd.entry_total_count = entry_total_count; - xucd.entry_is_metadata = entry_is_metadata; - xucd.entry_is_conf = entry_is_conf; - (*xhp->unpack_cb)(&xucd, xhp->unpack_cb_data); -} diff --git a/lib/package_unpack.c b/lib/package_unpack.c index 203ce16f..e193ee18 100644 --- a/lib/package_unpack.c +++ b/lib/package_unpack.c @@ -240,9 +240,9 @@ unpack_archive(prop_dictionary_t pkg_repod, struct archive *ar) * Prepare unpack callback ops. */ if (xucd != NULL) { + xucd->pkgver = pkgver; xucd->entry = entry_pname; xucd->entry_size = archive_entry_size(entry); - xucd->entry_is_metadata = false; xucd->entry_is_conf = false; } if (strcmp("./INSTALL", entry_pname) == 0) { @@ -275,11 +275,6 @@ unpack_archive(prop_dictionary_t pkg_repod, struct archive *ar) goto out; } nmetadata++; - if (xucd != NULL) { - xucd->entry_is_metadata = true; - xucd->entry_extract_count++; - (*xhp->unpack_cb)(xucd, xhp->unpack_cb_data); - } continue; } else if (strcmp("./REMOVE", entry_pname) == 0) { @@ -289,11 +284,6 @@ unpack_archive(prop_dictionary_t pkg_repod, struct archive *ar) goto out; nmetadata++; - if (xucd != NULL) { - xucd->entry_is_metadata = true; - xucd->entry_extract_count++; - (*xhp->unpack_cb)(xucd, xhp->unpack_cb_data); - } continue; } else if (strcmp("./files.plist", entry_pname) == 0) { @@ -308,11 +298,6 @@ unpack_archive(prop_dictionary_t pkg_repod, struct archive *ar) goto out; } nmetadata++; - if (xucd != NULL) { - xucd->entry_is_metadata = true; - xucd->entry_extract_count++; - (*xhp->unpack_cb)(xucd, xhp->unpack_cb_data); - } continue; } else if (strcmp("./props.plist", entry_pname) == 0) { @@ -328,11 +313,6 @@ unpack_archive(prop_dictionary_t pkg_repod, struct archive *ar) goto out; } nmetadata++; - if (xucd != NULL) { - xucd->entry_is_metadata = true; - xucd->entry_extract_count++; - (*xhp->unpack_cb)(xucd, xhp->unpack_cb_data); - } continue; } /* @@ -360,10 +340,10 @@ unpack_archive(prop_dictionary_t pkg_repod, struct archive *ar) } /* * Compute total entries in progress data, if set. - * total_entries = metadata + files + conf_files + links. + * total_entries = files + conf_files + links. */ if (xucd != NULL) { - xucd->entry_total_count = nmetadata; + xucd->entry_total_count = 0; array = prop_dictionary_get(filesd, "files"); xucd->entry_total_count += (ssize_t)prop_array_count(array);