1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-08-13 17:03:46 -04:00

pacman: add -n/--native filter to -Q

Signed-off-by: Simon Gomizelj <simongmzlj@gmail.com>
Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
Simon Gomizelj 2012-11-16 01:26:44 -05:00 committed by Allan McRae
parent b1d614a01d
commit fc35b16fd4
4 changed files with 12 additions and 0 deletions

View File

@ -273,6 +273,10 @@ Query Options[[QO]]
database(s). Typically these are packages that were downloaded manually database(s). Typically these are packages that were downloaded manually
and installed with '\--upgrade'. 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>:: *-o, \--owns* <file>::
Search for packages that own the specified file(s). The path can be Search for packages that own the specified file(s). The path can be
relative or absolute and one or more files can be specified. relative or absolute and one or more files can be specified.

View File

@ -51,6 +51,7 @@ typedef struct __config_t {
unsigned short op_q_info; unsigned short op_q_info;
unsigned short op_q_list; unsigned short op_q_list;
unsigned short op_q_foreign; unsigned short op_q_foreign;
unsigned short op_q_native;
unsigned short op_q_unrequired; unsigned short op_q_unrequired;
unsigned short op_q_deps; unsigned short op_q_deps;
unsigned short op_q_explicit; unsigned short op_q_explicit;

View File

@ -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(_(" -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(_(" -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(_(" -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(_(" -o, --owns <file> query the package that owns <file>\n"));
addlist(_(" -p, --file <package> query a package file instead of the database\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")); 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 'k': config->op_q_check = 1; break;
case 'l': config->op_q_list = 1; break; case 'l': config->op_q_list = 1; break;
case 'm': config->op_q_foreign = 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 'o': config->op_q_owns = 1; break;
case 'p': config->op_q_isfile = 1; break; case 'p': config->op_q_isfile = 1; break;
case 'q': config->quiet = 1; break; case 'q': config->quiet = 1; break;
@ -594,6 +596,7 @@ static int parseargs(int argc, char *argv[])
{"check", no_argument, 0, 'k'}, {"check", no_argument, 0, 'k'},
{"list", no_argument, 0, 'l'}, {"list", no_argument, 0, 'l'},
{"foreign", no_argument, 0, 'm'}, {"foreign", no_argument, 0, 'm'},
{"native", no_argument, 0, 'n'},
{"nosave", no_argument, 0, 'n'}, {"nosave", no_argument, 0, 'n'},
{"owns", no_argument, 0, 'o'}, {"owns", no_argument, 0, 'o'},
{"file", no_argument, 0, 'p'}, {"file", no_argument, 0, 'p'},

View File

@ -380,6 +380,10 @@ static int filter(alpm_pkg_t *pkg)
alpm_pkg_get_reason(pkg) != ALPM_PKG_REASON_DEPEND) { alpm_pkg_get_reason(pkg) != ALPM_PKG_REASON_DEPEND) {
return 0; 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 */ /* check if this pkg isn't in a sync DB */
if(config->op_q_foreign && !is_foreign(pkg)) { if(config->op_q_foreign && !is_foreign(pkg)) {
return 0; return 0;