opkg: fix the -force_space option
[oweals/opkg-lede.git] / libopkg / opkg_cmd.c
index 043536c025fdbc329ef959123cf83303af879068..99ee64d510340d075f3f486385d5bdd87dd89d3e 100644 (file)
@@ -141,23 +141,6 @@ opkg_cmd_t *opkg_cmd_find(const char *name)
      return NULL;
 }
 
-void opkg_print_error_list (opkg_conf_t *conf)
-{
-  if ( error_list ) {
-     reverse_error_list(&error_list);
-
-     printf ("Collected errors:\n");
-     /* Here we print the errors collected and free the list */
-     while (error_list != NULL) {
-           printf (" * %s", error_list->errmsg);
-           error_list = error_list->next;
-
-     }
-     free_error_list();
-  }
-
-}
-
 int opkg_cmd_exec(opkg_cmd_t *cmd, opkg_conf_t *conf, int argc, const char **argv, void *userdata)
 {
        int result;
@@ -166,11 +149,8 @@ int opkg_cmd_exec(opkg_cmd_t *cmd, opkg_conf_t *conf, int argc, const char **arg
 
        result = (cmd->fun)(conf, argc, argv);
 
-        if ( result != 0 && !error_list) {
-           opkg_message(conf, OPKG_NOTICE, "An error ocurred, return value: %d.\n", result);
-        }
-
-        opkg_print_error_list (conf);
+        print_error_list();
+       free_error_list();
 
        p_userdata = NULL;
        return result;
@@ -249,6 +229,7 @@ static int opkg_update_cmd(opkg_conf_t *conf, int argc, char **argv)
                        fclose (out);
                   unlink (tmp_file_name);
              }
+             free(tmp_file_name);
          } else
              err = opkg_download(conf, url, list_file_name, NULL, NULL);
          if (err) {
@@ -259,8 +240,7 @@ static int opkg_update_cmd(opkg_conf_t *conf, int argc, char **argv)
                            list_file_name);
          }
          free(url);
-
-#ifdef HAVE_GPGME
+#if defined(HAVE_GPGME) || defined(HAVE_OPENSSL)
           if (conf->check_signature) {
               /* download detached signitures to verify the package lists */
               /* get the url for the sig file */
@@ -273,7 +253,8 @@ static int opkg_update_cmd(opkg_conf_t *conf, int argc, char **argv)
               /* create temporary file for it */
               char *tmp_file_name;
 
-              sprintf_alloc (&tmp_file_name, "%s/%s", tmp, "Packages.sig");
+              /* Put the signature in the right place */
+              sprintf_alloc (&tmp_file_name, "%s/%s.sig", lists_dir, src->name);
 
               err = opkg_download(conf, url, tmp_file_name, NULL, NULL);
               if (err) {
@@ -287,7 +268,8 @@ static int opkg_update_cmd(opkg_conf_t *conf, int argc, char **argv)
                   else
                       opkg_message (conf, OPKG_NOTICE, "Signature check failed\n");
               }
-              unlink (tmp_file_name);
+              /* We shouldn't unlink the signature ! */
+              // unlink (tmp_file_name);
               free (tmp_file_name);
               free (url);
           }
@@ -379,6 +361,7 @@ static int opkg_finalize_intercepts(opkg_intercept_t ctx)
            }
            free (path);
        }
+        closedir(dir);
     } else
        perror (ctx->statedir);
        
@@ -449,7 +432,7 @@ static int opkg_recurse_pkgs_in_order(opkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *
             dependents = abpkg->provided_by->pkgs;
             l = 0;
             if (dependents != NULL)
-                while (dependents [l] != NULL && l < abpkg->provided_by->len) {
+                while (l < abpkg->provided_by->len && dependents[l] != NULL) {
                     opkg_message(conf, OPKG_INFO,
                                  "  Descending on pkg: %s\n", 
                                  dependents [l]->name);
@@ -784,6 +767,8 @@ static int opkg_list_installed_cmd(opkg_conf_t *conf, int argc, char **argv)
          }
      }
 
+     pkg_vec_free(available);
+
      return 0;
 }
 
@@ -815,7 +800,7 @@ static int opkg_info_status_cmd(opkg_conf_t *conf, int argc, char **argv, int in
      char *pkg_name = NULL;
      char **pkg_fields = NULL;
      int n_fields = 0;
-     char *buff ; 
+     char *buff = NULL
 
      if (argc > 0) {
          pkg_name = argv[0];
@@ -847,6 +832,7 @@ static int opkg_info_status_cmd(opkg_conf_t *conf, int argc, char **argv, int in
    We need to free it :)  ( Thanks florian for seeing the error )
 */
                free(buff);
+               buff = NULL;
           }
          if (conf->verbosity > 1) {
               conffile_list_elt_t *iter;