*/
#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");
!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") ||
!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)
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)
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;
}