libopkg: clarify messages and errors related to downloads
[oweals/opkg-lede.git] / libopkg / opkg_cmd.c
index d1e91cbeae54bfdad58b0dfcedfcb63f79d0e065..d2adc3102ff9fe57a7d9ff60dcfcf0f6f241ace3 100644 (file)
@@ -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,15 +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);
+         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? */
@@ -188,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)
@@ -196,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);