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

commit 78b050dab07042b3d0fd6d91bbc79a260df183d2
Author: Michel Hermier <herm...@frugalware.org>
Date:   Sun Nov 10 00:11:18 2013 +0100

libpacman: Rework loops of _pacman_localdb_readpkg and _pacman_syncdb_readpkg.

diff --git a/lib/libpacman/be_files.c b/lib/libpacman/be_files.c
index 37be16d..5e98ce6 100644
--- a/lib/libpacman/be_files.c
+++ b/lib/libpacman/be_files.c
@@ -66,26 +66,23 @@ pmpkg_t *_pacman_localdb_readpkg(pmdb_t *db, unsigned int 
inforeq)
struct stat sbuf;
char path[PATH_MAX];
pmpkg_t *pkg;
-       int isdir = 0;
char *dname;

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));

-       while(!isdir) {
-               ent = readdir(db->handle);
-               if(ent == NULL) {
-                       return(NULL);
-               }
+       while((ent = readdir(db->handle)) != NULL) {
if(!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, "..")) {
-                       isdir = 0;
continue;
}
/* stat the entry, make sure it's a directory */
snprintf(path, PATH_MAX, "%s/%s", db->path, ent->d_name);
if(!stat(path, &sbuf) && S_ISDIR(sbuf.st_mode)) {
-                       isdir = 1;
+                       break;
}
}
+       if(ent == NULL) {
+               return(NULL);
+       }

pkg = _pacman_pkg_new(NULL, NULL);
if(pkg == NULL) {
@@ -109,21 +106,26 @@ pmpkg_t *_pacman_syncdb_readpkg(pmdb_t *db, unsigned int 
inforeq)
{
pmpkg_t *pkg;
struct archive_entry *entry = NULL;
-       int isdir = 0;
char *dname;

ASSERT(db != NULL, RET_ERR(PM_ERR_DB_NULL, NULL));

-       while(!isdir) {
-               if (!db->handle)
-                       _pacman_db_rewind(db);
-               if (!db->handle || archive_read_next_header(db->handle, &entry) 
!= ARCHIVE_OK) {
+       if(!db->handle) {
+               _pacman_db_rewind(db);
+       }
+       if(!db->handle) {
+               return NULL;
+       }
+
+       for(;;) {
+               if(archive_read_next_header(db->handle, &entry) != ARCHIVE_OK) {
return NULL;
}
// make sure it's a directory
const char *pathname = archive_entry_pathname(entry);
-               if (pathname[strlen(pathname)-1] == '/')
-                       isdir = 1;
+               if (pathname[strlen(pathname)-1] == '/') {
+                       break;
+               }
}

pkg = _pacman_pkg_new(NULL, NULL);
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to