version 1.162, 2008/01/01 09:06:39 |
version 1.163, 2008/06/13 18:55:22 |
|
|
struct stat stb; |
struct stat stb; |
static BUF buffer; |
static BUF buffer; |
BUF *bp; |
BUF *bp; |
off_t i, amt, statbytes; |
off_t i, statbytes; |
|
size_t amt; |
int fd = -1, haderr, indx; |
int fd = -1, haderr, indx; |
char *last, *name, buf[2048], encname[MAXPATHLEN]; |
char *last, *name, buf[2048], encname[MAXPATHLEN]; |
int len; |
int len; |
|
|
syserr: run_err("%s: %s", name, strerror(errno)); |
syserr: run_err("%s: %s", name, strerror(errno)); |
goto next; |
goto next; |
} |
} |
|
if (stb.st_size < 0) { |
|
run_err("%s: %s", name, "Negative file size"); |
|
goto next; |
|
} |
unset_nonblock(fd); |
unset_nonblock(fd); |
switch (stb.st_mode & S_IFMT) { |
switch (stb.st_mode & S_IFMT) { |
case S_IFREG: |
case S_IFREG: |
|
|
set_nonblock(remout); |
set_nonblock(remout); |
for (haderr = i = 0; i < stb.st_size; i += bp->cnt) { |
for (haderr = i = 0; i < stb.st_size; i += bp->cnt) { |
amt = bp->cnt; |
amt = bp->cnt; |
if (i + amt > stb.st_size) |
if (i + (off_t)amt > stb.st_size) |
amt = stb.st_size - i; |
amt = stb.st_size - i; |
if (!haderr) { |
if (!haderr) { |
if (atomicio(read, fd, bp->buf, amt) != amt) |
if (atomicio(read, fd, bp->buf, amt) != amt) |