summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipkg_download.c30
1 files changed, 29 insertions, 1 deletions
diff --git a/ipkg_download.c b/ipkg_download.c
index 192c8b3..621ff03 100644
--- a/ipkg_download.c
+++ b/ipkg_download.c
@@ -4,6 +4,7 @@
Carl D. Worth
Copyright (C) 2001 University of Southern California
+ Copyright (C) 2008 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
@@ -27,6 +28,29 @@
#include "file_util.h"
#include "str_util.h"
+
+int
+curl_progress_func (void* data,
+ double t, /* dltotal */
+ double d, /* dlnow */
+ double ultotal,
+ double ulnow)
+{
+ int i;
+ int p = d*100/t;
+ printf ("\r%3d%% |", p);
+ for (i = 1; i < 73; i++)
+ {
+ if (i <= p)
+ printf ("=");
+ else
+ printf ("-");
+ }
+ printf ("|");
+ fflush(stdout);
+ return 0;
+}
+
int ipkg_download(ipkg_conf_t *conf, const char *src, const char *dest_file_name)
{
int err = 0;
@@ -99,12 +123,14 @@ int ipkg_download(ipkg_conf_t *conf, const char *src, const char *dest_file_name
CURL *curl;
CURLcode res;
FILE * file = fopen (tmp_file_location, "w");
-
+
curl = curl_easy_init ();
if (curl)
{
curl_easy_setopt (curl, CURLOPT_URL, src);
curl_easy_setopt (curl, CURLOPT_WRITEDATA, file);
+ curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
+ curl_easy_setopt (curl, CURLOPT_PROGRESSFUNCTION, curl_progress_func);
res = curl_easy_perform (curl);
curl_easy_cleanup (curl);
fclose (file);
@@ -113,6 +139,8 @@ int ipkg_download(ipkg_conf_t *conf, const char *src, const char *dest_file_name
else
return -1;
+ printf ("\n");
+
err = file_move(tmp_file_location, dest_file_name);
free(tmp_file_location);