add _alpm_filelist_sort

Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Andrew Gregory 2016-12-09 11:14:06 -05:00 committed by Allan McRae
parent 585bd89803
commit 6444ccbaf0
5 changed files with 11 additions and 9 deletions

View file

@ -817,14 +817,12 @@ static int local_db_read(alpm_pkg_t *info, int inforeq)
if(newfiles != NULL) { if(newfiles != NULL) {
files = newfiles; files = newfiles;
} }
/* make sure the list is sorted */
qsort(files, files_count, sizeof(alpm_file_t), _alpm_files_cmp);
} else { } else {
FREE(files); FREE(files);
} }
info->files.count = files_count; info->files.count = files_count;
info->files.files = files; info->files.files = files;
_alpm_filelist_sort(&info->files);
continue; continue;
nomem: nomem:
while(files_count > 0) { while(files_count > 0) {

View file

@ -676,8 +676,7 @@ alpm_pkg_t *_alpm_pkg_load_internal(alpm_handle_t *handle,
_alpm_log(handle, ALPM_LOG_DEBUG, _alpm_log(handle, ALPM_LOG_DEBUG,
"sorting package filelist for %s\n", pkgfile); "sorting package filelist for %s\n", pkgfile);
qsort(newpkg->files.files, newpkg->files.count, _alpm_filelist_sort(&newpkg->files);
sizeof(alpm_file_t), _alpm_files_cmp);
} }
newpkg->infolevel |= INFRQ_FILES; newpkg->infolevel |= INFRQ_FILES;
} }

View file

@ -735,13 +735,12 @@ static int sync_db_read(alpm_db_t *db, struct archive *archive,
/* attempt to hand back any memory we don't need */ /* attempt to hand back any memory we don't need */
if(files_count > 0) { if(files_count > 0) {
files = realloc(files, sizeof(alpm_file_t) * files_count); files = realloc(files, sizeof(alpm_file_t) * files_count);
/* make sure the list is sorted */
qsort(files, files_count, sizeof(alpm_file_t), _alpm_files_cmp);
} else { } else {
FREE(files); FREE(files);
} }
pkg->files.count = files_count; pkg->files.count = files_count;
pkg->files.files = files; pkg->files.files = files;
_alpm_filelist_sort(&pkg->files);
} }
} }
if(ret != ARCHIVE_EOF) { if(ret != ARCHIVE_EOF) {

View file

@ -111,7 +111,7 @@ alpm_list_t *_alpm_filelist_intersection(alpm_filelist_t *filesA,
/* Helper function for comparing files list entries /* Helper function for comparing files list entries
*/ */
int _alpm_files_cmp(const void *f1, const void *f2) static int _alpm_files_cmp(const void *f1, const void *f2)
{ {
const alpm_file_t *file1 = f1; const alpm_file_t *file1 = f1;
const alpm_file_t *file2 = f2; const alpm_file_t *file2 = f2;
@ -133,4 +133,10 @@ alpm_file_t SYMEXPORT *alpm_filelist_contains(alpm_filelist_t *filelist,
sizeof(alpm_file_t), _alpm_files_cmp); sizeof(alpm_file_t), _alpm_files_cmp);
} }
void _alpm_filelist_sort(alpm_filelist_t *filelist)
{
qsort(filelist->files, filelist->count,
sizeof(alpm_file_t), _alpm_files_cmp);
}
/* vim: set noet: */ /* vim: set noet: */

View file

@ -27,7 +27,7 @@ alpm_list_t *_alpm_filelist_difference(alpm_filelist_t *filesA,
alpm_list_t *_alpm_filelist_intersection(alpm_filelist_t *filesA, alpm_list_t *_alpm_filelist_intersection(alpm_filelist_t *filesA,
alpm_filelist_t *filesB); alpm_filelist_t *filesB);
int _alpm_files_cmp(const void *f1, const void *f2); void _alpm_filelist_sort(alpm_filelist_t *filelist);
#endif /* ALPM_FILELIST_H */ #endif /* ALPM_FILELIST_H */