summaryrefslogtreecommitdiffstats
path: root/src/pacman
diff options
context:
space:
mode:
authorSimon Gomizelj <simongmzlj@gmail.com>2012-11-16 07:26:44 +0100
committerAllan McRae <allan@archlinux.org>2012-11-27 06:16:15 +0100
commitfc35b16fd48fd4c6b89826ebe268425600e76f34 (patch)
tree8c552ec9a1bccdb7a0392c77bbe61a45ed684595 /src/pacman
parentb1d614a01db7a89543d96747afde009ec3b6545d (diff)
downloadpacman-fc35b16fd48fd4c6b89826ebe268425600e76f34.tar.gz
pacman-fc35b16fd48fd4c6b89826ebe268425600e76f34.tar.xz
pacman: add -n/--native filter to -Q
Signed-off-by: Simon Gomizelj <simongmzlj@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
Diffstat (limited to 'src/pacman')
-rw-r--r--src/pacman/conf.h1
-rw-r--r--src/pacman/pacman.c3
-rw-r--r--src/pacman/query.c4
3 files changed, 8 insertions, 0 deletions
diff --git a/src/pacman/conf.h b/src/pacman/conf.h
index 69c955ed..aee68597 100644
--- a/src/pacman/conf.h
+++ b/src/pacman/conf.h
@@ -51,6 +51,7 @@ typedef struct __config_t {
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;
diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
index 478196e2..1ca746d7 100644
--- a/src/pacman/pacman.c
+++ b/src/pacman/pacman.c
@@ -142,6 +142,7 @@ static void usage(int op, const char * const myname)
addlist(_(" -k, --check check that the files owned by the package(s) are present\n"));
addlist(_(" -l, --list list the contents of the queried package\n"));
addlist(_(" -m, --foreign list installed packages not found in sync db(s) [filter]\n"));
+ addlist(_(" -n, --native list installed packages only found in sync db(s) [filter]\n"));
addlist(_(" -o, --owns <file> query the package that owns <file>\n"));
addlist(_(" -p, --file <package> query a package file instead of the database\n"));
addlist(_(" -q, --quiet show less information for query and search\n"));
@@ -462,6 +463,7 @@ static int parsearg_query(int opt)
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 'o': config->op_q_owns = 1; break;
case 'p': config->op_q_isfile = 1; break;
case 'q': config->quiet = 1; break;
@@ -594,6 +596,7 @@ static int parseargs(int argc, char *argv[])
{"check", no_argument, 0, 'k'},
{"list", no_argument, 0, 'l'},
{"foreign", no_argument, 0, 'm'},
+ {"native", no_argument, 0, 'n'},
{"nosave", no_argument, 0, 'n'},
{"owns", no_argument, 0, 'o'},
{"file", no_argument, 0, 'p'},
diff --git a/src/pacman/query.c b/src/pacman/query.c
index 398adac4..2736672c 100644
--- a/src/pacman/query.c
+++ b/src/pacman/query.c
@@ -380,6 +380,10 @@ 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)) {
return 0;