X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/1c15e88899094343f75aeba04122cd96a96b428e..ad7871609881e73855d0b04da49b486cd93efca7:/usr/src/usr.bin/ftp/ftp.c diff --git a/usr/src/usr.bin/ftp/ftp.c b/usr/src/usr.bin/ftp/ftp.c index c54f7e3d9b..77f07c8a8e 100644 --- a/usr/src/usr.bin/ftp/ftp.c +++ b/usr/src/usr.bin/ftp/ftp.c @@ -1,24 +1,38 @@ /* - * Copyright (c) 1985, 1989 Regents of the University of California. - * All rights reserved. + * Copyright (c) 1985, 1989, 1993 + * The Regents of the University of California. All rights reserved. * - * Redistribution and use in source and binary forms are permitted provided - * that: (1) source distributions retain this entire copyright notice and - * comment, and (2) distributions including binaries display the following - * acknowledgement: ``This product includes software developed by the - * University of California, Berkeley and its contributors'' in the - * documentation or other materials provided with the distribution and in - * all advertising materials mentioning features or use of this software. - * Neither the name of the University nor the names of its contributors may - * be used to endorse or promote products derived from this software without - * specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. */ #ifndef lint -static char sccsid[] = "@(#)ftp.c 5.36 (Berkeley) 6/29/90"; +static char sccsid[] = "@(#)ftp.c 8.1 (Berkeley) 6/6/93"; #endif /* not lint */ #include @@ -34,13 +48,16 @@ static char sccsid[] = "@(#)ftp.c 5.36 (Berkeley) 6/29/90"; #include #include -#include #include -#include #include #include +#include #include #include +#include +#include +#include +#include #include "ftp_var.h" @@ -50,11 +67,9 @@ int data = -1; int abrtflag = 0; int ptflag = 0; struct sockaddr_in myctladdr; -uid_t getuid(); sig_t lostpeer(); off_t restart_point = 0; -extern char *strerror(); extern int connected, errno; FILE *cin, *cout; @@ -283,7 +298,7 @@ va_dcl cpend = 1; r = getreply(!strcmp(fmt, "QUIT")); if (abrtflag && oldintr != SIG_IGN) - (*oldintr)(); + (*oldintr)(SIGINT); (void) signal(SIGINT, oldintr); return(r); } @@ -390,7 +405,7 @@ getreply(expecteof) if (code == 421 || originalcode == 421) lostpeer(); if (abrtflag && oldintr != cmdabort && oldintr != SIG_IGN) - (*oldintr)(); + (*oldintr)(SIGINT); return (n - '0'); } } @@ -581,10 +596,8 @@ sendrequest(cmd, local, remote, printnames) if (c < 0) fprintf(stderr, "local: %s: %s\n", local, strerror(errno)); - if (d <= 0) { - if (d == 0) - fprintf(stderr, "netout: write returned 0?\n"); - else if (errno != EPIPE) + if (d < 0) { + if (errno != EPIPE) perror("netout"); bytes = -1; } @@ -687,9 +700,7 @@ recvrequest(cmd, local, remote, lmode, printnames) register int c, d; struct timeval start, stop; struct stat st; - off_t lseek(); void abortrecv(); - char *malloc(); is_retr = strcmp(cmd, "RETR") == 0; if (is_retr && verbose && printnames) { @@ -832,7 +843,7 @@ recvrequest(cmd, local, remote, lmode, printnames) case TYPE_I: case TYPE_L: if (restart_point && - lseek(fileno(fout), (long) restart_point, L_SET) < 0) { + lseek(fileno(fout), (off_t)restart_point, L_SET) < 0) { fprintf(stderr, "local: %s: %s\n", local, strerror(errno)); if (closefunc != NULL) @@ -1211,7 +1222,7 @@ pswitch(flag) (void) signal(SIGINT, oldintr); if (abrtflag) { abrtflag = 0; - (*oldintr)(); + (*oldintr)(SIGINT); } }