summaryrefslogtreecommitdiff
path: root/package/opkg/patches/060-add-find-command.patch
blob: 219df1018705f1d531b652644b8517a732123118 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
--- 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;
@@ -612,6 +612,9 @@ opkg_list_cmd(int argc, char **argv)
 	  /* 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))
 	       continue;
+	  if (pkg_name && use_desc && pkg->description &&
+	      fnmatch(pkg_name, pkg->description, conf->nocase))
+	       continue;
           print_pkg(pkg);
      }
      pkg_vec_free(available);
@@ -619,6 +622,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 +1277,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},
--- 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 <pkg>		List files belonging to <pkg>\n");
 	printf("\tsearch <file|regexp>	List package providing <file>\n");
+	printf("\tfind <regexp>		List packages whose name or description matches <regexp>\n");
 	printf("\tinfo [pkg|regexp]	Display all info for <pkg>\n");
 	printf("\tstatus [pkg|regexp]	Display all status for <pkg>\n");
 	printf("\tdownload <pkg>		Download <pkg> to current directory\n");