X-Git-Url: https://git.librecmc.org/?p=oweals%2Fopkg-lede.git;a=blobdiff_plain;f=libopkg%2Fopkg_cmd.c;h=d2adc3102ff9fe57a7d9ff60dcfcf0f6f241ace3;hp=b98b86fb1ec116ed4ebd49dc245650e8ae832912;hb=a79c1af5c0d3908a3ad30806530c754b42cf80e2;hpb=e62fc971a19b43df377d8beee9e691ab179ca075 diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c index b98b86f..d2adc31 100644 --- a/libopkg/opkg_cmd.c +++ b/libopkg/opkg_cmd.c @@ -27,7 +27,6 @@ #include "opkg_conf.h" #include "opkg_cmd.h" #include "opkg_message.h" -#include "release.h" #include "pkg.h" #include "pkg_dest.h" #include "pkg_parse.h" @@ -48,10 +47,12 @@ static void print_pkg(pkg_t *pkg) { char *version = pkg_version_str_alloc(pkg); + printf("%s - %s", pkg->name, version); + if (conf->size) + printf(" - %lu", pkg->size); if (pkg->description) - printf("%s - %s - %s\n", pkg->name, version, pkg->description); - else - printf("%s - %s\n", pkg->name, version); + printf(" - %s", pkg->description); + printf("\n"); free(version); } @@ -84,6 +85,7 @@ opkg_update_cmd(int argc, char **argv) char *tmp; int err; int failures; + int pkglist_dl_error; char *lists_dir; pkg_src_list_elt_t *iter; pkg_src_t *src; @@ -114,39 +116,6 @@ opkg_update_cmd(int argc, char **argv) } - for (iter = void_list_first(&conf->dist_src_list); iter; iter = void_list_next(&conf->dist_src_list, iter)) { - char *url, *list_file_name; - - src = (pkg_src_t *)iter->data; - - sprintf_alloc(&url, "%s/dists/%s/Release", src->value, src->name); - - sprintf_alloc(&list_file_name, "%s/%s", lists_dir, src->name); - err = opkg_download(url, list_file_name, NULL, NULL, 0); - if (!err) { - opkg_msg(NOTICE, "Downloaded release files for dist %s.\n", - src->name); - release_t *release = release_new(); - err = release_init_from_file(release, list_file_name); - if (!err) { - if (!release_comps_supported(release, src->extra_data)) - err = -1; - } - if (!err) { - err = release_download(release, src, lists_dir, tmp); - } - release_deinit(release); - if (err) - unlink(list_file_name); - } - - if (err) - failures++; - - free(list_file_name); - free(url); - } - for (iter = void_list_first(&conf->pkg_src_list); iter; iter = void_list_next(&conf->pkg_src_list, iter)) { char *url, *list_file_name; @@ -162,38 +131,19 @@ opkg_update_cmd(int argc, char **argv) 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) { + pkglist_dl_error = 0; + if (opkg_download(url, list_file_name, NULL, NULL, 0)) { failures++; + pkglist_dl_error = 1; + opkg_msg(NOTICE, "*** Failed to download the package list from %s\n\n", + url); } else { - opkg_msg(NOTICE, "Updated list of available packages in %s.\n", + opkg_msg(NOTICE, "Updated list of available packages in %s\n", list_file_name); } free(url); -#if defined(HAVE_GPGME) || defined(HAVE_OPENSSL) - if (conf->check_signature) { +#if defined(HAVE_GPGME) || defined(HAVE_OPENSSL) || defined(HAVE_USIGN) + if (pkglist_dl_error == 0 && conf->check_signature) { /* download detached signitures to verify the package lists */ /* get the url for the sig file */ if (src->extra_data) /* debian style? */ @@ -211,7 +161,7 @@ opkg_update_cmd(int argc, char **argv) err = opkg_download(url, tmp_file_name, NULL, NULL, 0); if (err) { failures++; - opkg_msg(NOTICE, "Signature check failed.\n"); + opkg_msg(NOTICE, "Signature file download failed.\n"); } else { err = opkg_verify_file (list_file_name, tmp_file_name); if (err == 0) @@ -219,7 +169,7 @@ opkg_update_cmd(int argc, char **argv) else opkg_msg(NOTICE, "Signature check failed.\n"); } - if (err) { + if (err && !conf->force_signature) { /* The signature was wrong so delete it */ opkg_msg(NOTICE, "Remove wrong Signature file.\n"); unlink (tmp_file_name); @@ -594,7 +544,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 +560,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 +570,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 +1225,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},