version 1.9, 1999/10/03 20:43:12 |
version 1.10, 1999/10/04 01:59:56 |
|
|
exit(1); |
exit(1); |
} |
} |
|
|
|
/* |
|
* ensure all of data on socket comes through. f==read || f==write |
|
*/ |
|
int |
|
atomicio(f, fd, s, n) |
|
int (*f)(); |
|
char *s; |
|
{ |
|
int res, pos = 0; |
|
|
|
while (n>pos) { |
|
res = (f)(fd, s+pos, n-pos); |
|
switch (res) { |
|
case -1: |
|
if (errno==EINTR || errno==EAGAIN) |
|
continue; |
|
case 0: |
|
return (res); |
|
default: |
|
pos += res; |
|
} |
|
} |
|
return (pos); |
|
} |
|
|
void |
void |
alarmtimer(int wait) |
alarmtimer(int wait) |
{ |
{ |
|
|
abbrevsize >>= 10; |
abbrevsize >>= 10; |
} |
} |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %5qd %c%c ", |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), " %5qd %c%c ", |
(quad_t)abbrevsize, prefixes[i], prefixes[i] == ' ' ? ' ' : |
(quad_t)abbrevsize, prefixes[i], prefixes[i] == ' ' ? ' ' : |
'B'); |
'B'); |
|
|
timersub(&now, &lastupdate, &wait); |
timersub(&now, &lastupdate, &wait); |
if (cursize > lastsize) { |
if (cursize > lastsize) { |
|
|
|
|
if (statbytes <= 0 || elapsed <= 0.0 || cursize > totalbytes) { |
if (statbytes <= 0 || elapsed <= 0.0 || cursize > totalbytes) { |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
" --:-- ETA"); |
" --:-- ETA"); |
} else if (wait.tv_sec >= STALLTIME) { |
} else if (wait.tv_sec >= STALLTIME) { |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
" - stalled -"); |
" - stalled -"); |
} else { |
} else { |
remaining = (int)(totalbytes / (statbytes / elapsed) - elapsed); |
remaining = (int)(totalbytes / (statbytes / elapsed) - elapsed); |
i = elapsed / 3600; |
i = elapsed / 3600; |
if (i) |
if (i) |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
"%2d:", i); |
"%2d:", i); |
else |
else |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
" "); |
" "); |
i = remaining % 3600; |
i = remaining % 3600; |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
snprintf(buf + strlen(buf), sizeof(buf) - strlen(buf), |
"%02d:%02d ETA", i / 60, i % 60); |
"%02d:%02d ETA", i / 60, i % 60); |
} |
} |
write(fileno(stdout), buf, strlen(buf)); |
atomicio(write, fileno(stdout), buf, strlen(buf)); |
|
|
if (flag == -1) { |
if (flag == -1) { |
signal(SIGALRM, (void *)updateprogressmeter); |
signal(SIGALRM, (void *)updateprogressmeter); |
alarmtimer(1); |
alarmtimer(1); |
} else if (flag == 1) { |
} else if (flag == 1) { |
alarmtimer(0); |
alarmtimer(0); |
putc('\n', stdout); |
write(fileno(stdout), "\n", 1); |
} |
} |
fflush(stdout); |
|
} |
} |
|
|
int |
int |