From: Jo-Philipp Wich Date: Fri, 10 Feb 2017 09:18:18 +0000 (+0100) Subject: cli: implement find command X-Git-Url: https://git.librecmc.org/?p=oweals%2Fopkg-lede.git;a=commitdiff_plain;h=ebecbc302f97b04c2b5bfedd00030d1cfd700607 cli: implement find command Introduce a new opkg "find" command which matches both the name and the description of packages. Signed-off-by: Jo-Philipp Wich --- diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c index b98b86f..1a8f857 100644 --- a/libopkg/opkg_cmd.c +++ b/libopkg/opkg_cmd.c @@ -594,7 +594,7 @@ opkg_download_cmd(int argc, char **argv) static int -opkg_list_cmd(int argc, char **argv) +opkg_list_find_cmd(int argc, char **argv, int use_desc) { int i; pkg_vec_t *available; @@ -610,7 +610,8 @@ opkg_list_cmd(int argc, char **argv) for (i=0; i < available->len; i++) { pkg = available->pkgs[i]; /* if we have package name or pattern and pkg does not match, then skip it */ - if (pkg_name && fnmatch(pkg_name, pkg->name, conf->nocase)) + if (pkg_name && fnmatch(pkg_name, pkg->name, conf->nocase) && + (!use_desc || !pkg->description || fnmatch(pkg_name, pkg->description, conf->nocase))) continue; print_pkg(pkg); } @@ -619,6 +620,18 @@ opkg_list_cmd(int argc, char **argv) return 0; } +static int +opkg_list_cmd(int argc, char **argv) +{ + return opkg_list_find_cmd(argc, argv, 0); +} + +static int +opkg_find_cmd(int argc, char **argv) +{ + return opkg_list_find_cmd(argc, argv, 1); +} + static int opkg_list_installed_cmd(int argc, char **argv) @@ -1262,6 +1275,7 @@ static opkg_cmd_t cmds[] = { {"configure", 0, (opkg_cmd_fun_t)opkg_configure_cmd, PFM_DESCRIPTION|PFM_SOURCE}, {"files", 1, (opkg_cmd_fun_t)opkg_files_cmd, PFM_DESCRIPTION|PFM_SOURCE}, {"search", 1, (opkg_cmd_fun_t)opkg_search_cmd, PFM_DESCRIPTION|PFM_SOURCE}, + {"find", 1, (opkg_cmd_fun_t)opkg_find_cmd, PFM_SOURCE}, {"download", 1, (opkg_cmd_fun_t)opkg_download_cmd, PFM_DESCRIPTION|PFM_SOURCE}, {"compare_versions", 1, (opkg_cmd_fun_t)opkg_compare_versions_cmd, PFM_DESCRIPTION|PFM_SOURCE}, {"compare-versions", 1, (opkg_cmd_fun_t)opkg_compare_versions_cmd, PFM_DESCRIPTION|PFM_SOURCE}, diff --git a/src/opkg-cl.c b/src/opkg-cl.c index 1e7642f..5f66d28 100644 --- a/src/opkg-cl.c +++ b/src/opkg-cl.c @@ -246,6 +246,7 @@ usage() printf("\tlist-changed-conffiles List user modified configuration files\n"); printf("\tfiles List files belonging to \n"); printf("\tsearch List package providing \n"); + printf("\tfind List packages whose name or description matches \n"); printf("\tinfo [pkg|regexp] Display all info for \n"); printf("\tstatus [pkg|regexp] Display all status for \n"); printf("\tdownload Download to current directory\n");