Skip site navigation (1)Skip section navigation (2)
Date:      20 Jul 2000 09:26:10 +0200
From:      Dag-Erling Smorgrav <des@flood.ping.uio.no>
To:        "Jordan K. Hubbard" <jkh@zippy.osd.bsdi.com>
Cc:        committers@FreeBSD.org, stable@FreeBSD.org
Subject:   Re: 4.1-STABLE code freeze on July 20th.
Message-ID:  <xzpu2dlfejx.fsf@flood.ping.uio.no>
In-Reply-To: "Jordan K. Hubbard"'s message of "Tue, 18 Jul 2000 01:55:16 -0700"
References:  <9405.963910516@localhost>

next in thread | previous in thread | raw e-mail | index | archive | help
--=-=-=

"Jordan K. Hubbard" <jkh@zippy.osd.bsdi.com> writes:
>                                           [...]  We're also going to
> start releasing 4.1-RC (release candidate) releases very shortly from
> ftp://releng4.freebsd.org/pub/FreeBSD so that more advance testing can
> be done.

Please fix ftpd on releng4! :)

I've attached an updated patch.


--=-=-=
Content-Disposition: attachment; filename=ftpd.diff
Content-Description: patch

Index: ftpd.c
===================================================================
RCS file: /home/ncvs/src/libexec/ftpd/ftpd.c,v
retrieving revision 1.64
diff -u -r1.64 ftpd.c
--- ftpd.c	2000/06/26 05:36:09	1.64
+++ ftpd.c	2000/07/20 07:20:48
@@ -139,6 +139,7 @@
 int	anon_only = 0;    /* Only anonymous ftp allowed */
 int	guest;
 int	dochroot;
+int	have_tar;
 int	stats;
 int	statfd = -1;
 int	type;
@@ -1302,6 +1303,9 @@
 		goto bad;
 	}
 
+	/* Check the availability of tar */
+	have_tar = (access(_PATH_TAR, X_OK) == 0);
+
 	/*
 	 * Display a login message, if it exists.
 	 * N.B. reply(230,) must follow the message.
@@ -1379,15 +1383,34 @@
 retrieve(cmd, name)
 	char *cmd, *name;
 {
+	char dir[MAXPATHLEN];
 	FILE *fin, *dout;
 	struct stat st;
 	int (*closefunc) __P((FILE *));
 	time_t start;
+	size_t len;
 
 	if (cmd == 0) {
 		fin = fopen(name, "r"), closefunc = fclose;
 		st.st_size = 0;
-	} else {
+	}
+	if (cmd == 0 && fin == NULL && errno == ENOENT && have_tar) {
+		len = strlen(name) - 4;
+		if (len > 0 && len < MAXPATHLEN &&
+		    (strcmp(name + len, ".tar") == 0 ||
+		     strcmp(name + len, ".tgz") == 0)) {
+			strncpy(dir, name, len);
+			dir[len] = 0;
+			if (stat(dir, &st) != -1 && S_ISDIR(st.st_mode)) {
+				if (name[len + 3] == 'z')
+					cmd = _PATH_TAR " -zcf - %s";
+				else
+					cmd = _PATH_TAR " -cf - %s";
+				name = dir;
+			}
+		}
+	}
+	if (cmd != 0) {
 		char line[BUFSIZ];
 
 		(void) snprintf(line, sizeof(line), cmd, name), name = line;
Index: popen.c
===================================================================
RCS file: /home/ncvs/src/libexec/ftpd/popen.c,v
retrieving revision 1.18
diff -u -r1.18 popen.c
--- popen.c	2000/01/27 09:28:21	1.18
+++ popen.c	2000/07/20 01:41:14
@@ -132,7 +132,6 @@
 				dup2(pdes[1], STDOUT_FILENO);
 				(void)close(pdes[1]);
 			}
-			dup2(STDOUT_FILENO, STDERR_FILENO); /* stderr too! */
 			(void)close(pdes[0]);
 		} else {
 			if (pdes[0] != STDIN_FILENO) {
Index: paths.h
===================================================================
RCS file: /home/ncvs/src/include/paths.h,v
retrieving revision 1.9
diff -u -r1.9 paths.h
--- paths.h	1999/01/11 09:07:41	1.9
+++ paths.h	2000/07/20 00:32:34
@@ -59,6 +59,7 @@
 #define	_PATH_NOLOGIN	"/var/run/nologin"
 #define	_PATH_SENDMAIL	"/usr/sbin/sendmail"
 #define	_PATH_SHELLS	"/etc/shells"
+#define	_PATH_TAR	"/usr/bin/tar"
 #define	_PATH_TTY	"/dev/tty"
 #define	_PATH_UNIX	"don't use _PATH_UNIX"
 #define	_PATH_VI	"/usr/bin/vi"

--=-=-=


DES
-- 
Dag-Erling Smorgrav - des@flood.ping.uio.no

--=-=-=--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?xzpu2dlfejx.fsf>