summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/pacman.8.txt4
-rw-r--r--src/pacman/conf.h1
-rw-r--r--src/pacman/pacman.c3
-rw-r--r--src/pacman/query.c4
4 files changed, 12 insertions, 0 deletions
diff --git a/doc/pacman.8.txt b/doc/pacman.8.txt
index 24c22431..de28b9ca 100644
--- a/doc/pacman.8.txt
+++ b/doc/pacman.8.txt
@@ -273,6 +273,10 @@ Query Options[[QO]]
database(s). Typically these are packages that were downloaded manually
and installed with '\--upgrade'.
+*-n, \--native*::
+ Restrict or filter output to packages that are found in the sync
+ database(s). This is the inverse filter of '\--foreign'.
+
*-o, \--owns* <file>::
Search for packages that own the specified file(s). The path can be
relative or absolute and one or more files can be specified.
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;