libopkg: remove unused progress parameters from opkg_download()
[oweals/opkg-lede.git] / libopkg / opkg_cmd.c
index c50d8f9cf8f72582bc20c55da8510d29f33efb5f..7d5bd04a8d45f06c7f3a9ee064eb24581249c755 100644 (file)
@@ -15,8 +15,6 @@
    General Public License for more details.
 */
 
    General Public License for more details.
 */
 
-#include "config.h"
-
 #include <stdio.h>
 #include <dirent.h>
 #include <glob.h>
 #include <stdio.h>
 #include <dirent.h>
 #include <glob.h>
@@ -132,7 +130,7 @@ static int opkg_update_cmd(int argc, char **argv)
 
                sprintf_alloc(&list_file_name, "%s/%s", lists_dir, src->name);
                pkglist_dl_error = 0;
 
                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)) {
+               if (opkg_download(url, list_file_name, 0)) {
                        failures++;
                        pkglist_dl_error = 1;
                        opkg_msg(NOTICE,
                        failures++;
                        pkglist_dl_error = 1;
                        opkg_msg(NOTICE,
@@ -144,7 +142,7 @@ static int opkg_update_cmd(int argc, char **argv)
                                 list_file_name);
                }
                free(url);
                                 list_file_name);
                }
                free(url);
-#if defined(HAVE_GPGME) || defined(HAVE_OPENSSL) || defined(HAVE_USIGN)
+#if 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 (pkglist_dl_error == 0 && conf->check_signature) {
                        /* download detached signitures to verify the package lists */
                        /* get the url for the sig file */
@@ -162,7 +160,7 @@ static int opkg_update_cmd(int argc, char **argv)
                        sprintf_alloc(&tmp_file_name, "%s/%s.sig", lists_dir,
                                      src->name);
 
                        sprintf_alloc(&tmp_file_name, "%s/%s.sig", lists_dir,
                                      src->name);
 
