mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-23 00:08:50 -05:00
* 'add' percentages now cap at 100% (see the comment)
* downloaded packages now pass ONLY the package name to the callback
This commit is contained in:
parent
a382d33d45
commit
c55ea22c58
@ -496,10 +496,20 @@ int _alpm_add_commit(pmtrans_t *trans, pmdb_t *db)
|
|||||||
char pathname[PATH_MAX];
|
char pathname[PATH_MAX];
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
|
|
||||||
STRNCPY(pathname, archive_entry_pathname (entry), PATH_MAX);
|
STRNCPY(pathname, archive_entry_pathname(entry), PATH_MAX);
|
||||||
|
|
||||||
if (info->size != 0)
|
if (info->size != 0) {
|
||||||
percent = (double)archive_position_uncompressed(archive) / info->size;
|
/* There's a problem here. These sizes don't match up. info->size is
|
||||||
|
* the COMPRESSED size, and info->isize is uncompressed. It appears,
|
||||||
|
* however, that these are the only two sizes available. It appears
|
||||||
|
* to be close enough, BUT easilly goes over 100%, so we'll stall
|
||||||
|
* there for now */
|
||||||
|
percent = (double)archive_position_uncompressed(archive) / info->size;
|
||||||
|
if(percent >= 1.0) {
|
||||||
|
percent = 1.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (needdisp == 0) {
|
if (needdisp == 0) {
|
||||||
PROGRESS(trans, cb_state, what, (int)(percent * 100), alpm_list_count(trans->packages), (alpm_list_count(trans->packages) - alpm_list_count(targ) +1));
|
PROGRESS(trans, cb_state, what, (int)(percent * 100), alpm_list_count(trans->packages), (alpm_list_count(trans->packages) - alpm_list_count(targ) +1));
|
||||||
}
|
}
|
||||||
|
@ -593,14 +593,15 @@ char SYMEXPORT *alpm_pkg_name_hasarch(char *pkgname)
|
|||||||
arch = _supported_archs[i];
|
arch = _supported_archs[i];
|
||||||
|
|
||||||
/* whee, case insensitive compare */
|
/* whee, case insensitive compare */
|
||||||
|
|
||||||
while(*arch && *cmp && tolower(*arch++) == tolower(*cmp++)) ;
|
while(*arch && *cmp && tolower(*arch++) == tolower(*cmp++)) ;
|
||||||
if(*arch || *cmp) continue;
|
if(*arch || *cmp) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
return p;
|
return(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
return(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "handle.h"
|
#include "handle.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "package.h"
|
||||||
|
|
||||||
pmserver_t *_alpm_server_new(const char *url)
|
pmserver_t *_alpm_server_new(const char *url)
|
||||||
{
|
{
|
||||||
@ -180,12 +181,22 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
|
|||||||
char realfile[PATH_MAX];
|
char realfile[PATH_MAX];
|
||||||
char output[PATH_MAX];
|
char output[PATH_MAX];
|
||||||
char *fn = (char *)lp->data;
|
char *fn = (char *)lp->data;
|
||||||
|
char pkgname[PKG_NAME_LEN];
|
||||||
|
char *p;
|
||||||
|
|
||||||
fileurl = url_for_file(server, fn);
|
fileurl = url_for_file(server, fn);
|
||||||
if(!fileurl) {
|
if(!fileurl) {
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Try to get JUST the name of the package from the filename */
|
||||||
|
p = alpm_pkg_name_hasarch(fn); /* TODO remove this later */
|
||||||
|
_alpm_pkg_splitname(fn, pkgname, NULL, (p != NULL));
|
||||||
|
if(!strlen(pkgname)) {
|
||||||
|
/* just use the raw filename if we can't find crap */
|
||||||
|
STRNCPY(pkgname, fn, PKG_NAME_LEN);
|
||||||
|
}
|
||||||
|
|
||||||
snprintf(realfile, PATH_MAX, "%s/%s", localpath, fn);
|
snprintf(realfile, PATH_MAX, "%s/%s", localpath, fn);
|
||||||
snprintf(output, PATH_MAX, "%s/%s.part", localpath, fn);
|
snprintf(output, PATH_MAX, "%s/%s.part", localpath, fn);
|
||||||
|
|
||||||
@ -278,7 +289,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Progress 0 - initialize */
|
/* Progress 0 - initialize */
|
||||||
if(handle->dlcb) handle->dlcb(fn, 0, ust.size);
|
if(handle->dlcb) handle->dlcb(pkgname, 0, ust.size);
|
||||||
|
|
||||||
int nread = 0;
|
int nread = 0;
|
||||||
char buffer[PM_DLBUF_LEN];
|
char buffer[PM_DLBUF_LEN];
|
||||||
@ -287,7 +298,7 @@ int _alpm_downloadfiles_forreal(alpm_list_t *servers, const char *localpath,
|
|||||||
while((nwritten += fwrite(buffer, 1, (nread - nwritten), localf)) < nread) ;
|
while((nwritten += fwrite(buffer, 1, (nread - nwritten), localf)) < nread) ;
|
||||||
dltotal_bytes += nread;
|
dltotal_bytes += nread;
|
||||||
|
|
||||||
if(handle->dlcb) handle->dlcb(fn, dltotal_bytes, ust.size);
|
if(handle->dlcb) handle->dlcb(pkgname, dltotal_bytes, ust.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
fclose(localf);
|
fclose(localf);
|
||||||
|
Loading…
Reference in New Issue
Block a user