summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-05-14 20:46:30 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-08-24 20:29:45 +0200
commit0a1db746fbcaf09681e446250f75581cc8f8fd05 (patch)
tree36e1ca1895c97dc5c9d1d8a5ffad001e00f776c4
parente03e71da56608f60770eb80767dcd94e698cdcae (diff)
downloadlibgit2-0a1db746fbcaf09681e446250f75581cc8f8fd05.tar.gz
examples: add progress output to fetch
-rw-r--r--examples/network/fetch.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/examples/network/fetch.c b/examples/network/fetch.c
index 372c8584..fa941b97 100644
--- a/examples/network/fetch.c
+++ b/examples/network/fetch.c
@@ -14,6 +14,13 @@ struct dl_data {
int finished;
};
+static void progress_cb(const char *str, int len, void *data)
+{
+ data = data;
+ printf("remote: %.*s", len, str);
+ fflush(stdout); /* We don't have the \n to force the flush */
+}
+
static void *download(void *ptr)
{
struct dl_data *data = (struct dl_data *)ptr;
@@ -43,6 +50,7 @@ exit:
static int update_cb(const char *refname, const git_oid *a, const git_oid *b, void *data)
{
char a_str[GIT_OID_HEXSZ+1], b_str[GIT_OID_HEXSZ+1];
+ data = data;
git_oid_fmt(b_str, b);
b_str[GIT_OID_HEXSZ] = '\0';
@@ -78,6 +86,7 @@ int fetch(git_repository *repo, int argc, char **argv)
// Set up the callbacks (only update_tips for now)
memset(&callbacks, 0, sizeof(callbacks));
callbacks.update_tips = &update_cb;
+ callbacks.progress = &progress_cb;
git_remote_set_callbacks(remote, &callbacks);
// Set up the information for the background worker thread
@@ -96,7 +105,10 @@ int fetch(git_repository *repo, int argc, char **argv)
// the download rate.
do {
usleep(10000);
- printf("\rReceived %d/%d objects (%d) in %d bytes", stats.received, stats.total, stats.processed, bytes);
+
+ if (stats.total > 0)
+ printf("Received %d/%d objects (%d) in %d bytes\r",
+ stats.received, stats.total, stats.processed, bytes);
} while (!data.finished);
if (data.ret < 0)