From: ticktock35 Date: Mon, 15 Dec 2008 04:21:07 +0000 (+0000) Subject: opkg: add internal state framework X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c82094c9e17afef41e49cff3eabdbdd0f6ca3a21;p=oweals%2Fopkg-lede.git opkg: add internal state framework git-svn-id: http://opkg.googlecode.com/svn/trunk@26 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358 --- diff --git a/Makefile.am b/Makefile.am index bb33843..d281ccb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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 \ diff --git a/libopkg.h b/libopkg.h index 274e37b..3430e1c 100644 --- 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 index 0000000..ded9683 --- /dev/null +++ b/opkg_state.c @@ -0,0 +1,41 @@ +/* opkg_state.c - the opkg package management system + + Thomas Wood + + 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 index 0000000..fc37675 --- /dev/null +++ b/opkg_state.h @@ -0,0 +1,30 @@ +/* opkg_state.c - the opkg package management system + + Thomas Wood + + 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; +