| 1 | --- a/libopkg/opkg_cmd.c |
| 2 | +++ b/libopkg/opkg_cmd.c |
| 3 | @@ -594,7 +594,7 @@ opkg_download_cmd(int argc, char **argv) |
| 4 | |
| 5 | |
| 6 | static int |
| 7 | -opkg_list_cmd(int argc, char **argv) |
| 8 | +opkg_list_find_cmd(int argc, char **argv, int use_desc) |
| 9 | { |
| 10 | int i; |
| 11 | pkg_vec_t *available; |
| 12 | @@ -610,7 +610,8 @@ opkg_list_cmd(int argc, char **argv) |
| 13 | for (i=0; i < available->len; i++) { |
| 14 | pkg = available->pkgs[i]; |
| 15 | /* if we have package name or pattern and pkg does not match, then skip it */ |
| 16 | - if (pkg_name && fnmatch(pkg_name, pkg->name, conf->nocase)) |
| 17 | + if (pkg_name && fnmatch(pkg_name, pkg->name, conf->nocase) && |
| 18 | + (!use_desc || !pkg->description || fnmatch(pkg_name, pkg->description, conf->nocase))) |
| 19 | continue; |
| 20 | print_pkg(pkg); |
| 21 | } |
| 22 | @@ -619,6 +620,18 @@ opkg_list_cmd(int argc, char **argv) |
| 23 | return 0; |
| 24 | } |
| 25 | |
| 26 | +static int |
| 27 | +opkg_list_cmd(int argc, char **argv) |
| 28 | +{ |
| 29 | + return opkg_list_find_cmd(argc, argv, 0); |
| 30 | +} |
| 31 | + |
| 32 | +static int |
| 33 | +opkg_find_cmd(int argc, char **argv) |
| 34 | +{ |
| 35 | + return opkg_list_find_cmd(argc, argv, 1); |
| 36 | +} |
| 37 | + |
| 38 | |
| 39 | static int |
| 40 | opkg_list_installed_cmd(int argc, char **argv) |
| 41 | @@ -1262,6 +1275,7 @@ static opkg_cmd_t cmds[] = { |
| 42 | {"configure", 0, (opkg_cmd_fun_t)opkg_configure_cmd, PFM_DESCRIPTION|PFM_SOURCE}, |
| 43 | {"files", 1, (opkg_cmd_fun_t)opkg_files_cmd, PFM_DESCRIPTION|PFM_SOURCE}, |
| 44 | {"search", 1, (opkg_cmd_fun_t)opkg_search_cmd, PFM_DESCRIPTION|PFM_SOURCE}, |
| 45 | + {"find", 1, (opkg_cmd_fun_t)opkg_find_cmd, PFM_SOURCE}, |
| 46 | {"download", 1, (opkg_cmd_fun_t)opkg_download_cmd, PFM_DESCRIPTION|PFM_SOURCE}, |
| 47 | {"compare_versions", 1, (opkg_cmd_fun_t)opkg_compare_versions_cmd, PFM_DESCRIPTION|PFM_SOURCE}, |
| 48 | {"compare-versions", 1, (opkg_cmd_fun_t)opkg_compare_versions_cmd, PFM_DESCRIPTION|PFM_SOURCE}, |
| 49 | --- a/src/opkg-cl.c |
| 50 | +++ b/src/opkg-cl.c |
| 51 | @@ -246,6 +246,7 @@ usage() |
| 52 | printf("\tlist-changed-conffiles List user modified configuration files\n"); |
| 53 | printf("\tfiles <pkg> List files belonging to <pkg>\n"); |
| 54 | printf("\tsearch <file|regexp> List package providing <file>\n"); |
| 55 | + printf("\tfind <regexp> List packages whose name or description matches <regexp>\n"); |
| 56 | printf("\tinfo [pkg|regexp] Display all info for <pkg>\n"); |
| 57 | printf("\tstatus [pkg|regexp] Display all status for <pkg>\n"); |
| 58 | printf("\tdownload <pkg> Download <pkg> to current directory\n"); |
| 59 | |