version 1.48, 2009/08/31 07:11:16 |
version 1.48.8.1, 2012/05/09 15:42:08 |
Line 485 sink(int argc, char *argv[]) |
|
Line 485 sink(int argc, char *argv[]) |
|
char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ]; |
char ch, *cp, *np, *targ, *vect[1], buf[BUFSIZ]; |
const char *why; |
const char *why; |
off_t size; |
off_t size; |
|
char *namebuf = NULL; |
|
size_t cursize = 0; |
|
|
#define atime tv[0] |
#define atime tv[0] |
#define mtime tv[1] |
#define mtime tv[1] |
Line 507 sink(int argc, char *argv[]) |
|
Line 509 sink(int argc, char *argv[]) |
|
for (first = 1;; first = 0) { |
for (first = 1;; first = 0) { |
cp = buf; |
cp = buf; |
if (read(rem, cp, 1) <= 0) |
if (read(rem, cp, 1) <= 0) |
return; |
goto out; |
if (*cp++ == '\n') |
if (*cp++ == '\n') |
SCREWUP("unexpected <newline>"); |
SCREWUP("unexpected <newline>"); |
do { |
do { |
Line 528 sink(int argc, char *argv[]) |
|
Line 530 sink(int argc, char *argv[]) |
|
} |
} |
if (buf[0] == 'E') { |
if (buf[0] == 'E') { |
(void)write(rem, "", 1); |
(void)write(rem, "", 1); |
return; |
goto out; |
} |
} |
|
|
if (ch == '\n') |
if (ch == '\n') |
Line 582 sink(int argc, char *argv[]) |
|
Line 584 sink(int argc, char *argv[]) |
|
if (*cp++ != ' ') |
if (*cp++ != ' ') |
SCREWUP("size not delimited"); |
SCREWUP("size not delimited"); |
if (targisdir) { |
if (targisdir) { |
static char *namebuf; |
|
static size_t cursize; |
|
char *newnamebuf; |
char *newnamebuf; |
size_t need; |
size_t need; |
|
|
need = strlen(targ) + strlen(cp) + 250; |
need = strlen(targ) + strlen(cp) + 2; |
if (need > cursize) { |
if (need > cursize) { |
|
need += 256; |
newnamebuf = realloc(namebuf, need); |
newnamebuf = realloc(namebuf, need); |
if (newnamebuf != NULL) { |
if (newnamebuf != NULL) { |
namebuf = newnamebuf; |
namebuf = newnamebuf; |
cursize = need; |
cursize = need; |
} else { |
} else { |
/* note: run_err is not fatal */ |
|
run_err("%s", strerror(errno)); |
run_err("%s", strerror(errno)); |
|
exit(1); |
} |
} |
} |
} |
(void)snprintf(namebuf, cursize, "%s%s%s", targ, |
(void)snprintf(namebuf, cursize, "%s%s%s", targ, |
Line 726 bad: run_err("%s: %s", np, strerror(er |
|
Line 727 bad: run_err("%s: %s", np, strerror(er |
|
break; |
break; |
} |
} |
} |
} |
|
|
|
out: |
|
if (namebuf) { |
|
free(namebuf); |
|
} |
|
return; |
|
|
screwup: |
screwup: |
run_err("protocol error: %s", why); |
run_err("protocol error: %s", why); |
exit(1); |
exit(1); |