On 14/12/12 01:06, Simon Gomizelj wrote: > Also fix a small bug where pacman won't check if the sync dbs are first > downloaded when invoked with --native (it should).
I am missing where this is fixed... Can you give me a pointer so I can decided whether that should be a separate patch. > Signed-off-by: Simon Gomizelj <[email protected]> > --- @Dave - I think this addresses all your comments from the previous version. Do I get an ack from you? Also, do we want to do the same for --deps/--explicit. One small comment below. > src/pacman/conf.h | 11 +++++++++-- > src/pacman/pacman.c | 4 ++-- > src/pacman/query.c | 21 ++++++--------------- > 3 files changed, 17 insertions(+), 19 deletions(-) > > diff --git a/src/pacman/conf.h b/src/pacman/conf.h > index aee6859..5ce0fb1 100644 > --- a/src/pacman/conf.h > +++ b/src/pacman/conf.h > @@ -50,8 +50,6 @@ typedef struct __config_t { > unsigned short op_q_isfile; > unsigned short op_q_info; > unsigned short op_q_list; > - unsigned short op_q_foreign; > - unsigned short op_q_native; > unsigned short op_q_unrequired; > unsigned short op_q_deps; > unsigned short op_q_explicit; > @@ -60,6 +58,7 @@ typedef struct __config_t { > unsigned short op_q_changelog; > unsigned short op_q_upgrade; > unsigned short op_q_check; > + unsigned short op_q_locality; > > unsigned short op_s_clean; > unsigned short op_s_downloadonly; > @@ -137,6 +136,14 @@ enum { > PM_CLEAN_KEEPCUR = (1 << 1) > }; > > +/** package locality */ > +enum { > + PKG_LOCALITY_UNKNOWN = 0, > + PKG_LOCALITY_LOCAL = (1 << 0), > + PKG_LOCALITY_FOREIGN = (1 << 1) > +}; > + Every time I look at this I think "a package can only be local or foreign. There is no unknown. Would PKG_LOCALITY_UNSET be clearer? > + > /* global config variable */ > extern config_t *config; > > diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c > index 1ca746d..5dccad6 100644 > --- a/src/pacman/pacman.c > +++ b/src/pacman/pacman.c > @@ -462,8 +462,8 @@ static int parsearg_query(int opt) > case 'i': (config->op_q_info)++; break; > case 'k': config->op_q_check = 1; break; > case 'l': config->op_q_list = 1; break; > - case 'm': config->op_q_foreign = 1; break; > - case 'n': config->op_q_native = 1; break; > + case 'm': config->op_q_locality |= PKG_LOCALITY_LOCAL; break; > + case 'n': config->op_q_locality |= PKG_LOCALITY_FOREIGN; break; > case 'o': config->op_q_owns = 1; break; > case 'p': config->op_q_isfile = 1; break; > case 'q': config->quiet = 1; break; > diff --git a/src/pacman/query.c b/src/pacman/query.c > index 2736672..6d4739a 100644 > --- a/src/pacman/query.c > +++ b/src/pacman/query.c > @@ -337,25 +337,20 @@ static int query_group(alpm_list_t *targets) > return ret; > } > > -static int is_foreign(alpm_pkg_t *pkg) > +static unsigned short pkg_get_locality(alpm_pkg_t *pkg) > { > const char *pkgname = alpm_pkg_get_name(pkg); > alpm_list_t *j; > alpm_list_t *sync_dbs = alpm_get_syncdbs(config->handle); > > - int match = 0; > for(j = sync_dbs; j; j = alpm_list_next(j)) { > alpm_db_t *db = j->data; > alpm_pkg_t *findpkg = alpm_db_get_pkg(db, pkgname); > if(findpkg) { > - match = 1; > - break; > + return PKG_LOCALITY_LOCAL; > } > } > - if(match == 0) { > - return 1; > - } > - return 0; > + return PKG_LOCALITY_FOREIGN; > } > > static int is_unrequired(alpm_pkg_t *pkg) > @@ -380,12 +375,8 @@ static int filter(alpm_pkg_t *pkg) > alpm_pkg_get_reason(pkg) != ALPM_PKG_REASON_DEPEND) { > return 0; > } > - /* check if this pkg is in a sync DB */ > - if(config->op_q_native && is_foreign(pkg)) { > - return 0; > - } > - /* check if this pkg isn't in a sync DB */ > - if(config->op_q_foreign && !is_foreign(pkg)) { > + /* check if this pkg is or isn't in a sync DB */ > + if(config->op_q_locality && config->op_q_locality & > pkg_get_locality(pkg)) { > return 0; > } > /* check if this pkg is unrequired */ > @@ -507,7 +498,7 @@ int pacman_query(alpm_list_t *targets) > return ret; > } > > - if(config->op_q_foreign || config->op_q_upgrade) { > + if(config->op_q_locality || config->op_q_upgrade) { > if(check_syncdbs(1, 1)) { > return 1; > } >
