diff options
-rw-r--r-- | libopkg.h | 3 | ||||
-rw-r--r-- | opkg_download.c | 13 |
2 files changed, 16 insertions, 0 deletions
@@ -36,6 +36,7 @@ typedef int (*opkg_list_callback)(char *name, char *desc, char *version, 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); extern int opkg_op(int argc, char *argv[]); /* opkglib.c */ extern int opkg_init (opkg_message_callback mcall, @@ -78,6 +79,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 void push_error_list(struct errlist **errors,char * msg); extern void reverse_error_list(struct errlist **errors); extern void free_error_list(); diff --git a/opkg_download.c b/opkg_download.c index a73406d..6859e92 100644 --- a/opkg_download.c +++ b/opkg_download.c @@ -28,6 +28,10 @@ #include "file_util.h" #include "str_util.h" +#ifdef OPKG_LIB +#include "libopkg.h" +opkg_download_progress_callback opkg_cb_download_progress = NULL; +#endif int curl_progress_func (void* data, @@ -38,6 +42,15 @@ curl_progress_func (void* data, { int i; int p = d*100/t; + +#ifdef LIBOPKG + if (opkg_cb_download_progress) + { + opkg_cb_download_progress (p); + return 0; + } +#endif + printf ("\r%3d%% |", p); for (i = 1; i < 73; i++) { |