libopkg: support passing callbacks to feed parsing functions
[project/opkg-lede.git] / libopkg / opkg_cmd.c
index 2ef2ff4a5b6b47531afbd8438cd0a2e512f00219..8de22f3ab06819b12434265e159a3fa1e08530e8 100644 (file)
@@ -130,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;
-               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,
@@ -160,7 +160,7 @@ static int opkg_update_cmd(int argc, char **argv)
                        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,
@@ -458,7 +458,7 @@ static int opkg_install_cmd(int argc, char **argv)
        }
 
        pkg_hash_load_package_details();
-       pkg_hash_load_status_files();
+       pkg_hash_load_status_files(NULL, NULL);
 
        if (conf->force_reinstall) {
                int saved_force_depends = conf->force_depends;
@@ -1217,12 +1217,21 @@ static int opkg_search_cmd(int argc, char **argv)
 
 static int opkg_compare_versions_cmd(int argc, char **argv)
 {
+       int rc;
+       pkg_t *p1, *p2;
+
        if (argc == 3) {
                /* this is a bit gross */
-               struct pkg p1, p2;
-               parse_version(&p1, argv[0]);
-               parse_version(&p2, argv[2]);
-               return pkg_version_satisfied(&p1, &p2, argv[1]);
+               p1 = pkg_new();
+               p2 = pkg_new();
+               parse_version(p1, argv[0]);
+               parse_version(p2, argv[2]);
+               rc = pkg_version_satisfied(p1, p2, argv[1]);
+               pkg_deinit(p1);
+               pkg_deinit(p2);
+               free(p1);
+               free(p2);
+               return rc ? 0 : 1;
        } else {
                opkg_msg(ERROR,
                         "opkg compare_versions <v1> <op> <v2>\n"
@@ -1280,10 +1289,8 @@ static opkg_cmd_t cmds[] = {
        {"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},
+       {"compare_versions", 1, (opkg_cmd_fun_t) opkg_compare_versions_cmd, 0},
+       {"compare-versions", 1, (opkg_cmd_fun_t) opkg_compare_versions_cmd, 0},
        {"print-architecture", 0, (opkg_cmd_fun_t) opkg_print_architecture_cmd,
         PFM_DESCRIPTION | PFM_SOURCE},
        {"print_architecture", 0, (opkg_cmd_fun_t) opkg_print_architecture_cmd,