Spacing.
[oweals/opkg-lede.git] / libopkg / libopkg.c
index f6fc251426e1a0d40c6f5d44c6d1ea4d7361e37e..d86be9eb2b8ac7f16fe0f2f5a7d75a94b76f0edd 100644 (file)
 */
 
 #include "includes.h"
-#include "libopkg.h"
 
-#include "args.h"
 #include "opkg_conf.h"
 #include "opkg_cmd.h"
 #include "file_util.h"
+#include "args.h"
+#include "opkg_download.h"
 
 #include "opkg_message.h"
 
-/* This is used for backward compatibility */
+/* This is used for backwards compatibility */
 int
 opkg_op (int argc, char *argv[])
 {
-       int err, opts;
-       args_t args;
+       int opts;
        char *cmd_name;
        opkg_cmd_t *cmd;
+       int nocheckfordirorfile = 0;
+        int noreadfeedsfile = 0;
 
-       args_init (&args);
+       conf->verbosity = NOTICE;       
 
-       opts = args_parse (&args, argc, argv);
+       opts = args_parse (argc, argv);
        if (opts == argc || opts < 0)
        {
                args_usage ("opkg must have one sub-command argument");
@@ -48,7 +49,7 @@ opkg_op (int argc, char *argv[])
              !strcmp(cmd_name,"print_architecture") ||
              !strcmp(cmd_name,"print-installation-architecture") ||
              !strcmp(cmd_name,"print_installation_architecture") )
-           args.nocheckfordirorfile = 1;
+           nocheckfordirorfile = 1;
 
         if ( !strcmp(cmd_name,"flag") ||
              !strcmp(cmd_name,"configure") ||
@@ -60,7 +61,7 @@ opkg_op (int argc, char *argv[])
              !strcmp(cmd_name,"list_installed") ||
              !strcmp(cmd_name,"list-installed") ||
              !strcmp(cmd_name,"status") )
-           args.noreadfeedsfile = 1;
+           noreadfeedsfile = 1;
 
        cmd = opkg_cmd_find (cmd_name);
        if (cmd == NULL)
@@ -72,13 +73,17 @@ opkg_op (int argc, char *argv[])
 
        conf->pfm = cmd->pfm;
 
-       err = opkg_conf_init (&args);
-       args_deinit (&args);
-       if (err)
-       {
-               print_error_list();
-               free_error_list();
-               return err;
+       if (opkg_conf_init())
+               goto err0;
+
+       if (!nocheckfordirorfile) {
+               if (!noreadfeedsfile) {
+                       if (pkg_hash_load_feeds())
+                               goto err1;
+               }
+   
+               if (pkg_hash_load_status_files())
+                       goto err1;
        }
 
        if (cmd->requires_args && opts == argc)
@@ -89,12 +94,24 @@ opkg_op (int argc, char *argv[])
                args_usage (NULL);
        }
 
-       err = opkg_cmd_exec (cmd, argc - opts, (const char **) (argv + opts));
+       if (opkg_cmd_exec (cmd, argc - opts, (const char **) (argv + opts)))
+               goto err2;
 
+       print_error_list();
+       free_error_list();
+
+       return 0;
+
+err2:
 #ifdef HAVE_CURL
        opkg_curl_cleanup();
 #endif
+err1:
        opkg_conf_deinit ();
 
-       return err;
+err0:
+       print_error_list();
+       free_error_list();
+
+       return -1;
 }