diff options
author | Simon Gomizelj <simongmzlj@gmail.com> | 2012-11-16 07:26:44 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2012-11-27 06:16:15 +0100 |
commit | fc35b16fd48fd4c6b89826ebe268425600e76f34 (patch) | |
tree | 8c552ec9a1bccdb7a0392c77bbe61a45ed684595 | |
parent | b1d614a01db7a89543d96747afde009ec3b6545d (diff) | |
download | pacman-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>
-rw-r--r-- | doc/pacman.8.txt | 4 | ||||
-rw-r--r-- | src/pacman/conf.h | 1 | ||||
-rw-r--r-- | src/pacman/pacman.c | 3 | ||||
-rw-r--r-- | src/pacman/query.c | 4 |
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; |