version 1.106, 2003/06/12 15:34:09 |
version 1.107, 2003/06/28 16:23:06 |
|
|
(void) snprintf(buf, sizeof buf, "T%lu 0 %lu 0\n", |
(void) snprintf(buf, sizeof buf, "T%lu 0 %lu 0\n", |
(u_long) stb.st_mtime, |
(u_long) stb.st_mtime, |
(u_long) stb.st_atime); |
(u_long) stb.st_atime); |
(void) atomicio(write, remout, buf, strlen(buf)); |
(void) atomicio(vwrite, remout, buf, strlen(buf)); |
if (response() < 0) |
if (response() < 0) |
goto next; |
goto next; |
} |
} |
|
|
if (verbose_mode) { |
if (verbose_mode) { |
fprintf(stderr, "Sending file modes: %s", buf); |
fprintf(stderr, "Sending file modes: %s", buf); |
} |
} |
(void) atomicio(write, remout, buf, strlen(buf)); |
(void) atomicio(vwrite, remout, buf, strlen(buf)); |
if (response() < 0) |
if (response() < 0) |
goto next; |
goto next; |
if ((bp = allocbuf(&buffer, fd, 2048)) == NULL) { |
if ((bp = allocbuf(&buffer, fd, 2048)) == NULL) { |
|
|
haderr = result >= 0 ? EIO : errno; |
haderr = result >= 0 ? EIO : errno; |
} |
} |
if (haderr) |
if (haderr) |
(void) atomicio(write, remout, bp->buf, amt); |
(void) atomicio(vwrite, remout, bp->buf, amt); |
else { |
else { |
result = atomicio(write, remout, bp->buf, amt); |
result = atomicio(vwrite, remout, bp->buf, amt); |
if (result != amt) |
if (result != amt) |
haderr = result >= 0 ? EIO : errno; |
haderr = result >= 0 ? EIO : errno; |
statbytes += result; |
statbytes += result; |
|
|
if (close(fd) < 0 && !haderr) |
if (close(fd) < 0 && !haderr) |
haderr = errno; |
haderr = errno; |
if (!haderr) |
if (!haderr) |
(void) atomicio(write, remout, "", 1); |
(void) atomicio(vwrite, remout, "", 1); |
else |
else |
run_err("%s: %s", name, strerror(haderr)); |
run_err("%s: %s", name, strerror(haderr)); |
(void) response(); |
(void) response(); |
|
|
(void) snprintf(path, sizeof(path), "T%lu 0 %lu 0\n", |
(void) snprintf(path, sizeof(path), "T%lu 0 %lu 0\n", |
(u_long) statp->st_mtime, |
(u_long) statp->st_mtime, |
(u_long) statp->st_atime); |
(u_long) statp->st_atime); |
(void) atomicio(write, remout, path, strlen(path)); |
(void) atomicio(vwrite, remout, path, strlen(path)); |
if (response() < 0) { |
if (response() < 0) { |
closedir(dirp); |
closedir(dirp); |
return; |
return; |
|
|
(u_int) (statp->st_mode & FILEMODEMASK), 0, last); |
(u_int) (statp->st_mode & FILEMODEMASK), 0, last); |
if (verbose_mode) |
if (verbose_mode) |
fprintf(stderr, "Entering directory: %s", path); |
fprintf(stderr, "Entering directory: %s", path); |
(void) atomicio(write, remout, path, strlen(path)); |
(void) atomicio(vwrite, remout, path, strlen(path)); |
if (response() < 0) { |
if (response() < 0) { |
closedir(dirp); |
closedir(dirp); |
return; |
return; |
|
|
source(1, vect); |
source(1, vect); |
} |
} |
(void) closedir(dirp); |
(void) closedir(dirp); |
(void) atomicio(write, remout, "E\n", 2); |
(void) atomicio(vwrite, remout, "E\n", 2); |
(void) response(); |
(void) response(); |
} |
} |
|
|
|
|
if (targetshouldbedirectory) |
if (targetshouldbedirectory) |
verifydir(targ); |
verifydir(targ); |
|
|
(void) atomicio(write, remout, "", 1); |
(void) atomicio(vwrite, remout, "", 1); |
if (stat(targ, &stb) == 0 && S_ISDIR(stb.st_mode)) |
if (stat(targ, &stb) == 0 && S_ISDIR(stb.st_mode)) |
targisdir = 1; |
targisdir = 1; |
for (first = 1;; first = 0) { |
for (first = 1;; first = 0) { |
|
|
|
|
if (buf[0] == '\01' || buf[0] == '\02') { |
if (buf[0] == '\01' || buf[0] == '\02') { |
if (iamremote == 0) |
if (iamremote == 0) |
(void) atomicio(write, STDERR_FILENO, |
(void) atomicio(vwrite, STDERR_FILENO, |
buf + 1, strlen(buf + 1)); |
buf + 1, strlen(buf + 1)); |
if (buf[0] == '\02') |
if (buf[0] == '\02') |
exit(1); |
exit(1); |
|
|
continue; |
continue; |
} |
} |
if (buf[0] == 'E') { |
if (buf[0] == 'E') { |
(void) atomicio(write, remout, "", 1); |
(void) atomicio(vwrite, remout, "", 1); |
return; |
return; |
} |
} |
if (ch == '\n') |
if (ch == '\n') |
|
|
atime.tv_usec = strtol(cp, &cp, 10); |
atime.tv_usec = strtol(cp, &cp, 10); |
if (!cp || *cp++ != '\0') |
if (!cp || *cp++ != '\0') |
SCREWUP("atime.usec not delimited"); |
SCREWUP("atime.usec not delimited"); |
(void) atomicio(write, remout, "", 1); |
(void) atomicio(vwrite, remout, "", 1); |
continue; |
continue; |
} |
} |
if (*cp != 'C' && *cp != 'D') { |
if (*cp != 'C' && *cp != 'D') { |
|
|
bad: run_err("%s: %s", np, strerror(errno)); |
bad: run_err("%s: %s", np, strerror(errno)); |
continue; |
continue; |
} |
} |
(void) atomicio(write, remout, "", 1); |
(void) atomicio(vwrite, remout, "", 1); |
if ((bp = allocbuf(&buffer, ofd, 4096)) == NULL) { |
if ((bp = allocbuf(&buffer, ofd, 4096)) == NULL) { |
(void) close(ofd); |
(void) close(ofd); |
continue; |
continue; |
|
|
if (count == bp->cnt) { |
if (count == bp->cnt) { |
/* Keep reading so we stay sync'd up. */ |
/* Keep reading so we stay sync'd up. */ |
if (wrerr == NO) { |
if (wrerr == NO) { |
j = atomicio(write, ofd, bp->buf, count); |
j = atomicio(vwrite, ofd, bp->buf, count); |
if (j != count) { |
if (j != count) { |
wrerr = YES; |
wrerr = YES; |
wrerrno = j >= 0 ? EIO : errno; |
wrerrno = j >= 0 ? EIO : errno; |
|
|
if (showprogress) |
if (showprogress) |
stop_progress_meter(); |
stop_progress_meter(); |
if (count != 0 && wrerr == NO && |
if (count != 0 && wrerr == NO && |
(j = atomicio(write, ofd, bp->buf, count)) != count) { |
(j = atomicio(vwrite, ofd, bp->buf, count)) != count) { |
wrerr = YES; |
wrerr = YES; |
wrerrno = j >= 0 ? EIO : errno; |
wrerrno = j >= 0 ? EIO : errno; |
} |
} |
|
|
run_err("%s: %s", np, strerror(wrerrno)); |
run_err("%s: %s", np, strerror(wrerrno)); |
break; |
break; |
case NO: |
case NO: |
(void) atomicio(write, remout, "", 1); |
(void) atomicio(vwrite, remout, "", 1); |
break; |
break; |
case DISPLAYED: |
case DISPLAYED: |
break; |
break; |
|
|
} while (cp < &rbuf[sizeof(rbuf) - 1] && ch != '\n'); |
} while (cp < &rbuf[sizeof(rbuf) - 1] && ch != '\n'); |
|
|
if (!iamremote) |
if (!iamremote) |
(void) atomicio(write, STDERR_FILENO, rbuf, cp - rbuf); |
(void) atomicio(vwrite, STDERR_FILENO, rbuf, cp - rbuf); |
++errs; |
++errs; |
if (resp == 1) |
if (resp == 1) |
return (-1); |
return (-1); |