version 1.78, 2001/07/27 17:26:16 |
version 1.79, 2001/08/06 19:47:05 |
|
|
|
|
/* For progressmeter() -- number of seconds before xfer considered "stalled" */ |
/* For progressmeter() -- number of seconds before xfer considered "stalled" */ |
#define STALLTIME 5 |
#define STALLTIME 5 |
|
/* alarm() interval for updating progress meter */ |
|
#define PROGRESSTIME 1 |
|
|
/* Visual statistics about files as they are transferred. */ |
/* Visual statistics about files as they are transferred. */ |
void progressmeter(int); |
void progressmeter(int); |
|
|
exit(1); |
exit(1); |
} |
} |
|
|
|
|
static void |
static void |
alarmtimer(int wait) |
|
{ |
|
struct itimerval itv; |
|
|
|
itv.it_value.tv_sec = wait; |
|
itv.it_value.tv_usec = 0; |
|
itv.it_interval = itv.it_value; |
|
setitimer(ITIMER_REAL, &itv, NULL); |
|
} |
|
|
|
static void |
|
updateprogressmeter(int ignore) |
updateprogressmeter(int ignore) |
{ |
{ |
int save_errno = errno; |
int save_errno = errno; |
|
|
progressmeter(0); |
progressmeter(0); |
|
signal(SIGALRM, updateprogressmeter); |
|
alarm(PROGRESSTIME); |
errno = save_errno; |
errno = save_errno; |
} |
} |
|
|
|
|
|
|
if (flag == -1) { |
if (flag == -1) { |
signal(SIGALRM, updateprogressmeter); |
signal(SIGALRM, updateprogressmeter); |
alarmtimer(1); |
alarm(PROGRESSTIME); |
} else if (flag == 1) { |
} else if (flag == 1) { |
alarmtimer(0); |
alarm(0); |
atomicio(write, fileno(stdout), "\n", 1); |
atomicio(write, fileno(stdout), "\n", 1); |
statbytes = 0; |
statbytes = 0; |
} |
} |