opkg: add internal state framework
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Mon, 15 Dec 2008 04:21:07 +0000 (04:21 +0000)
committerticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Mon, 15 Dec 2008 04:21:07 +0000 (04:21 +0000)
git-svn-id: http://opkg.googlecode.com/svn/trunk@26 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358

Makefile.am
libopkg.h
opkg_state.c [new file with mode: 0644]
opkg_state.h [new file with mode: 0644]

index bb33843876149fc444eded0d27442157ebcce840..d281ccb21835ff34d8e50c8f48b9c26c8eec2466 100644 (file)
@@ -57,7 +57,7 @@ libopkg_la_LIBADD = libbb/libbb.la $(CURL_LIBS) $(GPGME_LIBS)
 opkg_core_sources = args.c args.h opkg.c \
                    user.c user.h 
 opkg_libcore_sources = args.c args.h libopkg.c libopkg.h opkg.h\
-                   user.c user.h 
+                   user.c user.h opkg_state.c opkg_state.h
 opkg_cmd_sources = opkg_cmd.c opkg_cmd.h \
                   opkg_configure.c opkg_configure.h \
                   opkg_download.c opkg_download.h \
index 274e37b6fd4c837f3e6e71a6dbc7362d3795a12b..3430e1c326a7a01830018d579001640cd5f5cd03 100644 (file)
--- a/libopkg.h
+++ b/libopkg.h
@@ -25,6 +25,7 @@
 
 #include "opkg_conf.h"
 #include "opkg_message.h"
+#include "opkg_state.h"
 
 #include "args.h"
 #include "pkg.h"
@@ -37,6 +38,7 @@ typedef int (*opkg_status_callback)(char *name, int istatus, char *desc,
        void *userdata);
 typedef char* (*opkg_response_callback)(char *question);
 typedef void (*opkg_download_progress_callback)(int percent, char *url);
+typedef void (*opkg_state_changed_callback)(opkg_state_t state, const char *data);
 
 extern int opkg_op(int argc, char *argv[]); /* opkglib.c */
 extern int opkg_init (opkg_message_callback mcall, 
@@ -79,7 +81,8 @@ extern opkg_message_callback opkg_cb_message; /* opkglib.c */
 extern opkg_response_callback opkg_cb_response;
 extern opkg_status_callback opkg_cb_status;
 extern opkg_list_callback opkg_cb_list;
-extern opkg_download_progress_callback opkg_cb_download_progress; /* ipkg_download.c */
+extern opkg_download_progress_callback opkg_cb_download_progress; /* opkg_download.c */
+extern opkg_state_changed_callback opkg_cb_state_changed; /* opkg_state.c */
 
 extern void push_error_list(struct errlist **errors,char * msg);
 extern void reverse_error_list(struct errlist **errors);
diff --git a/opkg_state.c b/opkg_state.c
new file mode 100644 (file)
index 0000000..ded9683
--- /dev/null
@@ -0,0 +1,41 @@
+/* opkg_state.c - the opkg package management system
+
+   Thomas Wood <thomas@openedhand.com>
+
+   Copyright (C) 2008 by OpenMoko Inc
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2, or (at
+   your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+*/
+
+#include "libopkg.h"
+
+opkg_state_changed_callback opkg_cb_state;
+
+static opkg_state_t opkg_state = 0;
+static char *opkg_state_data = NULL;
+
+void
+opkg_set_current_state (opkg_state_t state, const char *data)
+{
+  if (opkg_state_data)
+    free (opkg_state_data);
+  opkg_state_data = malloc (strlen (data));
+  strcpy (opkg_state_data, data);
+
+  opkg_state = state;
+}
+
+void
+opkg_get_current_state (opkg_state_t *state, const char **data)
+{
+  *state = opkg_state;
+  *data = opkg_state_data;
+}
diff --git a/opkg_state.h b/opkg_state.h
new file mode 100644 (file)
index 0000000..fc37675
--- /dev/null
@@ -0,0 +1,30 @@
+/* opkg_state.c - the opkg package management system
+
+   Thomas Wood <thomas@openedhand.com>
+
+   Copyright (C) 2008 by OpenMoko Inc
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2, or (at
+   your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+*/
+
+
+
+typedef enum _opkg_state {
+  OPKG_STATE_NONE,
+  OPKG_STATE_DOWNLOADING_PKG,
+  OPKG_STATE_INSTALLING_PKG,
+  OPKG_STATE_CONFIGURING_PKG,
+  OPKG_STATE_UPGRADING_PKG,
+  OPKG_STATE_REMOVING_PKG,
+  OPKG_STATE_DOWNLOADING_REPOSITORY,
+  OPKG_STATE_VERIFYING_REPOSITORY_SIGNITURE
+} opkg_state_t;
+