r3873 - trunk/src/target/ipkg
thomas at sita.openmoko.org
thomas at sita.openmoko.org
Thu Jan 17 19:07:10 CET 2008
Author: thomas
Date: 2008-01-17 19:07:09 +0100 (Thu, 17 Jan 2008)
New Revision: 3873
Modified:
trunk/src/target/ipkg/ipkg_download.c
Log:
ipkg: add a simple progress bar while downloading
Modified: trunk/src/target/ipkg/ipkg_download.c
===================================================================
--- trunk/src/target/ipkg/ipkg_download.c 2008-01-17 17:16:13 UTC (rev 3872)
+++ trunk/src/target/ipkg/ipkg_download.c 2008-01-17 18:07:09 UTC (rev 3873)
@@ -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 @@
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 @@
else
return -1;
+ printf ("\n");
+
err = file_move(tmp_file_location, dest_file_name);
free(tmp_file_location);
More information about the commitlog
mailing list