Some more functions that are worth taking a look at on the libalpm side: add.c: _alpm_add_commit be_files.c: _alpm_db_read _alpm_db_write conflict.c: _alpm_checkconflicts _alpm_db_find_conflicts package.c: _alpm_pkg_load (getting a bit long) remove.c: _alpm_remove_commit server.c: _alpm_downloadfiles_forreal sync.c: _alpm_sync_sysupgrade (getting there) _alpm_sync_prepare _alpm_sync_commit And some minor things I found in the code- cleaned up an extern enum, changed 'md5' variable to 'hash' as it can be either md5 or sha1, resorted db.h for clarity, and fixed some English grammar issues. Here is a patch: Index: lib/libalpm/alpm.h =================================================================== RCS file: /home/cvs-pacman/pacman-lib/lib/libalpm/alpm.h,v retrieving revision 1.64 diff -u -u -r1.64 alpm.h --- lib/libalpm/alpm.h 22 Nov 2006 09:03:41 -0000 1.64 +++ lib/libalpm/alpm.h 22 Dec 2006 18:34:01 -0000 @@ -399,7 +399,7 @@ /* * Errors */ -extern enum __pmerrno_t { +enum __pmerrno_t { PM_ERR_MEMORY = 1, PM_ERR_SYSTEM, PM_ERR_BADPERMS, @@ -469,7 +469,9 @@ /* Downloading */ PM_ERR_CONNECT_FAILED, PM_ERR_FORK_FAILED -} pm_errno; +}; + +extern enum __pmerrno_t pm_errno; char *alpm_strerror(int err); Index: lib/libalpm/backup.c =================================================================== RCS file: /home/cvs-pacman/pacman-lib/lib/libalpm/backup.c,v retrieving revision 1.7 diff -u -u -r1.7 backup.c --- lib/libalpm/backup.c 31 Oct 2006 06:39:59 -0000 1.7 +++ lib/libalpm/backup.c 22 Dec 2006 18:34:01 -0000 @@ -55,9 +55,9 @@ ptr++; /* now str points to the filename and ptr points to the md5 or sha1 hash */ if(!strcmp(file, str)) { - char *md5 = strdup(ptr); + char *hash = strdup(ptr); FREE(str); - return(md5); + return(hash); } FREE(str); } Index: lib/libalpm/db.h =================================================================== RCS file: /home/cvs-pacman/pacman-lib/lib/libalpm/db.h,v retrieving revision 1.20 diff -u -u -r1.20 db.h --- lib/libalpm/db.h 20 Nov 2006 09:10:24 -0000 1.20 +++ lib/libalpm/db.h 22 Dec 2006 18:34:01 -0000 @@ -44,10 +44,14 @@ pmlist_t *servers; }; +/* db.c, database general calls */ pmdb_t *_alpm_db_new(char *root, char *dbpath, char *treename); void _alpm_db_free(void *data); int _alpm_db_cmp(const void *db1, const void *db2); pmlist_t *_alpm_db_search(pmdb_t *db, pmlist_t *needles); +pmdb_t *_alpm_db_register(char *treename, alpm_cb_db_register callback); + +/* be.c, backend specific */ int _alpm_db_install(pmdb_t *db, const char *dbfile); int _alpm_db_open(pmdb_t *db); void _alpm_db_close(pmdb_t *db); @@ -58,7 +62,6 @@ int _alpm_db_remove(pmdb_t *db, pmpkg_t *info); int _alpm_db_getlastupdate(pmdb_t *db, char *ts); int _alpm_db_setlastupdate(pmdb_t *db, char *ts); -pmdb_t *_alpm_db_register(char *treename, alpm_cb_db_register callback); #endif /* _ALPM_DB_H */ Index: lib/libalpm/sync.c =================================================================== RCS file: /home/cvs-pacman/pacman-lib/lib/libalpm/sync.c,v retrieving revision 1.85 diff -u -u -r1.85 sync.c --- lib/libalpm/sync.c 1 Dec 2006 09:32:30 -0000 1.85 +++ lib/libalpm/sync.c 22 Dec 2006 18:34:03 -0000 @@ -382,7 +382,7 @@ { pmlist_t *deps = NULL; pmlist_t *list = NULL; /* list allowing checkdeps usage with data from trans->packages */ - pmlist_t *trail = NULL; /* breadcrum list to avoid running into circles */ + pmlist_t *trail = NULL; /* breadcrumb list to avoid running in circles */ pmlist_t *asked = NULL; pmlist_t *i, *j, *k, *l; int ret = 0;