libopkg: implement lightweight package listing logic
[project/opkg-lede.git] / src / opkg-cl.c
index 29072313929f9602bb97bb6fd6bf0fefcdd6cf68..40a75027e49308995d743daa4b57bd6e25baac93 100644 (file)
@@ -20,8 +20,6 @@
 */
 
 #define _GNU_SOURCE
-#include "config.h"
-
 #include <stdio.h>
 #include <getopt.h>
 #include <fnmatch.h>
@@ -54,6 +52,7 @@ enum {
        ARGS_OPT_AUTOREMOVE,
        ARGS_OPT_CACHE,
        ARGS_OPT_FORCE_SIGNATURE,
+       ARGS_OPT_NO_CHECK_CERTIFICATE,
        ARGS_OPT_SIZE,
 };
 
@@ -93,6 +92,8 @@ static struct option long_options[] = {
        {"force_checksum", 0, 0, ARGS_OPT_FORCE_CHECKSUM},
        {"force-signature", 0, 0, ARGS_OPT_FORCE_SIGNATURE},
        {"force_signature", 0, 0, ARGS_OPT_FORCE_SIGNATURE},
+       {"no-check-certificate", 0, 0, ARGS_OPT_NO_CHECK_CERTIFICATE},
+       {"no_check_certificate", 0, 0, ARGS_OPT_NO_CHECK_CERTIFICATE},
        {"noaction", 0, 0, ARGS_OPT_NOACTION},
        {"download-only", 0, 0, ARGS_OPT_DOWNLOAD_ONLY},
        {"nodeps", 0, 0, ARGS_OPT_NODEPS},
@@ -228,6 +229,9 @@ static int args_parse(int argc, char *argv[])
                case ARGS_OPT_FORCE_SIGNATURE:
                        conf->force_signature = 1;
                        break;
+               case ARGS_OPT_NO_CHECK_CERTIFICATE:
+                       conf->no_check_certificate = 1;
+                       break;
                case ':':
                        parse_err = -1;
                        break;
@@ -337,6 +341,7 @@ static void usage()
        printf
            ("\t--force-remove  Remove package even if prerm script fails\n");
        printf("\t--force-checksum      Don't fail on checksum mismatches\n");
+       printf("\t--no-check-certificate Don't validate SSL certificates\n");
        printf("\t--noaction            No action -- test only\n");
        printf("\t--download-only       No action -- download only\n");
        printf("\t--nodeps              Do not follow dependencies\n");
@@ -393,7 +398,9 @@ int main(int argc, char *argv[])
            !strcmp(cmd_name, "print-architecture") ||
            !strcmp(cmd_name, "print_architecture") ||
            !strcmp(cmd_name, "print-installation-architecture") ||
-           !strcmp(cmd_name, "print_installation_architecture"))
+           !strcmp(cmd_name, "print_installation_architecture") ||
+           !strcmp(cmd_name, "compare_versions") ||
+           !strcmp(cmd_name, "compare-versions"))
                nocheckfordirorfile = 1;
 
        if (!strcmp(cmd_name, "flag") ||
@@ -402,13 +409,13 @@ int main(int argc, char *argv[])
            !strcmp(cmd_name, "remove") ||
            !strcmp(cmd_name, "files") ||
            !strcmp(cmd_name, "search") ||
-           !strcmp(cmd_name, "compare_versions") ||
-           !strcmp(cmd_name, "compare-versions") ||
+           !strcmp(cmd_name, "list") ||
            !strcmp(cmd_name, "list_installed") ||
            !strcmp(cmd_name, "list-installed") ||
            !strcmp(cmd_name, "list_changed_conffiles") ||
            !strcmp(cmd_name, "list-changed-conffiles") ||
-           !strcmp(cmd_name, "status"))
+           !strcmp(cmd_name, "status") ||
+           !strcmp(cmd_name, "update"))
                noreadfeedsfile = 1;
 
        cmd = opkg_cmd_find(cmd_name);
@@ -425,11 +432,11 @@ int main(int argc, char *argv[])
 
        if (!nocheckfordirorfile) {
                if (!noreadfeedsfile) {
-                       if (pkg_hash_load_feeds(SF_NEED_DETAIL))
+                       if (pkg_hash_load_feeds(SF_NEED_DETAIL, NULL, NULL))
                                goto err1;
                }
 
-               if (pkg_hash_load_status_files())
+               if (pkg_hash_load_status_files(NULL, NULL))
                        goto err1;
        }
 
@@ -442,9 +449,6 @@ int main(int argc, char *argv[])
 
        err = opkg_cmd_exec(cmd, argc - opts, (const char **)(argv + opts));
 
-#ifdef HAVE_CURL
-       opkg_curl_cleanup();
-#endif
 err1:
        opkg_conf_deinit();