summaryrefslogtreecommitdiff
path: root/scp.c
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2000-05-01 21:10:33 +1000
committerDamien Miller <djm@mindrot.org>2000-05-01 21:10:33 +1000
commit35dabd0398dc4aa8735d5ec896ead6955b83b2ff (patch)
treedc981f761571cb7e6f5b7628bb7d19150559ae01 /scp.c
parent70fb671d218378f6df6a9121a71e8320768a0be3 (diff)
[scp.c]
- fix very rare EAGAIN/EINTR issues; based on work by djm [packet.c] - less debug, rm unused [auth2.c] - disable kerb,s/key in ssh2 [sshd.8] - Minor tweaks and typo fixes. [ssh-keygen.c] - Put -d into usage and reorder. markus ok.
Diffstat (limited to 'scp.c')
-rw-r--r--scp.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/scp.c b/scp.c
index 64869f976..2ac106290 100644
--- a/scp.c
+++ b/scp.c
@@ -45,7 +45,7 @@
45 */ 45 */
46 46
47#include "includes.h" 47#include "includes.h"
48RCSID("$Id: scp.c,v 1.20 2000/04/19 06:26:14 damien Exp $"); 48RCSID("$Id: scp.c,v 1.21 2000/05/01 11:10:33 damien Exp $");
49 49
50#include "ssh.h" 50#include "ssh.h"
51#include "xmalloc.h" 51#include "xmalloc.h"
@@ -543,7 +543,7 @@ syserr: run_err("%s: %s", name, strerror(errno));
543 (void) sprintf(buf, "T%lu 0 %lu 0\n", 543 (void) sprintf(buf, "T%lu 0 %lu 0\n",
544 (unsigned long) stb.st_mtime, 544 (unsigned long) stb.st_mtime,
545 (unsigned long) stb.st_atime); 545 (unsigned long) stb.st_atime);
546 (void) write(remout, buf, strlen(buf)); 546 (void) atomicio(write, remout, buf, strlen(buf));
547 if (response() < 0) 547 if (response() < 0)
548 goto next; 548 goto next;
549 } 549 }
@@ -556,7 +556,7 @@ syserr: run_err("%s: %s", name, strerror(errno));
556 fprintf(stderr, "Sending file modes: %s", buf); 556 fprintf(stderr, "Sending file modes: %s", buf);
557 fflush(stderr); 557 fflush(stderr);
558 } 558 }
559 (void) write(remout, buf, strlen(buf)); 559 (void) atomicio(write, remout, buf, strlen(buf));
560 if (response() < 0) 560 if (response() < 0)
561 goto next; 561 goto next;
562 if ((bp = allocbuf(&buffer, fd, 2048)) == NULL) { 562 if ((bp = allocbuf(&buffer, fd, 2048)) == NULL) {
@@ -578,7 +578,7 @@ next: (void) close(fd);
578 haderr = result >= 0 ? EIO : errno; 578 haderr = result >= 0 ? EIO : errno;
579 } 579 }
580 if (haderr) 580 if (haderr)
581 (void) write(remout, bp->buf, amt); 581 (void) atomicio(write, remout, bp->buf, amt);
582 else { 582 else {
583 result = atomicio(write, remout, bp->buf, amt); 583 result = atomicio(write, remout, bp->buf, amt);
584 if (result != amt) 584 if (result != amt)
@@ -592,7 +592,7 @@ next: (void) close(fd);
592 if (close(fd) < 0 && !haderr) 592 if (close(fd) < 0 && !haderr)
593 haderr = errno; 593 haderr = errno;
594 if (!haderr) 594 if (!haderr)
595 (void) write(remout, "", 1); 595 (void) atomicio(write, remout, "", 1);
596 else 596 else
597 run_err("%s: %s", name, strerror(haderr)); 597 run_err("%s: %s", name, strerror(haderr));
598 (void) response(); 598 (void) response();
@@ -621,7 +621,7 @@ rsource(name, statp)
621 (void) sprintf(path, "T%lu 0 %lu 0\n", 621 (void) sprintf(path, "T%lu 0 %lu 0\n",
622 (unsigned long) statp->st_mtime, 622 (unsigned long) statp->st_mtime,
623 (unsigned long) statp->st_atime); 623 (unsigned long) statp->st_atime);
624 (void) write(remout, path, strlen(path)); 624 (void) atomicio(write, remout, path, strlen(path));
625 if (response() < 0) { 625 if (response() < 0) {
626 closedir(dirp); 626 closedir(dirp);
627 return; 627 return;
@@ -632,7 +632,7 @@ rsource(name, statp)
632 0, last); 632 0, last);
633 if (verbose_mode) 633 if (verbose_mode)
634 fprintf(stderr, "Entering directory: %s", path); 634 fprintf(stderr, "Entering directory: %s", path);
635 (void) write(remout, path, strlen(path)); 635 (void) atomicio(write, remout, path, strlen(path));
636 if (response() < 0) { 636 if (response() < 0) {
637 closedir(dirp); 637 closedir(dirp);
638 return; 638 return;
@@ -651,7 +651,7 @@ rsource(name, statp)
651 source(1, vect); 651 source(1, vect);
652 } 652 }
653 (void) closedir(dirp); 653 (void) closedir(dirp);
654 (void) write(remout, "E\n", 2); 654 (void) atomicio(write, remout, "E\n", 2);
655 (void) response(); 655 (void) response();
656} 656}
657 657
@@ -687,7 +687,7 @@ sink(argc, argv)
687 if (targetshouldbedirectory) 687 if (targetshouldbedirectory)
688 verifydir(targ); 688 verifydir(targ);
689 689
690 (void) write(remout, "", 1); 690 (void) atomicio(write, remout, "", 1);
691 if (stat(targ, &stb) == 0 && S_ISDIR(stb.st_mode)) 691 if (stat(targ, &stb) == 0 && S_ISDIR(stb.st_mode))
692 targisdir = 1; 692 targisdir = 1;
693 for (first = 1;; first = 0) { 693 for (first = 1;; first = 0) {
@@ -705,7 +705,7 @@ sink(argc, argv)
705 705
706 if (buf[0] == '\01' || buf[0] == '\02') { 706 if (buf[0] == '\01' || buf[0] == '\02') {
707 if (iamremote == 0) 707 if (iamremote == 0)
708 (void) write(STDERR_FILENO, 708 (void) atomicio(write, STDERR_FILENO,
709 buf + 1, strlen(buf + 1)); 709 buf + 1, strlen(buf + 1));
710 if (buf[0] == '\02') 710 if (buf[0] == '\02')
711 exit(1); 711 exit(1);
@@ -713,7 +713,7 @@ sink(argc, argv)
713 continue; 713 continue;
714 } 714 }
715 if (buf[0] == 'E') { 715 if (buf[0] == 'E') {
716 (void) write(remout, "", 1); 716 (void) atomicio(write, remout, "", 1);
717 return; 717 return;
718 } 718 }
719 if (ch == '\n') 719 if (ch == '\n')
@@ -737,7 +737,7 @@ sink(argc, argv)
737 getnum(dummy_usec); 737 getnum(dummy_usec);
738 if (*cp++ != '\0') 738 if (*cp++ != '\0')
739 SCREWUP("atime.usec not delimited"); 739 SCREWUP("atime.usec not delimited");
740 (void) write(remout, "", 1); 740 (void) atomicio(write, remout, "", 1);
741 continue; 741 continue;
742 } 742 }
743 if (*cp != 'C' && *cp != 'D') { 743 if (*cp != 'C' && *cp != 'D') {
@@ -816,7 +816,7 @@ sink(argc, argv)
816bad: run_err("%s: %s", np, strerror(errno)); 816bad: run_err("%s: %s", np, strerror(errno));
817 continue; 817 continue;
818 } 818 }
819 (void) write(remout, "", 1); 819 (void) atomicio(write, remout, "", 1);
820 if ((bp = allocbuf(&buffer, ofd, 4096)) == NULL) { 820 if ((bp = allocbuf(&buffer, ofd, 4096)) == NULL) {
821 (void) close(ofd); 821 (void) close(ofd);
822 continue; 822 continue;
@@ -897,7 +897,7 @@ bad: run_err("%s: %s", np, strerror(errno));
897 run_err("%s: %s", np, strerror(wrerrno)); 897 run_err("%s: %s", np, strerror(wrerrno));
898 break; 898 break;
899 case NO: 899 case NO:
900 (void) write(remout, "", 1); 900 (void) atomicio(write, remout, "", 1);
901 break; 901 break;
902 case DISPLAYED: 902 case DISPLAYED:
903 break; 903 break;
@@ -932,7 +932,7 @@ response()
932 } while (cp < &rbuf[sizeof(rbuf) - 1] && ch != '\n'); 932 } while (cp < &rbuf[sizeof(rbuf) - 1] && ch != '\n');
933 933
934 if (!iamremote) 934 if (!iamremote)
935 (void) write(STDERR_FILENO, rbuf, cp - rbuf); 935 (void) atomicio(write, STDERR_FILENO, rbuf, cp - rbuf);
936 ++errs; 936 ++errs;
937 if (resp == 1) 937 if (resp == 1)
938 return (-1); 938 return (-1);
@@ -1008,7 +1008,7 @@ run_err(const char *fmt,...)
1008 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 1008 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1009 * SUCH DAMAGE. 1009 * SUCH DAMAGE.
1010 * 1010 *
1011 * $Id: scp.c,v 1.20 2000/04/19 06:26:14 damien Exp $ 1011 * $Id: scp.c,v 1.21 2000/05/01 11:10:33 damien Exp $
1012 */ 1012 */
1013 1013
1014char * 1014char *
@@ -1240,7 +1240,7 @@ progressmeter(int flag)
1240 alarmtimer(1); 1240 alarmtimer(1);
1241 } else if (flag == 1) { 1241 } else if (flag == 1) {
1242 alarmtimer(0); 1242 alarmtimer(0);
1243 write(fileno(stdout), "\n", 1); 1243 atomicio(write, fileno(stdout), "\n", 1);
1244 statbytes = 0; 1244 statbytes = 0;
1245 } 1245 }
1246} 1246}