diff options
Diffstat (limited to 'net/cftp/patches/patch-aa')
-rw-r--r-- | net/cftp/patches/patch-aa | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/net/cftp/patches/patch-aa b/net/cftp/patches/patch-aa deleted file mode 100644 index 534f568e12c..00000000000 --- a/net/cftp/patches/patch-aa +++ /dev/null @@ -1,87 +0,0 @@ -$NetBSD: patch-aa,v 1.1 2001/12/10 16:05:27 dillo Exp $ - ---- ftp.c 2001/09/11 18:13:09 1.57 -+++ ftp.c 2001/10/05 13:13:49 1.58 -@@ -956,7 +956,8 @@ - ftp_cat(FILE *fin, FILE *fout, long start, long size, int upload) - { - char buf[4096], buf2[8192], *p; -- int nread, nwritten, err, trail_cr; -+ int nread, nwritten, err, trail_cr, errno_copy; -+ enum { ERR_NONE, ERR_FIN, ERR_FOUT } error_cause; - int old_alarm; - long got; - struct itimerval itv; -@@ -983,6 +984,7 @@ - ret=fcntl(fileno(fout), F_SETFL, flags); - } - -+ error_cause = ERR_NONE; - trail_cr = 0; - do_read = 1; - for (;;) { -@@ -993,7 +995,6 @@ - ret=select(fileno(fin)+1, &fds, NULL, NULL, NULL); - - if (ret != -1 && FD_ISSET(fileno(fin), &fds)) { -- errno = 0; - if ((nread=fread(buf, 1, 4096, fin)) > 0) { - do_read = 0; - nwritten = 0; -@@ -1009,8 +1010,13 @@ - &trail_cr); - } - } -- else if (errno != EAGAIN) -+ else { -+ if (nread < 0 && errno != EAGAIN) { -+ errno_copy = errno; -+ error_cause = ERR_FIN; -+ } - break; -+ } - } - } - else { -@@ -1018,10 +1024,12 @@ - ret=select(fileno(fin)+1, &fds, NULL, NULL, NULL); - - if (ret != -1 && FD_ISSET(fileno(fin), &fds)) { -- errno = 0; - if ((err=fwrite(p+nwritten, 1, nread-nwritten, -- fout)) < 0 && errno != EAGAIN) -+ fout)) < 0 && errno != EAGAIN) { -+ errno_copy = errno; -+ error_cause = ERR_FOUT; - break; -+ } - nwritten += err; - got += err; - -@@ -1046,17 +1054,17 @@ - - _ftp_transfer_stats_cleanup(&trstat); - -- if (ferror(fin) || sig_intr) { -- errno = 0; -+ if (error_cause || sig_intr) { - sig_intr = 0; -- ftp_abort(fin); -- return -1; -- } -- else if (ferror(fout)) { -- err = errno; -- errno = 0; - ftp_abort(fin); -- disp_status("write error: %s", strerror(err)); -+ switch (error_cause) { -+ case ERR_FIN: -+ disp_status("read error: %s", strerror(errno_copy)); -+ break; -+ case ERR_FOUT: -+ disp_status("write error: %s", strerror(errno_copy)); -+ break; -+ } - return -1; - } - |