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

commit 7ce09c5120275cc65bf623042b5b695e8dce5a53
Author: Michel Hermier <herm...@frugalware.org>
Date:   Sat Nov 16 11:43:23 2013 +0100

libpacman: Add pacman_downloadstate_begin and remove PM_OPT_DLT0.

diff --git a/doc/libpacman-changes.txt b/doc/libpacman-changes.txt
index 99ddc6e..d6ac707 100644
--- a/doc/libpacman-changes.txt
+++ b/doc/libpacman-changes.txt
@@ -44,6 +44,8 @@ pmconflict_t: is now public and deprecate PM_CONFLICT.

pmdb_t: is now public and deprecate PM_DB.

+pacman_downloadstate_begin: Access to download start time.
+
pacman_downloadstate_resume: Access to resume download size.

pacman_downloadstate_size: Access to final download size.
diff --git a/lib/libpacman/handle.c b/lib/libpacman/handle.c
index 49ff507..d36cff6 100644
--- a/lib/libpacman/handle.c
+++ b/lib/libpacman/handle.c
@@ -234,9 +234,6 @@ int _pacman_handle_set_option(pmhandle_t *ph, unsigned char 
val, unsigned long d
case PM_OPT_DLFNM:
pm_dlfnm = (char *)data;
break;
-               case PM_OPT_DLT0:
-                       pm_dlt0 = (struct timeval *)data;
-               break;
case PM_OPT_DLT:
pm_dlt = (struct timeval *)data;
break;
@@ -349,7 +346,6 @@ int _pacman_handle_get_option(pmhandle_t *ph, unsigned char 
val, long *data)
case PM_OPT_OLDDELAY:  *data = (long)ph->olddelay; break;
case PM_OPT_LOGMASK:   *data = pm_logmask; break;
case PM_OPT_DLFNM:     *data = (long)pm_dlfnm; break;
-               case PM_OPT_DLT0:      *data = (long)pm_dlt0; break;
case PM_OPT_DLT:       *data = (long)pm_dlt; break;
case PM_OPT_DLRATE:    *data = (long)pm_dlrate; break;
case PM_OPT_DLXFERED1: *data = (long)pm_dlxfered1; break;
diff --git a/lib/libpacman/pacman.c b/lib/libpacman/pacman.c
index 1ee8327..7b3fb1c 100644
--- a/lib/libpacman/pacman.c
+++ b/lib/libpacman/pacman.c
@@ -417,6 +417,19 @@ pmlist_t *pacman_db_getgrpcache(pmdb_t *db)
* @{
*/

+/** Get the download start time
+ * @param downloadstate pointer to the download state to get the informations 
from.
+ * @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
+ */
+int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval)
+{
+       ASSERT(downloadstate != NULL, return -1);
+       ASSERT(timeval != NULL, return -1);
+
+       *timeval = downloadstate->dst_begin;
+       return 0;
+}
+
/** Get the size at the start of the download resume
* @param downloadstate pointer to the download state to get the informations 
from.
* @return the size of the file at the start of download resume of the file or 
((off_t) -1) in case of error.
diff --git a/lib/libpacman/pacman.h b/lib/libpacman/pacman.h
index 17dd85b..6e01375 100644
--- a/lib/libpacman/pacman.h
+++ b/lib/libpacman/pacman.h
@@ -118,7 +118,6 @@ enum {
PM_OPT_NOPASSIVEFTP,
PM_OPT_DLCB,
PM_OPT_DLFNM,
-       PM_OPT_DLT0,
PM_OPT_DLT,
PM_OPT_DLRATE,
PM_OPT_DLXFERED1,
@@ -173,6 +172,7 @@ pmlist_t *pacman_db_test(pmdb_t *db);
* Download states
*/

+int pacman_downloadstate_begin(const pmdownloadstate_t *downloadstate, struct 
timeval *timeval);
off_t pacman_downloadstate_resume(const pmdownloadstate_t *downloadstate);
off_t pacman_downloadstate_size(const pmdownloadstate_t *downloadstate);
off_t pacman_downloadstate_tell(const pmdownloadstate_t *downloadstate);
diff --git a/lib/libpacman/server.c b/lib/libpacman/server.c
index cdfe5f4..adf5cde 100644
--- a/lib/libpacman/server.c
+++ b/lib/libpacman/server.c
@@ -48,7 +48,7 @@
pacman_trans_cb_download pm_dlcb = NULL;
/* progress bar */
char *pm_dlfnm=NULL;
-struct timeval *pm_dlt0=NULL, *pm_dlt=NULL;
+struct timeval *pm_dlt=NULL;
float *pm_dlrate=NULL;
int *pm_dlxfered1=NULL;
unsigned int *pm_dleta_h=NULL, *pm_dleta_m=NULL, *pm_dleta_s=NULL;
@@ -377,9 +377,9 @@ int _pacman_downloadfiles_forreal(pmlist_t *servers, const 
char *localpath,
downloadstate.dst_resume = 0;

/* ETA setup */
-                               if(pm_dlt0 && pm_dlt && pm_dlrate && 
pm_dlxfered1 && pm_dleta_h && pm_dleta_m && pm_dleta_s) {
-                                       gettimeofday(pm_dlt0, NULL);
-                                       *pm_dlt = *pm_dlt0;
+                               gettimeofday(&downloadstate.dst_begin, NULL);
+                               if(pm_dlt && pm_dlrate && pm_dlxfered1 && 
pm_dleta_h && pm_dleta_m && pm_dleta_s) {
+                                       *pm_dlt = downloadstate.dst_begin;
*pm_dlrate = 0;
*pm_dlxfered1 = 0;
*pm_dleta_h = 0;
diff --git a/lib/libpacman/server.h b/lib/libpacman/server.h
index 188f303..f56b533 100644
--- a/lib/libpacman/server.h
+++ b/lib/libpacman/server.h
@@ -45,6 +45,7 @@ typedef struct __pmserver_t {

struct __pmdownloadstate_t {
// FIXME: change int to off_t when the download backend will permit that.
+       struct timeval dst_begin;
int dst_resume;
int dst_size;
int dst_tell;
@@ -62,7 +63,7 @@ extern pacman_trans_cb_download pm_dlcb;

/* progress bar */
extern char *pm_dlfnm;
-extern struct timeval *pm_dlt0, *pm_dlt;
+extern struct timeval *pm_dlt;
extern float *pm_dlrate;
extern int *pm_dlxfered1;
extern unsigned int *pm_dleta_h, *pm_dleta_m, *pm_dleta_s;
diff --git a/src/pacman-g2/download.c b/src/pacman-g2/download.c
index d88f08d..b78cd9f 100644
--- a/src/pacman-g2/download.c
+++ b/src/pacman-g2/download.c
@@ -41,7 +41,7 @@

/* progress bar */
char sync_fnm[PM_DLFNM_LEN+1];
-struct timeval t0, t;
+struct timeval t;
float rate;
int xfered1;
unsigned int eta_h, eta_m, eta_s, remain, howmany;
@@ -88,7 +88,7 @@ int log_progress(const pmdownloadstate_t *downloadstate)

gettimeofday(&t1, NULL);
if(xfered+offset == fsz) {
-               t = t0;
+               pacman_downloadstate_begin(downloadstate, &t);
}
timediff = t1.tv_sec-t.tv_sec + (float)(t1.tv_usec-t.tv_usec) / 1000000;

diff --git a/src/pacman-g2/download.h b/src/pacman-g2/download.h
index ddbd58b..257dd26 100644
--- a/src/pacman-g2/download.h
+++ b/src/pacman-g2/download.h
@@ -25,7 +25,7 @@

extern char sync_fnm[PM_DLFNM_LEN+1];
extern int offset;
-extern struct timeval t0, t;
+extern struct timeval t;
extern float rate;
extern int xfered1;
extern unsigned int eta_h, eta_m, eta_s, remain, howmany;
diff --git a/src/pacman-g2/pacman-g2.c b/src/pacman-g2/pacman-g2.c
index 2cbd6ab..fd0c57c 100644
--- a/src/pacman-g2/pacman-g2.c
+++ b/src/pacman-g2/pacman-g2.c
@@ -575,10 +575,6 @@ int main(int argc, char *argv[])
ERR(NL, _("failed to set option DLFNM (%s)\n"), pacman_strerror(pm_errno));
cleanup(1);
}
-       if(pacman_set_option(PM_OPT_DLT0, (long)&t0) == -1) {
-               ERR(NL, _("failed to set option DLT0 (%s)\n"), 
pacman_strerror(pm_errno));
-               cleanup(1);
-       }
if(pacman_set_option(PM_OPT_DLT, (long)&t) == -1) {
ERR(NL, _("failed to set option DLT (%s)\n"), pacman_strerror(pm_errno));
cleanup(1);
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to