From bdf00d3dbd19c3def6127f3d372d630930a26abb Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 16 Jun 2011 11:27:44 -0500 Subject: Make pmfileconflict_t type public This removes the need to write accessor methods for every type we have, and simplifies the API. Any type that doesn't need magic* can be converted in this fashion to make it easier for frontend applications to use, as well as make it less of a pain to introduce new such structs in the future. * "magic" meaning something like pmpkg_t where values can be lazy loaded. Signed-off-by: Dan McGee --- lib/libalpm/alpm.h | 36 +++++++++++++++++++----------------- lib/libalpm/conflict.c | 24 ------------------------ lib/libalpm/conflict.h | 7 ------- 3 files changed, 19 insertions(+), 48 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index bfc01e5c..4c44a361 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -50,7 +50,7 @@ extern "C" { */ /** - * Install reasons + * Install reasons. * Why the package was installed. */ typedef enum _pmpkgreason_t { @@ -60,6 +60,16 @@ typedef enum _pmpkgreason_t { PM_PKG_REASON_DEPEND = 1 } pmpkgreason_t; +/** + * File conflict type. + * Whether the conflict results from a file existing on the filesystem, or with + * another target in the transaction. + */ +typedef enum _pmfileconflicttype_t { + PM_FILECONFLICT_TARGET = 1, + PM_FILECONFLICT_FILESYSTEM +} pmfileconflicttype_t; + /** * GPG signature verification options */ @@ -83,7 +93,14 @@ typedef struct __pmtrans_t pmtrans_t; typedef struct __pmdepend_t pmdepend_t; typedef struct __pmdepmissing_t pmdepmissing_t; typedef struct __pmconflict_t pmconflict_t; -typedef struct __pmfileconflict_t pmfileconflict_t; + +/** File conflict */ +typedef struct _pmfileconflict_t { + char *target; + pmfileconflicttype_t type; + char *file; + char *ctarget; +} pmfileconflict_t; /* * Logging facilities @@ -944,21 +961,6 @@ char *alpm_dep_compute_string(const pmdepend_t *dep); /** @} */ -/** @addtogroup alpm_api_fileconflicts File Conflicts Functions - * Functions to manipulate file conflict information. - * @{ - */ - -typedef enum _pmfileconflicttype_t { - PM_FILECONFLICT_TARGET = 1, - PM_FILECONFLICT_FILESYSTEM -} pmfileconflicttype_t; - -const char *alpm_fileconflict_get_target(pmfileconflict_t *conflict); -pmfileconflicttype_t alpm_fileconflict_get_type(pmfileconflict_t *conflict); -const char *alpm_fileconflict_get_file(pmfileconflict_t *conflict); -const char *alpm_fileconflict_get_ctarget(pmfileconflict_t *conflict); - /** @} */ /* diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c index a6bbe093..d9a0b7ca 100644 --- a/lib/libalpm/conflict.c +++ b/lib/libalpm/conflict.c @@ -565,28 +565,4 @@ const char SYMEXPORT *alpm_conflict_get_reason(pmconflict_t *conflict) return conflict->reason; } -const char SYMEXPORT *alpm_fileconflict_get_target(pmfileconflict_t *conflict) -{ - ASSERT(conflict != NULL, return NULL); - return conflict->target; -} - -pmfileconflicttype_t SYMEXPORT alpm_fileconflict_get_type(pmfileconflict_t *conflict) -{ - ASSERT(conflict != NULL, return -1); - return conflict->type; -} - -const char SYMEXPORT *alpm_fileconflict_get_file(pmfileconflict_t *conflict) -{ - ASSERT(conflict != NULL, return NULL); - return conflict->file; -} - -const char SYMEXPORT *alpm_fileconflict_get_ctarget(pmfileconflict_t *conflict) -{ - ASSERT(conflict != NULL, return NULL); - return conflict->ctarget; -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/conflict.h b/lib/libalpm/conflict.h index 7a3784a2..a9d3e27b 100644 --- a/lib/libalpm/conflict.h +++ b/lib/libalpm/conflict.h @@ -30,13 +30,6 @@ struct __pmconflict_t { char *reason; }; -struct __pmfileconflict_t { - char *target; - pmfileconflicttype_t type; - char *file; - char *ctarget; -}; - pmconflict_t *_alpm_conflict_dup(const pmconflict_t *conflict); void _alpm_conflict_free(pmconflict_t *conflict); alpm_list_t *_alpm_innerconflicts(pmhandle_t *handle, alpm_list_t *packages); -- cgit v1.2.3-24-g4f1b From 19fcc7401666cd892f7b8a5a49854a1b2eb9988b Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 16 Jun 2011 11:33:20 -0500 Subject: Make struct pmconflict_t public Signed-off-by: Dan McGee --- lib/libalpm/alpm.h | 12 +++++++----- lib/libalpm/conflict.c | 18 ------------------ lib/libalpm/conflict.h | 6 ------ 3 files changed, 7 insertions(+), 29 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 4c44a361..0fd6f37e 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -92,7 +92,13 @@ typedef struct __pmgrp_t pmgrp_t; typedef struct __pmtrans_t pmtrans_t; typedef struct __pmdepend_t pmdepend_t; typedef struct __pmdepmissing_t pmdepmissing_t; -typedef struct __pmconflict_t pmconflict_t; + +/** Conflict */ +typedef struct _pmconflict_t { + char *package1; + char *package2; + char *reason; +} pmconflict_t; /** File conflict */ typedef struct _pmfileconflict_t { @@ -928,10 +934,6 @@ const char *alpm_miss_get_causingpkg(const pmdepmissing_t *miss); alpm_list_t *alpm_checkconflicts(pmhandle_t *handle, alpm_list_t *pkglist); -const char *alpm_conflict_get_package1(pmconflict_t *conflict); -const char *alpm_conflict_get_package2(pmconflict_t *conflict); -const char *alpm_conflict_get_reason(pmconflict_t *conflict); - /** Returns the type of version constraint. * @param dep a dependency info structure * @return the type of version constraint (PM_DEP_MOD_ANY if no version diff --git a/lib/libalpm/conflict.c b/lib/libalpm/conflict.c index d9a0b7ca..39f42bfe 100644 --- a/lib/libalpm/conflict.c +++ b/lib/libalpm/conflict.c @@ -547,22 +547,4 @@ alpm_list_t *_alpm_db_find_fileconflicts(pmhandle_t *handle, return conflicts; } -const char SYMEXPORT *alpm_conflict_get_package1(pmconflict_t *conflict) -{ - ASSERT(conflict != NULL, return NULL); - return conflict->package1; -} - -const char SYMEXPORT *alpm_conflict_get_package2(pmconflict_t *conflict) -{ - ASSERT(conflict != NULL, return NULL); - return conflict->package2; -} - -const char SYMEXPORT *alpm_conflict_get_reason(pmconflict_t *conflict) -{ - ASSERT(conflict != NULL, return NULL); - return conflict->reason; -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/conflict.h b/lib/libalpm/conflict.h index a9d3e27b..546a2820 100644 --- a/lib/libalpm/conflict.h +++ b/lib/libalpm/conflict.h @@ -24,12 +24,6 @@ #include "db.h" #include "package.h" -struct __pmconflict_t { - char *package1; - char *package2; - char *reason; -}; - pmconflict_t *_alpm_conflict_dup(const pmconflict_t *conflict); void _alpm_conflict_free(pmconflict_t *conflict); alpm_list_t *_alpm_innerconflicts(pmhandle_t *handle, alpm_list_t *packages); -- cgit v1.2.3-24-g4f1b From 7f6c1a76c66fb718fad2ecce68f99ee13d18ff15 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 16 Jun 2011 11:42:10 -0500 Subject: Make pmdepend_t and pmdepmissing_t public Signed-off-by: Dan McGee --- lib/libalpm/alpm.h | 75 +++++++++++++++++++++++------------------------------- lib/libalpm/deps.c | 38 +-------------------------- lib/libalpm/deps.h | 15 ----------- 3 files changed, 33 insertions(+), 95 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 0fd6f37e..08a7a1f3 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -60,6 +60,22 @@ typedef enum _pmpkgreason_t { PM_PKG_REASON_DEPEND = 1 } pmpkgreason_t; +/** Types of version constraints in dependency specs. */ +typedef enum _pmdepmod_t { + /** No version constraint */ + PM_DEP_MOD_ANY = 1, + /** Test version equality (package=x.y.z) */ + PM_DEP_MOD_EQ, + /** Test for at least a version (package>=x.y.z) */ + PM_DEP_MOD_GE, + /** Test for at most a version (package<=x.y.z) */ + PM_DEP_MOD_LE, + /** Test for greater than some version (package>x.y.z) */ + PM_DEP_MOD_GT, + /** Test for less than some version (package=x.y.z) */ - PM_DEP_MOD_GE, - /** Test for at most a version (package<=x.y.z) */ - PM_DEP_MOD_LE, - /** Test for greater than some version (package>x.y.z) */ - PM_DEP_MOD_GT, - /** Test for less than some version (package=2.12" diff --git a/lib/libalpm/deps.c b/lib/libalpm/deps.c index 10c0009d..085e6ca9 100644 --- a/lib/libalpm/deps.c +++ b/lib/libalpm/deps.c @@ -719,7 +719,7 @@ int _alpm_resolvedeps(pmhandle_t *handle, alpm_list_t *localpkgs, pmpkg_t *pkg, for(j = deps; j; j = j->next) { pmdepmissing_t *miss = j->data; - pmdepend_t *missdep = alpm_miss_get_dep(miss); + pmdepend_t *missdep = miss->depend; /* check if one of the packages in the [*packages] list already satisfies * this dependency */ if(find_dep_satisfier(*packages, missdep)) { @@ -764,42 +764,6 @@ int _alpm_resolvedeps(pmhandle_t *handle, alpm_list_t *localpkgs, pmpkg_t *pkg, return ret; } -const char SYMEXPORT *alpm_miss_get_target(const pmdepmissing_t *miss) -{ - ASSERT(miss != NULL, return NULL); - return miss->target; -} - -const char SYMEXPORT *alpm_miss_get_causingpkg(const pmdepmissing_t *miss) -{ - ASSERT(miss != NULL, return NULL); - return miss->causingpkg; -} - -pmdepend_t SYMEXPORT *alpm_miss_get_dep(pmdepmissing_t *miss) -{ - ASSERT(miss != NULL, return NULL); - return miss->depend; -} - -pmdepmod_t SYMEXPORT alpm_dep_get_mod(const pmdepend_t *dep) -{ - ASSERT(dep != NULL, return -1); - return dep->mod; -} - -const char SYMEXPORT *alpm_dep_get_name(const pmdepend_t *dep) -{ - ASSERT(dep != NULL, return NULL); - return dep->name; -} - -const char SYMEXPORT *alpm_dep_get_version(const pmdepend_t *dep) -{ - ASSERT(dep != NULL, return NULL); - return dep->version; -} - /** Reverse of splitdep; make a dep string from a pmdepend_t struct. * The string must be freed! * @param dep the depend to turn into a string diff --git a/lib/libalpm/deps.h b/lib/libalpm/deps.h index 97c0918e..ecc3b92c 100644 --- a/lib/libalpm/deps.h +++ b/lib/libalpm/deps.h @@ -27,21 +27,6 @@ #include "package.h" #include "alpm.h" -/* Dependency */ -struct __pmdepend_t { - char *name; - char *version; - unsigned long name_hash; - pmdepmod_t mod; -}; - -/* Missing dependency */ -struct __pmdepmissing_t { - char *target; - pmdepend_t *depend; - char *causingpkg; /* this is used in case of remove dependency error only */ -}; - void _alpm_dep_free(pmdepend_t *dep); pmdepend_t *_alpm_dep_dup(const pmdepend_t *dep); void _alpm_depmiss_free(pmdepmissing_t *miss); -- cgit v1.2.3-24-g4f1b From 51359e6d33cf2f3f3acf95ad526c5b22e39d86cf Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 16 Jun 2011 11:49:34 -0500 Subject: Make pmdelta_t public Signed-off-by: Dan McGee --- lib/libalpm/alpm.h | 27 ++++++++++++++++----------- lib/libalpm/delta.c | 43 ++++++------------------------------------- lib/libalpm/delta.h | 15 --------------- lib/libalpm/sync.c | 8 +++----- 4 files changed, 25 insertions(+), 68 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 08a7a1f3..17194f0d 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -103,7 +103,6 @@ typedef enum _pgp_verify_t { typedef struct __pmhandle_t pmhandle_t; typedef struct __pmdb_t pmdb_t; typedef struct __pmpkg_t pmpkg_t; -typedef struct __pmdelta_t pmdelta_t; typedef struct __pmgrp_t pmgrp_t; typedef struct __pmtrans_t pmtrans_t; @@ -138,6 +137,22 @@ typedef struct _pmfileconflict_t { char *ctarget; } pmfileconflict_t; +/** Package upgrade delta */ +typedef struct _pmdelta_t { + /** filename of the delta patch */ + char *delta; + /** md5sum of the delta file */ + char *delta_md5; + /** filename of the 'before' file */ + char *from; + /** filename of the 'after' file */ + char *to; + /** filesize of the delta file */ + off_t delta_size; + /** download filesize of the delta file */ + off_t download_size; +} pmdelta_t; + /* * Logging facilities */ @@ -666,16 +681,6 @@ int alpm_pkg_check_pgp_signature(pmpkg_t *pkg); int alpm_db_check_pgp_signature(pmdb_t *db); int alpm_db_set_pgp_verify(pmdb_t *db, pgp_verify_t verify); -/* - * Deltas - */ - -const char *alpm_delta_get_from(pmdelta_t *delta); -const char *alpm_delta_get_to(pmdelta_t *delta); -const char *alpm_delta_get_filename(pmdelta_t *delta); -const char *alpm_delta_get_md5sum(pmdelta_t *delta); -off_t alpm_delta_get_size(pmdelta_t *delta); - /* * Groups */ diff --git a/lib/libalpm/delta.c b/lib/libalpm/delta.c index aa76b492..fed84f45 100644 --- a/lib/libalpm/delta.c +++ b/lib/libalpm/delta.c @@ -34,43 +34,6 @@ #include "log.h" #include "graph.h" -/** \addtogroup alpm_deltas Delta Functions - * @brief Functions to manipulate libalpm deltas - * @{ - */ - -const char SYMEXPORT *alpm_delta_get_from(pmdelta_t *delta) -{ - ASSERT(delta != NULL, return NULL); - return delta->from; -} - -const char SYMEXPORT *alpm_delta_get_to(pmdelta_t *delta) -{ - ASSERT(delta != NULL, return NULL); - return delta->to; -} - -const char SYMEXPORT *alpm_delta_get_filename(pmdelta_t *delta) -{ - ASSERT(delta != NULL, return NULL); - return delta->delta; -} - -const char SYMEXPORT *alpm_delta_get_md5sum(pmdelta_t *delta) -{ - ASSERT(delta != NULL, return NULL); - return delta->delta_md5; -} - -off_t SYMEXPORT alpm_delta_get_size(pmdelta_t *delta) -{ - ASSERT(delta != NULL, return -1); - return delta->delta_size; -} - -/** @} */ - static alpm_list_t *graph_init(alpm_list_t *deltas, int reverse) { alpm_list_t *i, *j; @@ -279,6 +242,11 @@ static alpm_list_t *find_unused(alpm_list_t *deltas, const char *to, off_t quota return unused; } +/** \addtogroup alpm_deltas Delta Functions + * @brief Functions to manipulate libalpm deltas + * @{ + */ + alpm_list_t SYMEXPORT *alpm_pkg_unused_deltas(pmpkg_t *pkg) { off_t pkgsize = alpm_pkg_get_size(pkg); @@ -289,6 +257,7 @@ alpm_list_t SYMEXPORT *alpm_pkg_unused_deltas(pmpkg_t *pkg) return unused; } +/** @} */ /** Parses the string representation of a pmdelta_t object. * This function assumes that the string is in the correct format. diff --git a/lib/libalpm/delta.h b/lib/libalpm/delta.h index d7725f5a..87869256 100644 --- a/lib/libalpm/delta.h +++ b/lib/libalpm/delta.h @@ -26,21 +26,6 @@ #include "alpm.h" -struct __pmdelta_t { - /** filename of the delta patch */ - char *delta; - /** md5sum of the delta file */ - char *delta_md5; - /** filename of the 'before' file */ - char *from; - /** filename of the 'after' file */ - char *to; - /** filesize of the delta file */ - off_t delta_size; - /** download filesize of the delta file */ - off_t download_size; -}; - pmdelta_t *_alpm_delta_parse(char *line); void _alpm_delta_free(pmdelta_t *delta); off_t _alpm_shortest_delta_path(pmhandle_t *handle, alpm_list_t *deltas, diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 05735730..6b3ddfe8 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -705,13 +705,11 @@ static int validate_deltas(pmhandle_t *handle, alpm_list_t *deltas, for(i = deltas; i; i = i->next) { pmdelta_t *d = alpm_list_getdata(i); - const char *filename = alpm_delta_get_filename(d); - char *filepath = _alpm_filecache_find(handle, filename); - const char *md5sum = alpm_delta_get_md5sum(d); + char *filepath = _alpm_filecache_find(handle, d->delta); - if(test_md5sum(trans, filepath, md5sum) != 0) { + if(test_md5sum(trans, filepath, d->delta_md5) != 0) { errors++; - *data = alpm_list_add(*data, strdup(filename)); + *data = alpm_list_add(*data, strdup(d->delta)); } FREE(filepath); } -- cgit v1.2.3-24-g4f1b From 25b7df4dab61e908a0f86e3aad51f1f5c9ed2ccb Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 16 Jun 2011 11:55:26 -0500 Subject: Make pmgrp_t public Signed-off-by: Dan McGee --- lib/libalpm/alpm.h | 12 +++++++++--- lib/libalpm/group.c | 12 ------------ lib/libalpm/group.h | 7 ------- lib/libalpm/sync.c | 2 +- 4 files changed, 10 insertions(+), 23 deletions(-) (limited to 'lib') diff --git a/lib/libalpm/alpm.h b/lib/libalpm/alpm.h index 17194f0d..d1faf7fe 100644 --- a/lib/libalpm/alpm.h +++ b/lib/libalpm/alpm.h @@ -103,7 +103,6 @@ typedef enum _pgp_verify_t { typedef struct __pmhandle_t pmhandle_t; typedef struct __pmdb_t pmdb_t; typedef struct __pmpkg_t pmpkg_t; -typedef struct __pmgrp_t pmgrp_t; typedef struct __pmtrans_t pmtrans_t; /** Dependency */ @@ -137,6 +136,14 @@ typedef struct _pmfileconflict_t { char *ctarget; } pmfileconflict_t; +/** Package group */ +typedef struct _pmgrp_t { + /** group name */ + char *name; + /** list of pmpkg_t packages */ + alpm_list_t *packages; +} pmgrp_t; + /** Package upgrade delta */ typedef struct _pmdelta_t { /** filename of the delta patch */ @@ -684,8 +691,7 @@ int alpm_db_set_pgp_verify(pmdb_t *db, pgp_verify_t verify); /* * Groups */ -const char *alpm_grp_get_name(const pmgrp_t *grp); -alpm_list_t *alpm_grp_get_pkgs(const pmgrp_t *grp); + alpm_list_t *alpm_find_grp_pkgs(alpm_list_t *dbs, const char *name); /* diff --git a/lib/libalpm/group.c b/lib/libalpm/group.c index 13a216ee..07acfa89 100644 --- a/lib/libalpm/group.c +++ b/lib/libalpm/group.c @@ -52,16 +52,4 @@ void _alpm_grp_free(pmgrp_t *grp) FREE(grp); } -const char SYMEXPORT *alpm_grp_get_name(const pmgrp_t *grp) -{ - ASSERT(grp != NULL, return NULL); - return grp->name; -} - -alpm_list_t SYMEXPORT *alpm_grp_get_pkgs(const pmgrp_t *grp) -{ - ASSERT(grp != NULL, return NULL); - return grp->packages; -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/lib/libalpm/group.h b/lib/libalpm/group.h index c92684e3..f2a67ca9 100644 --- a/lib/libalpm/group.h +++ b/lib/libalpm/group.h @@ -22,13 +22,6 @@ #include "alpm.h" -struct __pmgrp_t { - /** group name */ - char *name; - /** list of pmpkg_t packages */ - alpm_list_t *packages; -}; - pmgrp_t *_alpm_grp_new(const char *name); void _alpm_grp_free(pmgrp_t *grp); diff --git a/lib/libalpm/sync.c b/lib/libalpm/sync.c index 6b3ddfe8..15f135ba 100644 --- a/lib/libalpm/sync.c +++ b/lib/libalpm/sync.c @@ -225,7 +225,7 @@ alpm_list_t SYMEXPORT *alpm_find_grp_pkgs(alpm_list_t *dbs, if(!grp) continue; - for(j = alpm_grp_get_pkgs(grp); j; j = j->next) { + for(j = grp->packages; j; j = j->next) { pmpkg_t *pkg = j->data; if(_alpm_pkg_find(ignorelist, alpm_pkg_get_name(pkg))) { -- cgit v1.2.3-24-g4f1b