Clarify why we're not using fseek(), use fseek() where applicable.
[oweals/opkg-lede.git] / libopkg / libopkg.c
index 418a32485624c7f88de27bb6a1dedf241cf6e47b..f6fc251426e1a0d40c6f5d44c6d1ea4d7361e37e 100644 (file)
@@ -1,6 +1,6 @@
 /* opkglib.c - the opkg package management system
 
-   Florina Boor
+   Florian Boor
 
    Copyright (C) 2003 kernel concepts
 
 #include "file_util.h"
 
 #include "opkg_message.h"
-#include "opkg_error.h"
-
-opkg_status_callback opkg_cb_status = NULL;
-opkg_list_callback opkg_cb_list = NULL;
-
-int default_opkg_message_callback(opkg_conf_t *conf, message_level_t level, 
-                                 char *msg)
-{
-     if (conf && (conf->verbosity < level)) {
-         return 0;
-     } else {
-          if ( level == OPKG_ERROR ){
-             push_error_list(&error_list, msg); 
-          } else
-           printf("%s",msg);
-     }
-     return 0;
-}
-
-int default_opkg_list_callback(char *name, char *desc, char *version, 
-                              pkg_state_status_t status, void *userdata)
-{
-     if (desc)
-         printf("%s - %s - %s\n", name, version, desc);
-     else
-         printf("%s - %s\n", name, version);
-     return 0;
-}
-
-int default_opkg_files_callback(char *name, char *desc, char *version,
-                   pkg_state_status_t status, void *userdata)
-{
-     if (desc)
-         printf("%s\n", desc);
-     return 0;
-}
-
-int default_opkg_status_callback(char *name, int istatus, char *desc,
-                                void *userdata)
-{
-     printf("%s\n", desc);
-     return 0;
-}
-
-char* default_opkg_response_callback(char *question)
-{
-     char *response = NULL;
-     printf("%s",question);
-     fflush(stdout);
-     do {
-         response = (char *)file_read_line_alloc(stdin);
-     } while (response == NULL);
-     return response;
-}
 
 /* This is used for backward compatibility */
 int
 opkg_op (int argc, char *argv[])
 {
-       int err, optind;
+       int err, opts;
        args_t args;
        char *cmd_name;
        opkg_cmd_t *cmd;
-       opkg_conf_t opkg_conf;
 
        args_init (&args);
 
-       optind = args_parse (&args, argc, argv);
-       if (optind == argc || optind < 0)
+       opts = args_parse (&args, argc, argv);
+       if (opts == argc || opts < 0)
        {
                args_usage ("opkg must have one sub-command argument");
        }
 
-       cmd_name = argv[optind++];
-/* Pigi: added a flag to disable the checking of structures if the command does not need to 
-         read anything from there.
-*/
+       cmd_name = argv[opts++];
+
         if ( !strcmp(cmd_name,"print-architecture") ||
              !strcmp(cmd_name,"print_architecture") ||
              !strcmp(cmd_name,"print-installation-architecture") ||
              !strcmp(cmd_name,"print_installation_architecture") )
            args.nocheckfordirorfile = 1;
 
-/* Pigi: added a flag to disable the reading of feed files  if the command does not need to 
-         read anything from there.
-*/
         if ( !strcmp(cmd_name,"flag") ||
              !strcmp(cmd_name,"configure") ||
              !strcmp(cmd_name,"remove") ||
@@ -122,24 +62,6 @@ opkg_op (int argc, char *argv[])
              !strcmp(cmd_name,"status") )
            args.noreadfeedsfile = 1;
 
-       opkg_cb_message = default_opkg_message_callback;
-       opkg_cb_response = default_opkg_response_callback;
-       opkg_cb_status = default_opkg_status_callback;
-
-
-       err = opkg_conf_init (&opkg_conf, &args);
-       args_deinit (&args);
-       if (err)
-       {
-               opkg_print_error_list (&opkg_conf);
-               return err;
-       }
-
-       if ( strcmp(cmd_name, "files")==0)
-            opkg_cb_list = default_opkg_files_callback;
-       else
-            opkg_cb_list = default_opkg_list_callback;
-
        cmd = opkg_cmd_find (cmd_name);
        if (cmd == NULL)
        {
@@ -148,17 +70,31 @@ opkg_op (int argc, char *argv[])
                args_usage (NULL);
        }
 
-       if (cmd->requires_args && optind == argc)
+       conf->pfm = cmd->pfm;
+
+       err = opkg_conf_init (&args);
+       args_deinit (&args);
+       if (err)
+       {
+               print_error_list();
+               free_error_list();
+               return err;
+       }
+
+       if (cmd->requires_args && opts == argc)
        {
                fprintf (stderr,
                         "%s: the ``%s'' command requires at least one argument\n",
-                        __FUNCTION__, cmd_name);
+                        argv[0], cmd_name);
                args_usage (NULL);
        }
 
-       err = opkg_cmd_exec (cmd, &opkg_conf, argc - optind, (const char **) (argv + optind), NULL);
+       err = opkg_cmd_exec (cmd, argc - opts, (const char **) (argv + opts));
 
-       opkg_conf_deinit (&opkg_conf);
+#ifdef HAVE_CURL
+       opkg_curl_cleanup();
+#endif
+       opkg_conf_deinit ();
 
        return err;
 }