version 1.41, 2015/01/14 13:54:13 |
version 1.42, 2016/03/02 22:42:40 |
|
|
/* signal handler for updating the progress meter */ |
/* signal handler for updating the progress meter */ |
static void update_progress_meter(int); |
static void update_progress_meter(int); |
|
|
static time_t start; /* start progress */ |
static double start; /* start progress */ |
static time_t last_update; /* last progress update */ |
static double last_update; /* last progress update */ |
static const char *file; /* name of the file being transferred */ |
static const char *file; /* name of the file being transferred */ |
static off_t start_pos; /* initial position of transfer */ |
static off_t start_pos; /* initial position of transfer */ |
static off_t end_pos; /* ending position of transfer */ |
static off_t end_pos; /* ending position of transfer */ |
|
|
refresh_progress_meter(void) |
refresh_progress_meter(void) |
{ |
{ |
char buf[MAX_WINSIZE + 1]; |
char buf[MAX_WINSIZE + 1]; |
time_t now; |
|
off_t transferred; |
off_t transferred; |
double elapsed; |
double elapsed, now; |
int percent; |
int percent; |
off_t bytes_left; |
off_t bytes_left; |
int cur_speed; |
int cur_speed; |
|
|
|
|
transferred = *counter - (cur_pos ? cur_pos : start_pos); |
transferred = *counter - (cur_pos ? cur_pos : start_pos); |
cur_pos = *counter; |
cur_pos = *counter; |
now = monotime(); |
now = monotime_double(); |
bytes_left = end_pos - cur_pos; |
bytes_left = end_pos - cur_pos; |
|
|
if (bytes_left > 0) |
if (bytes_left > 0) |
|
|
void |
void |
start_progress_meter(const char *f, off_t filesize, off_t *ctr) |
start_progress_meter(const char *f, off_t filesize, off_t *ctr) |
{ |
{ |
start = last_update = monotime(); |
start = last_update = monotime_double(); |
file = f; |
file = f; |
start_pos = *ctr; |
start_pos = *ctr; |
end_pos = filesize; |
end_pos = filesize; |