aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2000-09-25 21:49:37 +0000
committerDaniel Stenberg <daniel@haxx.se>2000-09-25 21:49:37 +0000
commitf353258ff62a91263b2cac9eda45dfae553bc0dc (patch)
treeab263b34698d84a1a73389b7ad71120c3995fd0f
parent1754d6166c18cb32d91f6420616519ea03bd1b14 (diff)
corrected bad data re-use and buffer problems
-rw-r--r--lib/progress.c26
-rw-r--r--lib/urldata.h5
2 files changed, 18 insertions, 13 deletions
diff --git a/lib/progress.c b/lib/progress.c
index 75defbad3..8a8a78f0e 100644
--- a/lib/progress.c
+++ b/lib/progress.c
@@ -183,7 +183,7 @@ int pgrsUpdate(struct UrlData *data)
struct timeval now;
int result;
- char max5[6][6];
+ char max5[6][10];
double dlpercen=0;
double ulpercen=0;
double total_percen=0;
@@ -191,12 +191,7 @@ int pgrsUpdate(struct UrlData *data)
double total_transfer;
double total_expected_transfer;
-#define CURR_TIME 5
-
- static double speeder[ CURR_TIME ];
- static int speeder_c=0;
-
- int nowindex = speeder_c% CURR_TIME;
+ int nowindex = data->progress.speeder_c% CURR_TIME;
int checkindex;
int count;
@@ -241,15 +236,19 @@ int pgrsUpdate(struct UrlData *data)
/* Let's do the "current speed" thing, which should use the fastest
of the dl/ul speeds */
- speeder[ nowindex ] = data->progress.downloaded>data->progress.uploaded?
+ data->progress.speeder[ nowindex ] =
+ data->progress.downloaded>data->progress.uploaded?
data->progress.downloaded:data->progress.uploaded;
- speeder_c++; /* increase */
- count = ((speeder_c>=CURR_TIME)?CURR_TIME:speeder_c) - 1;
- checkindex = (speeder_c>=CURR_TIME)?speeder_c%CURR_TIME:0;
+ data->progress.speeder_c++; /* increase */
+ count = ((data->progress.speeder_c>=CURR_TIME)?
+ CURR_TIME:data->progress.speeder_c) - 1;
+ checkindex = (data->progress.speeder_c>=CURR_TIME)?
+ data->progress.speeder_c%CURR_TIME:0;
/* find out the average speed the last CURR_TIME seconds */
data->progress.current_speed =
- (speeder[nowindex]-speeder[checkindex])/(count?count:1);
+ (data->progress.speeder[nowindex]-
+ data->progress.speeder[checkindex])/(count?count:1);
if(data->progress.flags & PGRS_HIDE)
return 0;
@@ -284,6 +283,7 @@ int pgrsUpdate(struct UrlData *data)
total estimate! */
total_estimate = ulestimate>dlestimate?ulestimate:dlestimate;
+
/* If we have a total estimate, we can display that and the expected
time left */
if(total_estimate) {
@@ -329,5 +329,5 @@ int pgrsUpdate(struct UrlData *data)
max5data(data->progress.current_speed, max5[5]) /* current speed */
);
- return 0;
+ return 0;
}
diff --git a/lib/urldata.h b/lib/urldata.h
index 7786d97e5..45ff75c02 100644
--- a/lib/urldata.h
+++ b/lib/urldata.h
@@ -242,6 +242,11 @@ struct Progress {
struct timeval t_connect;
struct timeval t_pretransfer;
int httpcode;
+
+#define CURR_TIME 5
+
+ double speeder[ CURR_TIME ];
+ int speeder_c;
};
/****************************************************************************