-                       err = opkg_download(url, tmp_file_name, NULL, NULL, 0);
+                       err = opkg_download(url, tmp_file_name, 0);
                        if (err) {
                                failures++;
                                opkg_msg(NOTICE,
                        if (err) {
                                failures++;
                                opkg_msg(NOTICE,
@@ -216,13 +214,19 @@ static opkg_intercept_t opkg_prep_intercepts(void)
 
        ctx = xcalloc(1, sizeof(*ctx));
        ctx->oldpath = xstrdup(getenv("PATH"));
 
        ctx = xcalloc(1, sizeof(*ctx));
        ctx->oldpath = xstrdup(getenv("PATH"));
-       sprintf_alloc(&newpath, "%s/opkg/intercept:%s", DATADIR, ctx->oldpath);
+
+       sprintf_alloc(&newpath, "%s/opkg/intercept:%s", DATADIR,
+                     ctx->oldpath ? ctx->oldpath : PATH_SPEC);
+
        sprintf_alloc(&ctx->statedir, "%s/opkg-intercept-XXXXXX",
        sprintf_alloc(&ctx->statedir, "%s/opkg-intercept-XXXXXX",
-                     conf->tmp_dir);
+                     conf->tmp_dir);
 
        if (mkdtemp(ctx->statedir) == NULL) {
                opkg_perror(ERROR, "Failed to make temp dir %s", ctx->statedir);
 
        if (mkdtemp(ctx->statedir) == NULL) {
                opkg_perror(ERROR, "Failed to make temp dir %s", ctx->statedir);
-               free(ctx->oldpath);
+
+               if (ctx->oldpath)
+                       free(ctx->oldpath);
+
                free(ctx->statedir);
                free(newpath);
                free(ctx);
                free(ctx->statedir);
                free(newpath);
                free(ctx);
@@ -241,8 +245,13 @@ static int opkg_finalize_intercepts(opkg_intercept_t ctx)
        DIR *dir;
        int err = 0;
 
        DIR *dir;
        int err = 0;
 
-       setenv("PATH", ctx->oldpath, 1);
-       free(ctx->oldpath);
+       if (ctx->oldpath) {
+               setenv("PATH", ctx->oldpath, 1);
+               free(ctx->oldpath);
+       }
+       else {
+               unsetenv("PATH");
+       }
 
        dir = opendir(ctx->statedir);
        if (dir) {
 
        dir = opendir(ctx->statedir);
        if (dir) {
@@ -256,7 +265,7 @@ static int opkg_finalize_intercepts(opkg_intercept_t ctx)
                        sprintf_alloc(&path, "%s/%s", ctx->statedir,
                                      de->d_name);
                        if (access(path, X_OK) == 0) {
                        sprintf_alloc(&path, "%s/%s", ctx->statedir,
                                      de->d_name);
                        if (access(path, X_OK) == 0) {
-                               const char *argv[] = { "sh", "-c", path, NULL };
+                               const char *argv[] = { "/bin/sh", "-c", path, NULL };
                                xsystem(argv);
                        }
                        free(path);
                                xsystem(argv);
                        }
                        free(path);
@@ -435,14 +444,6 @@ static int opkg_install_cmd(int argc, char **argv)
        char *arg;
        int err = 0;
 
        char *arg;
        int err = 0;
 
-       if (conf->force_reinstall) {
-               int saved_force_depends = conf->force_depends;
-               conf->force_depends = 1;
-               (void)opkg_remove_cmd(argc, argv);
-               conf->force_depends = saved_force_depends;
-               conf->force_reinstall = 0;
-       }
-
        signal(SIGINT, sigint_handler);
 
        /*
        signal(SIGINT, sigint_handler);
 
        /*
@@ -455,6 +456,18 @@ static int opkg_install_cmd(int argc, char **argv)
                if (opkg_prepare_url_for_install(arg, &argv[i]))
                        return -1;
        }
                if (opkg_prepare_url_for_install(arg, &argv[i]))
                        return -1;
        }
+
+       pkg_hash_load_package_details();
+       pkg_hash_load_status_files();
+
+       if (conf->force_reinstall) {
+               int saved_force_depends = conf->force_depends;
+               conf->force_depends = 1;
+               (void)opkg_remove_cmd(argc, argv);
+               conf->force_depends = saved_force_depends;
+               conf->force_reinstall = 0;
+       }
+
        pkg_info_preinstall_check();
 
        for (i = 0; i < argc; i++) {
        pkg_info_preinstall_check();
 
        for (i = 0; i < argc; i++) {
@@ -665,7 +678,7 @@ static int opkg_list_upgradable_cmd(int argc, char **argv)
        char *old_v, *new_v;
        for (node = active_list_next(head, head); node;
             node = active_list_next(head, node)) {
        char *old_v, *new_v;
        for (node = active_list_next(head, head); node;
             node = active_list_next(head, node)) {
-               _old_pkg = list_entry(node, pkg_t, list);
+               _old_pkg = node->pkg;
                _new_pkg =
                    pkg_hash_fetch_best_installation_candidate_by_name
                    (_old_pkg->name);
                _new_pkg =
                    pkg_hash_fetch_best_installation_candidate_by_name
                    (_old_pkg->name);
@@ -1031,7 +1044,7 @@ opkg_what_depends_conflicts_cmd(enum depend_type what_field_type, int recursive,
 
                        deps = pkg_get_ptr(pkg, (what_field_type == CONFLICTS) ? PKG_CONFLICTS : PKG_DEPENDS);
 
 
                        deps = pkg_get_ptr(pkg, (what_field_type == CONFLICTS) ? PKG_CONFLICTS : PKG_DEPENDS);
 
-                       for (cdep = deps; cdep->type; cdep++) {
+                       for (cdep = deps; cdep && cdep->type; cdep++) {
                                if (what_field_type != cdep->type)
                                        continue;
 
                                if (what_field_type != cdep->type)
                                        continue;
 
@@ -1134,7 +1147,7 @@ opkg_what_provides_replaces_cmd(enum what_field_type what_field_type, int argc,
                                abpkgs = pkg_get_ptr(pkg, (what_field_type == WHATPROVIDES) ? PKG_PROVIDES : PKG_REPLACES);
 
                                while (abpkgs && *abpkgs) {
                                abpkgs = pkg_get_ptr(pkg, (what_field_type == WHATPROVIDES) ? PKG_PROVIDES : PKG_REPLACES);
 
                                while (abpkgs && *abpkgs) {
-                                       apkg = *abpkgs;
+                                       apkg = *abpkgs++;
 
                                        if (fnmatch(target, apkg->name, conf->nocase))
                                                continue;
 
                                        if (fnmatch(target, apkg->name, conf->nocase))
                                                continue;
@@ -1146,7 +1159,6 @@ opkg_what_provides_replaces_cmd(enum what_field_type what_field_type, int argc,
                                                opkg_msg(NOTICE, "\t%s %s\n", rel_str, apkg->name);
 
                                        opkg_message(NOTICE, "\n");
                                                opkg_msg(NOTICE, "\t%s %s\n", rel_str, apkg->name);
 
                                        opkg_message(NOTICE, "\n");
-                                       abpkgs++;
                                }
                        }
                }
                                }
                        }
                }