[pacman-dev] CVS update of pacman-lib/lib/libalpm (add.c alpm.c server.c)
Aaron Griffin
aaron at archlinux.org
Sat Feb 10 04:36:37 EST 2007
Date: Saturday, February 10, 2007 @ 04:36:36
Author: aaron
Path: /home/cvs-pacman/pacman-lib/lib/libalpm
Modified: add.c (1.111 -> 1.112) alpm.c (1.115 -> 1.116)
server.c (1.20 -> 1.21)
* 'add' percentages now cap at 100% (see the comment)
* downloaded packages now pass ONLY the package name to the callback
----------+
add.c | 16 +++++++++++++---
alpm.c | 9 +++++----
server.c | 15 +++++++++++++--
3 files changed, 31 insertions(+), 9 deletions(-)
Index: pacman-lib/lib/libalpm/add.c
diff -u pacman-lib/lib/libalpm/add.c:1.111 pacman-lib/lib/libalpm/add.c:1.112
--- pacman-lib/lib/libalpm/add.c:1.111 Fri Feb 9 16:08:10 2007
+++ pacman-lib/lib/libalpm/add.c Sat Feb 10 04:36:36 2007
@@ -496,10 +496,20 @@
char pathname[PATH_MAX];
struct stat buf;
- STRNCPY(pathname, archive_entry_pathname (entry), PATH_MAX);
+ STRNCPY(pathname, archive_entry_pathname(entry), PATH_MAX);
- if (info->size != 0)
- percent = (double)archive_position_uncompressed(archive) / info->size;
+ if (info->size != 0) {
+ /* 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) {
PROGRESS(trans, cb_state, what, (int)(percent * 100), alpm_list_count(trans->packages), (alpm_list_count(trans->packages) - alpm_list_count(targ) +1));
}
Index: pacman-lib/lib/libalpm/alpm.c
diff -u pacman-lib/lib/libalpm/alpm.c:1.115 pacman-lib/lib/libalpm/alpm.c:1.116
--- pacman-lib/lib/libalpm/alpm.c:1.115 Fri Feb 9 16:54:57 2007
+++ pacman-lib/lib/libalpm/alpm.c Sat Feb 10 04:36:36 2007
@@ -593,14 +593,15 @@
arch = _supported_archs[i];
/* whee, case insensitive compare */
-
while(*arch && *cmp && tolower(*arch++) == tolower(*cmp++)) ;
- if(*arch || *cmp) continue;
+ if(*arch || *cmp) {
+ continue;
+ }
- return p;
+ return(p);
}
}
- return NULL;
+ return(NULL);
}
/** @} */
Index: pacman-lib/lib/libalpm/server.c
diff -u pacman-lib/lib/libalpm/server.c:1.20 pacman-lib/lib/libalpm/server.c:1.21
--- pacman-lib/lib/libalpm/server.c:1.20 Fri Feb 9 05:10:49 2007
+++ pacman-lib/lib/libalpm/server.c Sat Feb 10 04:36:36 2007
@@ -37,6 +37,7 @@
#include "util.h"
#include "handle.h"
#include "log.h"
+#include "package.h"
pmserver_t *_alpm_server_new(const char *url)
{
@@ -180,12 +181,22 @@
char realfile[PATH_MAX];
char output[PATH_MAX];
char *fn = (char *)lp->data;
+ char pkgname[PKG_NAME_LEN];
+ char *p;
fileurl = url_for_file(server, fn);
if(!fileurl) {
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(output, PATH_MAX, "%s/%s.part", localpath, fn);
@@ -278,7 +289,7 @@
}
/* Progress 0 - initialize */
- if(handle->dlcb) handle->dlcb(fn, 0, ust.size);
+ if(handle->dlcb) handle->dlcb(pkgname, 0, ust.size);
int nread = 0;
char buffer[PM_DLBUF_LEN];
@@ -287,7 +298,7 @@
while((nwritten += fwrite(buffer, 1, (nread - nwritten), localf)) < 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);
More information about the pacman-dev
mailing list