Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=pacman-g2.git;a=commitdiff;h=fdc80b3e7db96b9e1be3afcf8d4c19c89ac1a04d

commit fdc80b3e7db96b9e1be3afcf8d4c19c89ac1a04d
Author: Michel Hermier <herm...@frugalware.org>
Date:   Fri Nov 15 12:11:40 2013 +0100

libpacman: Add pacman_download_state_size to the public API.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index e62aeda..ce9ade6 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -36,6 +36,8 @@ pmconflict_t: is now public and deprecate PM_CONFLICT.

pmdb_t: is now public and deprecate PM_DB.

+pacman_download_state_size: Access to a download final size.
+
pmdepmissing_t: is now public and deprecate PM_DEPMISS.

pmgrp_t: is now public and deprecate PM_GRP.
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 4a4a232..5ac14fb 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -412,6 +412,24 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)

/** @} */

+/** @defgroup pacman_download_state Download States Functions
+ * @brief Functions to informations from libpacman downloads
+ * @{
+ */
+
+/** Get the final size of the download
+ * @param download_state pointer to the download state to get the informations 
from.
+ * @return the size of the file or ((off_t) -1) in case of error.
+ */
+off_t pacman_download_state_size(const pmdownload_state_t *download_state)
+{
+       ASSERT(download_state != NULL, return((off_t) -1));
+
+       return download_state->dst_size;
+}
+
+/** @} */
+
/** @defgroup pacman_packages Package Functions
* @brief Functions to manipulate libpacman packages
* @{
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index c42cef3..5c65bf5 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -24,6 +24,8 @@
#ifndef _PACMAN_H
#define _PACMAN_H

+#include <sys/types.h> // off_t
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -169,6 +171,12 @@ pmlist_t *pacman_db_search(pmdb_t *db);
pmlist_t *pacman_db_test(pmdb_t *db);

/*
+ * Download states
+ */
+
+off_t pacman_download_state_size(const pmdownload_state_t *download_state);
+
+/*
* Packages
*/

diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index a5646cc..35ead4d 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -53,9 +53,9 @@ extern config_t *config;
extern unsigned int maxcols;

/* FIXME: log10() want float */
-int log_progress(pmdownload_state_t *download_state, int xfered, void *arg)
+int log_progress(const pmdownload_state_t *download_state, int xfered, void 
*arg)
{
-       int fsz = *(int*)arg;
+       int fsz = pacman_download_state_size(download_state);
int pct = ((float)(xfered+offset) / fsz) * 100;
static int lastpct=0;
unsigned int i, cur;
diff --git a/src/pacman-g2/download.h b/src/pacman-g2/download.h
index 7ad04fc..151a2bf 100644
--- a/src/pacman-g2/download.h
+++ b/src/pacman-g2/download.h
@@ -30,7 +30,7 @@ extern float rate;
extern int xfered1;
extern unsigned int eta_h, eta_m, eta_s, remain, howmany;

-int log_progress(pmdownload_state_t *download_state, int xfered, void *arg);
+int log_progress(const pmdownload_state_t *download_state, int xfered, void 
*arg);

#endif /* _PM_DOWNLOAD_H */
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to