From 55795751a1513b7018b38c6c50c5bccc710feff2 Mon Sep 17 00:00:00 2001 From: Ken Hornstein Date: Fri, 6 Jan 2012 10:48:03 -0500 Subject: [PATCH] Garbage collect all of the builtin ftp client support. --- acconfig.h | 9 - docs/pending-release-notes | 4 + h/arpa_ftp.h | 109 ---------- uip/Makefile.in | 26 +-- uip/ftpsbr.c | 515 -------------------------------------------- uip/mhbuildsbr.c | 3 - uip/mhparse.c | 16 -- 7 files changed, 17 insertions(+), 665 deletions(-) delete mode 100644 h/arpa_ftp.h delete mode 100644 uip/ftpsbr.c diff --git a/acconfig.h b/acconfig.h index a326761..a6d8742 100644 --- a/acconfig.h +++ b/acconfig.h @@ -26,15 +26,6 @@ /* #define REALLYDUMB 1 */ /* - * Compile simple ftp client into mhn. This will be used by mhn - * for ftp access unless you have specified another access method - * in your .mh_profile or mhn.defaults. Use the "mhn-access-ftp" - * profile entry to override this. Check mhn(1) man page for - * details. - */ -#define BUILTIN_FTP 1 - -/* * If you enable POP support, this is the the port name that nmh will use. Make * sure this is defined in your /etc/services file (or its NIS/NIS+ equivalent). * If you are using KPOP, you will need to change this to "kpop" unless you want diff --git a/docs/pending-release-notes b/docs/pending-release-notes index 14ad579..83c39ee 100644 --- a/docs/pending-release-notes +++ b/docs/pending-release-notes @@ -8,3 +8,7 @@ Things to add to the release notes for the next full release: - Old code enabled by the UCI preprocessor definition has been garbage-collected. - LOCKDIR is now configurable via --enable-lockdir +- All configuration options that were formerly only adjustable via editing + config.h have been removed. +- Support for the built-in ftp client (used when dealing with external body + message parts in MIME messages) has been removed. diff --git a/h/arpa_ftp.h b/h/arpa_ftp.h deleted file mode 100644 index 64532b9..0000000 --- a/h/arpa_ftp.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) 1983, 1989, 1993 - * The Regents of the University of California. All rights reserved. - * - * 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. - * - * @(#)ftp.h 8.1 (Berkeley) 6/2/93 - */ - -#ifndef _FTP_H_ -#define _FTP_H_ - -/* Definitions for FTP; see RFC-765. */ - -/* - * Reply codes. - */ -#define PRELIM 1 /* positive preliminary */ -#define COMPLETE 2 /* positive completion */ -#define CONTINUE 3 /* positive intermediate */ -#define TRANSIENT 4 /* transient negative completion */ -#define ERROR 5 /* permanent negative completion */ - -/* - * Type codes - */ -#define TYPE_A 1 /* ASCII */ -#define TYPE_E 2 /* EBCDIC */ -#define TYPE_I 3 /* image */ -#define TYPE_L 4 /* local byte size */ - -#ifdef FTP_NAMES -char *typenames[] = {"0", "ASCII", "EBCDIC", "Image", "Local" }; -#endif - -/* - * Form codes - */ -#define FORM_N 1 /* non-print */ -#define FORM_T 2 /* telnet format effectors */ -#define FORM_C 3 /* carriage control (ASA) */ -#ifdef FTP_NAMES -char *formnames[] = {"0", "Nonprint", "Telnet", "Carriage-control" }; -#endif - -/* - * Structure codes - */ -#define STRU_F 1 /* file (no record structure) */ -#define STRU_R 2 /* record structure */ -#define STRU_P 3 /* page structure */ -#ifdef FTP_NAMES -char *strunames[] = {"0", "File", "Record", "Page" }; -#endif - -/* - * Mode types - */ -#define MODE_S 1 /* stream */ -#define MODE_B 2 /* block */ -#define MODE_C 3 /* compressed */ -#ifdef FTP_NAMES -char *modenames[] = {"0", "Stream", "Block", "Compressed" }; -#endif - -/* - * Record Tokens - */ -#define REC_ESC '\377' /* Record-mode Escape */ -#define REC_EOR '\001' /* Record-mode End-of-Record */ -#define REC_EOF '\002' /* Record-mode End-of-File */ - -/* - * Block Header - */ -#define BLK_EOR 0x80 /* Block is End-of-Record */ -#define BLK_EOF 0x40 /* Block is End-of-File */ -#define BLK_ERRORS 0x20 /* Block is suspected of containing errors */ -#define BLK_RESTART 0x10 /* Block is Restart Marker */ - -#define BLK_BYTECOUNT 2 /* Bytes in this block */ - -#endif /* !_FTP_H_ */ diff --git a/uip/Makefile.in b/uip/Makefile.in index 5b5ed02..d676db0 100644 --- a/uip/Makefile.in +++ b/uip/Makefile.in @@ -68,7 +68,7 @@ SCMDS = inc # source files SRCS = ali.c aliasbr.c anno.c annosbr.c ap.c burst.c comp.c \ conflict.c dist.c distsbr.c dp.c dropsbr.c flist.c fmtdump.c \ - folder.c forw.c ftpsbr.c inc.c install-mh.c mark.c md5.c mhbuild.c \ + folder.c forw.c inc.c install-mh.c mark.c md5.c mhbuild.c \ mhbuildsbr.c mhcachesbr.c mhfree.c mhl.c mhlist.c mhlistsbr.c \ mhlsbr.c mhmail.c mhmisc.c mhn.c mhoutsbr.c mhparam.c mhparse.c \ mhpath.c mhshow.c mhshowsbr.c mhstore.c mhstoresbr.c mhtest.c \ @@ -135,20 +135,20 @@ install-mh: install-mh.o $(LOCALLIBS) mark: mark.o $(LOCALLIBS) $(LINK) mark.o $(LINKLIBS) -mhbuild: mhbuild.o mhbuildsbr.o mhcachesbr.o mhlistsbr.o mhoutsbr.o mhmisc.o mhfree.o mhparse.o ftpsbr.o termsbr.o md5.o $(LOCALLIBS) - $(LINK) mhbuild.o mhbuildsbr.o mhcachesbr.o mhlistsbr.o mhoutsbr.o mhmisc.o mhfree.o mhparse.o ftpsbr.o md5.o $(LINKLIBS) $(TERMLIB) +mhbuild: mhbuild.o mhbuildsbr.o mhcachesbr.o mhlistsbr.o mhoutsbr.o mhmisc.o mhfree.o mhparse.o termsbr.o md5.o $(LOCALLIBS) + $(LINK) mhbuild.o mhbuildsbr.o mhcachesbr.o mhlistsbr.o mhoutsbr.o mhmisc.o mhfree.o mhparse.o md5.o $(LINKLIBS) $(TERMLIB) mhl: mhl.o mhlsbr.o termsbr.o $(LOCALLIBS) $(LINK) mhl.o mhlsbr.o termsbr.o $(LINKLIBS) $(TERMLIB) -mhlist: mhlist.o mhparse.o mhcachesbr.o mhlistsbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LOCALLIBS) - $(LINK) mhlist.o mhparse.o mhcachesbr.o mhlistsbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) +mhlist: mhlist.o mhparse.o mhcachesbr.o mhlistsbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LOCALLIBS) + $(LINK) mhlist.o mhparse.o mhcachesbr.o mhlistsbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) mhmail: mhmail.o $(LOCALLIBS) $(LINK) mhmail.o $(LINKLIBS) -mhn: mhn.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LOCALLIBS) - $(LINK) mhn.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) +mhn: mhn.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LOCALLIBS) + $(LINK) mhn.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) mhparam: mhparam.o $(LOCALLIBS) $(LINK) mhparam.o $(LINKLIBS) @@ -156,14 +156,14 @@ mhparam: mhparam.o $(LOCALLIBS) mhpath: mhpath.o $(LOCALLIBS) $(LINK) mhpath.o $(LINKLIBS) -mhshow: mhshow.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LOCALLIBS) - $(LINK) mhshow.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) +mhshow: mhshow.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LOCALLIBS) + $(LINK) mhshow.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) -mhstore: mhstore.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LOCALLIBS) - $(LINK) mhstore.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) +mhstore: mhstore.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LOCALLIBS) + $(LINK) mhstore.o mhparse.o mhcachesbr.o mhshowsbr.o mhlistsbr.o mhstoresbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) -mhtest: mhtest.o mhparse.o mhcachesbr.o mhoutsbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LOCALLIBS) - $(LINK) mhtest.o mhparse.o mhcachesbr.o mhoutsbr.o mhmisc.o mhfree.o ftpsbr.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) +mhtest: mhtest.o mhparse.o mhcachesbr.o mhoutsbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LOCALLIBS) + $(LINK) mhtest.o mhparse.o mhcachesbr.o mhoutsbr.o mhmisc.o mhfree.o termsbr.o md5.o $(LINKLIBS) $(TERMLIB) msgchk: msgchk.o $(POPLIB) $(LOCALLIBS) $(LINK) msgchk.o $(POPLIB) $(LINKLIBS) diff --git a/uip/ftpsbr.c b/uip/ftpsbr.c deleted file mode 100644 index 0ffca35..0000000 --- a/uip/ftpsbr.c +++ /dev/null @@ -1,515 +0,0 @@ -/* - * ftpsbr.c -- simple FTP client library - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ - -#include -#include - -#include "h/arpa_ftp.h" - -#define v_debug debugsw -#define v_verbose verbosw - -static int ftp_fd = NOTOK; -static int data_fd = NOTOK; - -static int v_noise; - -extern int v_debug; -extern int v_verbose; - -#include -#include -#include -#include -#include - -#define start_tcp_client(res) \ - socket (res->ai_family, res->ai_socktype, res->ai_protocol) - -#define join_tcp_server(fd, sock, len) \ - connect ((fd), (struct sockaddr *) (sock), len) - -/* - * prototypes - */ -int ftp_get (char *, char *, char *, char *, char *, char *, int, int); -int ftp_trans (char *, char *, char *, char *, char *, char *, char *, int, int); - -/* - * static prototypes - */ -static int start_tcp_server (struct sockaddr_in *, int, int, int); -static void _asnprintf (char *, int, char *, va_list); -static int ftp_quit (void); -static int ftp_read (char *, char *, char *, int); -static int initconn (void); -static int dataconn (void); -static int command (int arg1, ...); -static int vcommand (int, va_list); -static int getreply (int, int); - - -static int -start_tcp_server (struct sockaddr_in *sock, int backlog, int opt1, int opt2) -{ - int eindex, sd; - - if ((sd = socket (AF_INET, SOCK_STREAM, 0)) == NOTOK) - return NOTOK; - - if (bind (sd, (struct sockaddr *) sock, sizeof *sock) == NOTOK) { - eindex = errno; - close (sd); - errno = eindex; - } else { - listen (sd, backlog); - } - - return sd; -} - - -static int __len__; - -#define join_tcp_client(fd,sock) \ - accept ((fd), (struct sockaddr *) (sock), \ - (__len__ = sizeof *(sock), &__len__)) - -#define read_tcp_socket read -#define write_tcp_socket write -#define close_tcp_socket close - -static void -_asnprintf (char *bp, int len_bp, char *what, va_list ap) -{ - int eindex, len; - char *fmt; - - eindex = errno; - - *bp = '\0'; - fmt = va_arg (ap, char *); - - if (fmt) { - vsnprintf(bp, len_bp, fmt, ap); - len = strlen(bp); - bp += len; - len_bp -= len; - } - - if (what) { - char *s; - - if (*what) { - snprintf (bp, len_bp, " %s: ", what); - len = strlen (bp); - bp += len; - len_bp -= len; - } - if ((s = strerror(eindex))) - strncpy (bp, s, len_bp); - else - snprintf (bp, len_bp, "Error %d", eindex); - bp += strlen (bp); - } - - errno = eindex; -} - - -int -ftp_get (char *host, char *user, char *password, char *cwd, - char *remote, char *local, int ascii, int stayopen) -{ - return ftp_trans (host, user, password, cwd, remote, local, - "RETR", ascii, stayopen); -} - - -int -ftp_trans (char *host, char *user, char *password, char *cwd, char *remote, - char *local, char *cmd, int ascii, int stayopen) -{ - int result; - - if (stayopen <= 0) { - result = ftp_quit (); - if (host == NULL) - return result; - } - - if (ftp_fd == NOTOK) { - struct addrinfo hints, *res; - - memset(&hints, 0, sizeof(hints)); -#ifdef AI_ADDRCONFIG - hints.ai_flags = AI_ADDRCONFIG; -#endif - hints.ai_family = PF_INET; - hints.ai_socktype = SOCK_STREAM; - - result = getaddrinfo(host, "ftp", &hints, &res); - - if (result) { - fprintf(stderr, "%s/ftp: %s\n", host, gai_strerror(result)); - return NOTOK; - } - - if ((ftp_fd = start_tcp_client (res)) == NOTOK) { - perror (host); - freeaddrinfo(res); - return NOTOK; - } - if (join_tcp_server (ftp_fd, res->ai_addr, res->ai_addrlen) == NOTOK) { - perror (host); - freeaddrinfo(res); - close_tcp_socket (ftp_fd), ftp_fd = NOTOK; - return NOTOK; - } - freeaddrinfo(res); - getreply (1, 0); - - if (v_verbose) { - fprintf (stdout, "Connected to %s\n", host); - fflush (stdout); - } - - if (user) { - if ((result = command (0, "USER %s", user)) == CONTINUE) - result = command (1, "PASS %s", password); - if (result != COMPLETE) { - result = NOTOK; - goto out; - } - } - - if (remote == NULL) - return OK; - } - - if (cwd && ((result = command (0, "CWD %s", cwd)) != COMPLETE - && result != CONTINUE)) { - result = NOTOK; - goto out; - } - - if (command (1, ascii ? "TYPE A" : "TYPE I") != COMPLETE) { - result = NOTOK; - goto out; - } - - result = ftp_read (remote, local, cmd, ascii); - -out: ; - if (result != OK || !stayopen) - ftp_quit (); - - return result; -} - - -static int -ftp_quit (void) -{ - int n; - - if (ftp_fd == NOTOK) - return OK; - - n = command (1, "QUIT"); - close_tcp_socket (ftp_fd), ftp_fd = NOTOK; - return (n == 0 || n == COMPLETE ? OK : NOTOK); -} - -static int -ftp_read (char *remote, char *local, char *cmd, int ascii) -{ - int istdio = 0, istore; - register int cc; - int expectingreply = 0; - char buffer[BUFSIZ]; - FILE *fp = NULL; - - if (initconn () == NOTOK) - goto bad; - - v_noise = v_verbose; - if (command (-1, *remote ? "%s %s" : "%s", cmd, remote) != PRELIM) - goto bad; - - expectingreply++; - if (dataconn () == NOTOK) { -bad: ; - if (fp && !istdio) - fclose (fp); - if (data_fd != NOTOK) - close_tcp_socket (data_fd), data_fd = NOTOK; - if (expectingreply) - getreply (-2, 0); - - return NOTOK; - } - - istore = !strcmp (cmd, "STOR"); - - if ((istdio = !strcmp (local, "-"))) - fp = istore ? stdin : stdout; - else - if ((fp = fopen (local, istore ? "r" : "w")) == NULL) { - perror (local); - goto bad; - } - - if (istore) { - if (ascii) { - int c; - FILE *out; - - if (!(out = fdopen (data_fd, "w"))) { - perror ("fdopen"); - goto bad; - } - - while ((c = getc (fp)) != EOF) { - if (c == '\n') - putc ('\r', out); - if (putc (c, out) == EOF) { - perror ("putc"); - fclose (out); - data_fd = NOTOK; - goto bad; - } - } - - fclose (out); - data_fd = NOTOK; - } - else { - while ((cc = fread (buffer, sizeof *buffer, sizeof buffer, fp)) > 0) - if (write_tcp_socket (data_fd, buffer, cc) != cc) { - perror ("write_tcp_socket"); - goto bad; - } - - close_tcp_socket (data_fd), data_fd = NOTOK; - } - } - else { - if (ascii) { - int c; - FILE *in; - - if (!(in = fdopen (data_fd, "r"))) { - perror ("fdopen"); - goto bad; - } - - while ((c = getc (in)) != EOF) { - if (c == '\r') - switch (c = getc (in)) { - case EOF: - case '\0': - c = '\r'; - break; - - case '\n': - break; - - default: - putc ('\r', fp); - break; - } - - if (putc (c, fp) == EOF) { - perror ("putc"); - fclose (in); - data_fd = NOTOK; - goto bad; - } - } - - fclose (in); - data_fd = NOTOK; - } - else { - while ((cc = read_tcp_socket (data_fd, buffer, sizeof buffer)) > 0) - if (fwrite (buffer, sizeof *buffer, cc, fp) == 0) { - perror ("fwrite"); - goto bad; - } - if (cc < 0) { - perror ("read_tcp_socket"); - goto bad; - } - - close_tcp_socket (data_fd), data_fd = NOTOK; - } - } - - if (!istdio) - fclose (fp); - - v_noise = v_verbose; - return (getreply (1, 0) == COMPLETE ? OK : NOTOK); -} - - -#define UC(b) (((int) b) & 0xff) - -static int -initconn (void) -{ - int len; - register char *a, *p; - struct sockaddr_in in_socket; - - if (getsockname (ftp_fd, (struct sockaddr *) &in_socket, - (len = sizeof(in_socket), &len)) == NOTOK) { - perror ("getsockname"); - return NOTOK; - } - in_socket.sin_port = 0; - if ((data_fd = start_tcp_server (&in_socket, 1, 0, 0)) == NOTOK) { - perror ("start_tcp_server"); - return NOTOK; - } - - if (getsockname (data_fd, (struct sockaddr *) &in_socket, - (len = sizeof in_socket, &len)) == NOTOK) { - perror ("getsockname"); - return NOTOK; - } - - a = (char *) &in_socket.sin_addr; - p = (char *) &in_socket.sin_port; - - if (command (1, "PORT %d,%d,%d,%d,%d,%d", - UC(a[0]), UC(a[1]), UC(a[2]), UC(a[3]), - UC(p[0]), UC(p[1])) == COMPLETE) - return OK; - - return NOTOK; -} - -static int -dataconn (void) -{ - int fd; - struct sockaddr_in in_socket; - - if ((fd = join_tcp_client (data_fd, &in_socket)) == NOTOK) { - perror ("join_tcp_client"); - return NOTOK; - } - close_tcp_socket (data_fd); - data_fd = fd; - - return OK; -} - - -static int -command (int arg1, ...) -{ - int val; - va_list ap; - - va_start (ap, arg1); - val = vcommand (arg1, ap); - va_end (ap); - - return val; -} - -static int -vcommand (int complete, va_list ap) -{ - int len; - char buffer[BUFSIZ]; - - if (ftp_fd == NOTOK) - return NOTOK; - - _asnprintf (buffer, sizeof(buffer), NULL, ap); - if (v_debug) - fprintf (stderr, "<--- %s\n", buffer); - - strcat (buffer, "\r\n"); - len = strlen (buffer); - - if (write_tcp_socket (ftp_fd, buffer, len) != len) { - perror ("write_tcp_socket"); - return NOTOK; - } - - return (getreply (complete, !strcmp (buffer, "QUIT"))); -} - - -static int -getreply (int complete, int expecteof) -{ - for (;;) { - register int code, dig, n; - int continuation; - register char *bp; - char buffer[BUFSIZ]; - - code = dig = n = continuation = 0; - bp = buffer; - - for (;;) { - unsigned char c; - - if (read_tcp_socket (ftp_fd, &c, 1) < 1) { - if (expecteof) - return OK; - - perror ("read_tcp_socket"); - return DONE; - } - if (c == '\n') - break; - *bp++ = c != '\r' ? c : '\0'; - - dig++; - if (dig < 4) { - if (isdigit(c)) - code = code * 10 + (c - '0'); - else /* XXX: naughty FTP... */ - if (isspace (c)) - continuation++; - } - else - if (dig == 4 && c == '-') - continuation++; - if (n == 0) - n = c; - } - - if (v_debug) - fprintf (stderr, "---> %s\n", buffer); - if (continuation) - continue; - - n -= '0'; - - if (v_noise) { - fprintf (stdout, "%s\n", buffer); - fflush (stdout); - v_noise = 0; - } - else - if ((complete == -1 && n != PRELIM) - || (complete == 0 && n != CONTINUE && n != COMPLETE) - || (complete == 1 && n != COMPLETE)) - fprintf (stderr, "%s\n", buffer); - - return n; - } -} diff --git a/uip/mhbuildsbr.c b/uip/mhbuildsbr.c index a36941f..ea2bcd6 100644 --- a/uip/mhbuildsbr.c +++ b/uip/mhbuildsbr.c @@ -71,9 +71,6 @@ void content_error (char *, CT, char *, ...); /* mhcachesbr.c */ int find_cache (CT, int, int *, char *, char *, int); -/* ftpsbr.c */ -int ftp_get (char *, char *, char *, char *, char *, char *, int, int); - /* mhfree.c */ void free_content (CT); void free_ctinfo (CT); diff --git a/uip/mhparse.c b/uip/mhparse.c index 14322ab..4959dfe 100644 --- a/uip/mhparse.c +++ b/uip/mhparse.c @@ -2485,10 +2485,8 @@ openFTP (CT ct, char **file) if ((ftp = context_find (nmhaccessftp)) && !*ftp) ftp = NULL; -#ifndef BUILTIN_FTP if (!ftp) return NOTOK; -#endif switch (openExternal (e->eb_parent, e->eb_content, ce, file, &fd)) { case NOTOK: @@ -2587,9 +2585,6 @@ openFTP (CT ct, char **file) return NOTOK; } -#ifdef BUILTIN_FTP - if (ftp) -#endif { int child_id, i, vecp; char *vec[9]; @@ -2625,9 +2620,6 @@ openFTP (CT ct, char **file) default: if (pidXwait (child_id, NULL)) { -#ifdef BUILTIN_FTP -losing_ftp: -#endif username = password = NULL; ce->ce_unlink = 1; return NOTOK; @@ -2635,14 +2627,6 @@ losing_ftp: break; } } -#ifdef BUILTIN_FTP - else - if (ftp_get (e->eb_site, user, pass, e->eb_dir, e->eb_name, - ce->ce_file, - e->eb_mode && !mh_strcasecmp (e->eb_mode, "ascii"), 0) - == NOTOK) - goto losing_ftp; -#endif if (cachefile[0]) { if (caching) -- 1.7.10.4