sprintf_alloc(&url, "%s/%s", src->value, src->gzip ? "Packages.gz" : "Packages");
sprintf_alloc(&list_file_name, "%s/%s", lists_dir, src->name);
- if (src->gzip) {
- char *tmp_file_name;
- FILE *in, *out;
-
- sprintf_alloc (&tmp_file_name, "%s/%s.gz", tmp, src->name);
- err = opkg_download(url, tmp_file_name, NULL, NULL, 0);
- if (err == 0) {
- opkg_msg(NOTICE, "Inflating %s.\n", url);
- in = fopen (tmp_file_name, "r");
- out = fopen (list_file_name, "w");
- if (in && out)
- unzip (in, out);
- else
- err = 1;
- if (in)
- fclose (in);
- if (out)
- fclose (out);
- unlink (tmp_file_name);
- }
- free(tmp_file_name);
- } else
- err = opkg_download(url, list_file_name, NULL, NULL, 0);
- if (err) {
+ if (opkg_download(url, list_file_name, NULL, NULL, 0)) {
failures++;
} else {
opkg_msg(NOTICE, "Updated list of available packages in %s.\n",
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;
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);
}
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)
{"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},