[pacman-dev] [PATCH 1/2] add_entry_to_files_list: pass filelist directly

Andrew Gregory andrew.gregory.8 at gmail.com
Wed Mar 25 09:53:06 UTC 2015


Allows entries to be added to arbitrary filelists not connected to
a package.

Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
---
 lib/libalpm/be_package.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/lib/libalpm/be_package.c b/lib/libalpm/be_package.c
index e284254..37aa428 100644
--- a/lib/libalpm/be_package.c
+++ b/lib/libalpm/be_package.c
@@ -384,15 +384,16 @@ static int handle_simple_path(alpm_pkg_t *pkg, const char *path)
  * @param path path of the file to be added
  * @return <0 on error, 0 on success
  */
-static int add_entry_to_files_list(alpm_pkg_t *pkg, size_t *files_size,
-		struct archive_entry *entry, const char *path)
+static int add_entry_to_files_list(alpm_filelist_t *filelist,
+		size_t *files_size, struct archive_entry *entry, const char *path)
 {
-	const size_t files_count = pkg->files.count;
+	const size_t files_count = filelist->count;
 	alpm_file_t *current_file;
 	mode_t type;
 	size_t pathlen;
 
-	if(!_alpm_greedy_grow((void **)&pkg->files.files, files_size, (files_count + 1) * sizeof(alpm_file_t))) {
+	if(!_alpm_greedy_grow((void **)&filelist->files,
+				files_size, (files_count + 1) * sizeof(alpm_file_t))) {
 		return -1;
 	}
 
@@ -400,7 +401,7 @@ static int add_entry_to_files_list(alpm_pkg_t *pkg, size_t *files_size,
 
 	pathlen = strlen(path);
 
-	current_file = pkg->files.files + files_count;
+	current_file = filelist->files + files_count;
 
 	/* mtree paths don't contain a tailing slash, those we get from
 	 * the archive directly do (expensive way)
@@ -418,7 +419,7 @@ static int add_entry_to_files_list(alpm_pkg_t *pkg, size_t *files_size,
 	}
 	current_file->size = archive_entry_size(entry);
 	current_file->mode = archive_entry_mode(entry);
-	pkg->files.count++;
+	filelist->count++;
 	return 0;
 }
 
@@ -509,7 +510,7 @@ static int build_filelist_from_mtree(alpm_handle_t *handle, alpm_pkg_t *pkg, str
 			continue;
 		}
 
-		if(add_entry_to_files_list(pkg, &files_size, mtree_entry, path) < 0) {
+		if(add_entry_to_files_list(&pkg->files, &files_size, mtree_entry, path) < 0) {
 			goto error;
 		}
 	}
@@ -617,7 +618,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
 			continue;
 		} else if(full && !hit_mtree) {
 			/* building the file list: expensive way */
-			if(add_entry_to_files_list(newpkg, &files_size, entry, entry_name) < 0) {
+			if(add_entry_to_files_list(&newpkg->files, &files_size, entry, entry_name) < 0) {
 				goto error;
 			}
 		}
-- 
2.3.4


More information about the pacman-dev mailing list