mirror of
git://git.openembedded.org/meta-openembedded
synced 2026-01-01 13:58:06 +00:00
inetutils : Update to 1.9.1
* There are difference spaces between inetutils-1.8/COPYING
and inetutils-1.9.1/COPYING,so md5sum is changed.
* the following patches are accepted by inetutils 1.9.1 upstream
inetutils-1.8-1005-ftpd-add-daemon-D-nommu-support.patch
inetutils-1.8-1004-detect-fork-support.patch
inetutils-1.8-1003-use-daemon-from-the-C-library-when-possible.patch
inetutils-1.8-1002-rshd-detect-__rcmd_errstr-support-in-the-C-lib.patch
inetutils-1.8-1001-ftp-rename-ruserpass-to-avoid-C-library-collision.patch
inetutils-1.8-0002-argp-fix-program_invocation_name-detection.patch
Signed-off-by: Chunrong Guo <b40290@freescale.com>
This commit is contained in:
parent
eb63724f43
commit
11a6ce97f7
|
|
@ -0,0 +1,16 @@
|
|||
Upstream-Status: Pending
|
||||
|
||||
disable pre-ANSI compilers
|
||||
|
||||
Signed-off-by: Chunrong Guo <b40290@freescale.com>
|
||||
--- inetutils-1.9.1/configure.ac 2012-01-06 22:05:05.000000000 +0800
|
||||
+++ inetutils-1.9.1/configure.ac 2012-11-12 14:05:30.756957063 +0800
|
||||
@@ -586,7 +586,7 @@
|
||||
#include <arpa/tftp.h>])
|
||||
|
||||
### Checks for compiler characteristics.
|
||||
-AM_C_PROTOTYPES dnl FIXME: Does inetutils even compile on pre-ANSI compilers?
|
||||
+#AM_C_PROTOTYPES dnl FIXME: Does inetutils even compile on pre-ANSI compilers?
|
||||
AC_C_CONST
|
||||
|
||||
dnl See if `weak refs' are possible; these make it possible (with shared
|
||||
|
|
@ -1,5 +1,7 @@
|
|||
Upstream: http://www.mail-archive.com/bug-inetutils@gnu.org/msg02103.html
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
diff -ur inetutils-1.8.orig/ping/ping_common.h inetutils-1.8/ping/ping_common.h
|
||||
--- inetutils-1.8.orig/ping/ping_common.h 2010-05-15 20:55:47.000000000 +0930
|
||||
+++ inetutils-1.8/ping/ping_common.h 2010-12-01 12:19:08.000000000 +1030
|
||||
|
|
@ -3,6 +3,8 @@ From: Mike Frysinger <vapier at gentoo.org>
|
|||
Date: Thu, 18 Nov 2010 16:59:14 -0500
|
||||
Subject: [PATCH gnulib] printf-parse: pull in features.h for __GLIBC__
|
||||
|
||||
Upstream-Status: Pending
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
lib/printf-parse.h | 3 +++
|
||||
|
|
@ -1,3 +1,5 @@
|
|||
Upstream-Status: Pending
|
||||
|
||||
--- inetutils-1.8/lib/wchar.in.h
|
||||
+++ inetutils-1.8/lib/wchar.in.h
|
||||
@@ -70,6 +70,9 @@
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
Uptream-Status: Pending
|
||||
|
||||
remove gets function
|
||||
|
||||
Signed-off-by: Chunrong Guo <b40290@freescale.com>
|
||||
--- inetutils-1.9.1.org/lib/stdio.in.h 2012-01-06 22:11:13.000000000 +0800
|
||||
+++ inetutils-1.9.1/lib/stdio.in.h 2012-11-12 14:30:49.044958001 +0800
|
||||
@@ -715,9 +715,13 @@
|
||||
/* It is very rare that the developer ever has full control of stdin,
|
||||
so any use of gets warrants an unconditional warning. Assume it is
|
||||
always declared, since it is required by C89. */
|
||||
+#if defined gets
|
||||
+#undef gets
|
||||
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
|
||||
#endif
|
||||
|
||||
+#endif
|
||||
+
|
||||
|
||||
#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
|
||||
struct obstack;
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
Upstream-Status: Pending
|
||||
|
||||
remove m4_esyscmd function
|
||||
|
||||
Signed-off-by: Chunrong Guo <b40290@freescale.com>
|
||||
--- inetutils-1.9.1/configure.ac 2012-01-06 22:05:05.000000000 +0800
|
||||
+++ inetutils-1.9.1/configure.ac 2012-11-12 14:01:11.732957019 +0800
|
||||
@@ -20,8 +20,7 @@
|
||||
|
||||
AC_PREREQ(2.59)
|
||||
|
||||
-AC_INIT([GNU inetutils],
|
||||
- m4_esyscmd([build-aux/git-version-gen .tarball-version 's/inetutils-/v/;s/_/./g']),
|
||||
+AC_INIT([GNU inetutils],[1.9.1],
|
||||
[bug-inetutils@gnu.org])
|
||||
|
||||
AC_CONFIG_SRCDIR([src/inetd.c])
|
||||
|
|
@ -6,21 +6,19 @@ SECTION = "libs"
|
|||
DEPENDS = "ncurses"
|
||||
LICENSE = "GPLv3"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=adefda309052235aa5d1e99ce7557010"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=0c7051aef9219dc7237f206c5c4179a7"
|
||||
|
||||
|
||||
SRC_URI = "${GNU_MIRROR}/inetutils/inetutils-${PV}.tar.gz \
|
||||
file://disable-pre-ANSI-compilers.patch \
|
||||
file://version.patch \
|
||||
file://remove-gets.patch \
|
||||
file://inetutils-1.8-0001-printf-parse-pull-in-features.h-for-__GLIBC__.patch \
|
||||
file://inetutils-1.8-0002-argp-fix-program_invocation_name-detection.patch \
|
||||
file://inetutils-1.8-0003-wchar.patch \
|
||||
file://inetutils-1.8-1001-ftp-rename-ruserpass-to-avoid-C-library-collision.patch \
|
||||
file://inetutils-1.8-1002-rshd-detect-__rcmd_errstr-support-in-the-C-lib.patch \
|
||||
file://inetutils-1.8-1003-use-daemon-from-the-C-library-when-possible.patch \
|
||||
file://inetutils-1.8-1004-detect-fork-support.patch \
|
||||
file://inetutils-1.8-1005-ftpd-add-daemon-D-nommu-support.patch \
|
||||
file://fix-disable-ipv6.patch \
|
||||
"
|
||||
SRC_URI[md5sum] = "ad8fdcdf1797b9ca258264a6b04e48fd"
|
||||
SRC_URI[sha256sum] = "c8500baee04b9ea408c9e65e24ad7f5b41e7d96d42fb1d29abf25b52b68311c7"
|
||||
SRC_URI[md5sum] = "944f7196a2b3dba2d400e9088576000c"
|
||||
SRC_URI[sha256sum] = "02a9ebde8a198cb85f87545b9d88fb103a183958139864a85fe9e027ad79ff2b"
|
||||
|
||||
inherit autotools gettext
|
||||
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
From 93dbd3319232613ff8f5f3f08bf5f57b21980ef1 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier at gentoo.org>
|
||||
Date: Thu, 18 Nov 2010 17:14:21 -0500
|
||||
Subject: [PATCH gnulib] argp: fix program_invocation_name detection
|
||||
|
||||
The current program_invocation_name symbol detection fails if the argp.h
|
||||
header is missing. So check for the header first before detecting if the
|
||||
symbol exists.
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
m4/argp.m4 | 15 +++++++++++++--
|
||||
1 files changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/m4/argp.m4 b/m4/argp.m4
|
||||
index d3ca5ba..efa562c 100644
|
||||
--- a/m4/argp.m4
|
||||
+++ b/m4/argp.m4
|
||||
@@ -31,8 +31,14 @@ AC_DEFUN([gl_ARGP],
|
||||
# are defined elsewhere. It is improbable that only one of them will
|
||||
# be defined and other not, I prefer to stay on the safe side and to
|
||||
# test each one separately.
|
||||
+ AC_CHECK_HEADERS_ONCE([argp.h])
|
||||
AC_MSG_CHECKING([whether program_invocation_name is defined])
|
||||
- AC_TRY_LINK([#include <argp.h>],
|
||||
+ AC_TRY_LINK([
|
||||
+#include <errno.h>
|
||||
+#ifdef HAVE_ARGP_H
|
||||
+# include <argp.h>
|
||||
+#endif
|
||||
+],
|
||||
[ program_invocation_name = "test"; ],
|
||||
[ AC_DEFINE([HAVE_PROGRAM_INVOCATION_NAME], [1],
|
||||
[Define if program_invocation_name is defined])
|
||||
@@ -40,7 +46,12 @@ AC_DEFUN([gl_ARGP],
|
||||
[ AC_MSG_RESULT([no])] )
|
||||
|
||||
AC_MSG_CHECKING([whether program_invocation_short_name is defined])
|
||||
- AC_TRY_LINK([#include <argp.h>],
|
||||
+ AC_TRY_LINK([
|
||||
+#include <errno.h>
|
||||
+#ifdef HAVE_ARGP_H
|
||||
+# include <argp.h>
|
||||
+#endif
|
||||
+],
|
||||
[ program_invocation_short_name = "test"; ],
|
||||
[ AC_DEFINE([HAVE_PROGRAM_INVOCATION_SHORT_NAME], [1],
|
||||
[Define if program_invocation_short_name is defined])
|
||||
--
|
||||
1.7.3.2
|
||||
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
From 4f890adb39b52bc43c578966071625004988e3b8 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier at gentoo.org>
|
||||
Date: Thu, 18 Nov 2010 22:11:48 -0500
|
||||
Subject: [PATCH] ftp: rename ruserpass to avoid C library collision
|
||||
|
||||
The C library itself defines a "ruserpass" function. When linking
|
||||
statically, it is possible to hit a symbol collision linker error.
|
||||
So rename the local ftp version to "remote_userpass".
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
ftp/extern.h | 2 +-
|
||||
ftp/ftp.c | 2 +-
|
||||
ftp/ruserpass.c | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/ftp/extern.h b/ftp/extern.h
|
||||
index 8cdb8aa..037cb61 100644
|
||||
--- a/ftp/extern.h
|
||||
+++ b/ftp/extern.h
|
||||
@@ -119,7 +119,7 @@ void reset (int, char **);
|
||||
void restart (int, char **);
|
||||
void rmthelp (int, char **);
|
||||
void rmtstatus (int, char **);
|
||||
-int ruserpass (char *, char **, char **, char **);
|
||||
+int remote_userpass (char *, char **, char **, char **);
|
||||
void sendrequest (char *, char *, char *, int);
|
||||
void setascii (int, char **);
|
||||
void setbell (int, char **);
|
||||
diff --git a/ftp/ftp.c b/ftp/ftp.c
|
||||
index c20ba41..95675cc 100644
|
||||
--- a/ftp/ftp.c
|
||||
+++ b/ftp/ftp.c
|
||||
@@ -251,7 +251,7 @@ login (char *host)
|
||||
int n, aflag = 0;
|
||||
|
||||
user = pass = acct = 0;
|
||||
- if (ruserpass (host, &user, &pass, &acct) < 0)
|
||||
+ if (remote_userpass (host, &user, &pass, &acct) < 0)
|
||||
{
|
||||
code = -1;
|
||||
return (0);
|
||||
diff --git a/ftp/ruserpass.c b/ftp/ruserpass.c
|
||||
index 8572b95..c08fbc0 100644
|
||||
--- a/ftp/ruserpass.c
|
||||
+++ b/ftp/ruserpass.c
|
||||
@@ -111,7 +111,7 @@ static struct toktab
|
||||
};
|
||||
|
||||
int
|
||||
-ruserpass (char *host, char **aname, char **apass, char **aacct)
|
||||
+remote_userpass (char *host, char **aname, char **apass, char **aacct)
|
||||
{
|
||||
char *hdir, buf[BUFSIZ], *tmp;
|
||||
char *myname = 0, *mydomain;
|
||||
--
|
||||
1.7.3.2
|
||||
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
From 730015f060fe76eee615f361a65eb719cdf22eef Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier at gentoo.org>
|
||||
Date: Thu, 18 Nov 2010 22:20:39 -0500
|
||||
Subject: [PATCH] rshd: detect __rcmd_errstr support in the C lib
|
||||
|
||||
Not all C libraries support __rcmd_errstr, so add a configure test for it.
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
src/rshd.c | 4 ++++
|
||||
2 files changed, 5 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index c1ac270..79d655c 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -587,7 +587,7 @@ AC_CHECK_FUNCS(cfsetspeed cgetent dirfd fchdir flock \
|
||||
setsid setregid setreuid setresgid setresuid setutent_r \
|
||||
sigaction sigvec strchr setproctitle tcgetattr tzset utimes \
|
||||
utime uname \
|
||||
- updwtmp updwtmpx vhangup wait3 wait4 opendir2)
|
||||
+ updwtmp updwtmpx vhangup wait3 wait4 opendir2 __rcmd_errstr)
|
||||
|
||||
dnl Functions that we will define if necessary.
|
||||
AC_REPLACE_FUNCS(getpass getusershell memcmp memcpy memmove memset \
|
||||
diff --git a/src/rshd.c b/src/rshd.c
|
||||
index d49facd..9301ef2 100644
|
||||
--- a/src/rshd.c
|
||||
+++ b/src/rshd.c
|
||||
@@ -284,7 +284,9 @@ extern char **environ;
|
||||
void
|
||||
doit (int sockfd, struct sockaddr_in *fromp)
|
||||
{
|
||||
+#ifdef HAVE___RCMD_ERRSTR
|
||||
extern char *__rcmd_errstr; /* syslog hook from libc/net/rcmd.c. */
|
||||
+#endif
|
||||
struct hostent *hp;
|
||||
struct passwd *pwd;
|
||||
u_short port;
|
||||
@@ -757,11 +759,13 @@ doit (int sockfd, struct sockaddr_in *fromp)
|
||||
&& (iruserok (fromp->sin_addr.s_addr, pwd->pw_uid == 0,
|
||||
remuser, locuser)) < 0))
|
||||
{
|
||||
+#ifdef HAVE___RCMD_ERRSTR
|
||||
if (__rcmd_errstr)
|
||||
syslog (LOG_INFO | LOG_AUTH,
|
||||
"%s@%s as %s: permission denied (%s). cmd='%.80s'",
|
||||
remuser, hostname, locuser, __rcmd_errstr, cmdbuf);
|
||||
else
|
||||
+#endif
|
||||
syslog (LOG_INFO | LOG_AUTH,
|
||||
"%s@%s as %s: permission denied. cmd='%.80s'",
|
||||
remuser, hostname, locuser, cmdbuf);
|
||||
--
|
||||
1.7.3.2
|
||||
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
From 3b9f64c6a668849b37b884a7826885c70b95787b Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier at gentoo.org>
|
||||
Date: Thu, 18 Nov 2010 22:24:06 -0500
|
||||
Subject: [PATCH] use daemon from the C library when possible
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
libinetutils/daemon.c | 2 ++
|
||||
2 files changed, 3 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 79d655c..25cc3db 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -579,7 +579,7 @@ AC_FUNC_MMAP
|
||||
AC_FUNC_MALLOC
|
||||
AC_FUNC_REALLOC
|
||||
|
||||
-AC_CHECK_FUNCS(bcopy bcmp bzero cfsetspeed cgetent dirfd fchdir flock \
|
||||
+AC_CHECK_FUNCS(bcopy bcmp bzero cfsetspeed cgetent daemon dirfd fchdir flock \
|
||||
fpathconf ftruncate \
|
||||
getcwd getmsg getspnam initgroups initsetproctitle killpg \
|
||||
mkstemp ptsname \
|
||||
diff --git a/libinetutils/daemon.c b/libinetutils/daemon.c
|
||||
index 2156af4..9beb255 100644
|
||||
--- a/libinetutils/daemon.c
|
||||
+++ b/libinetutils/daemon.c
|
||||
@@ -197,8 +197,10 @@ waitdaemon (int nochdir, int noclose, int maxwait)
|
||||
return ppid;
|
||||
}
|
||||
|
||||
+#ifndef HAVE_DAEMON
|
||||
int
|
||||
daemon (int nochdir, int noclose)
|
||||
{
|
||||
return (waitdaemon (nochdir, noclose, 0) == -1) ? -1 : 0;
|
||||
}
|
||||
+#endif
|
||||
--
|
||||
1.7.3.2
|
||||
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
From 0acaed0d4b2bf9495e71ec4c898733bed2a86be0 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier at gentoo.org>
|
||||
Date: Thu, 18 Nov 2010 22:27:55 -0500
|
||||
Subject: [PATCH] detect fork() support
|
||||
|
||||
Linux/nommu systems cannot support a fork(), so add a configure test for
|
||||
it so apps can pick that or vfork().
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
configure.ac | 2 +-
|
||||
libinetutils/libinetutils.h | 9 +++++++++
|
||||
2 files changed, 10 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 25cc3db..98196f4 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -580,7 +580,7 @@ AC_FUNC_MALLOC
|
||||
AC_FUNC_REALLOC
|
||||
|
||||
AC_CHECK_FUNCS(bcopy bcmp bzero cfsetspeed cgetent daemon dirfd fchdir flock \
|
||||
- fpathconf ftruncate \
|
||||
+ fork fpathconf ftruncate \
|
||||
getcwd getmsg getspnam initgroups initsetproctitle killpg \
|
||||
mkstemp ptsname \
|
||||
setegid seteuid setpgid \
|
||||
diff --git a/libinetutils/libinetutils.h b/libinetutils/libinetutils.h
|
||||
index 19bbde5..86365b0 100644
|
||||
--- a/libinetutils/libinetutils.h
|
||||
+++ b/libinetutils/libinetutils.h
|
||||
@@ -17,6 +17,8 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see `http://www.gnu.org/licenses/'. */
|
||||
|
||||
+#include <config.h>
|
||||
+
|
||||
#include "argp-version-etc.h"
|
||||
|
||||
void utmp_init (char *line, char *user, char *id);
|
||||
@@ -32,3 +34,10 @@ extern const char *default_program_authors[];
|
||||
#define iu_argp_init(name, authors) \
|
||||
argp_program_bug_address = "<" PACKAGE_BUGREPORT ">"; \
|
||||
argp_version_setup (name, authors);
|
||||
+
|
||||
+#ifdef HAVE_FORK
|
||||
+# define fork_exit(s) exit(s)
|
||||
+#else
|
||||
+# define fork() vfork()
|
||||
+# define fork_exit(s) _exit(s)
|
||||
+#endif
|
||||
--
|
||||
1.7.3.2
|
||||
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
From 1dee55b90d2971859377156e6210efdfdf1bac84 Mon Sep 17 00:00:00 2001
|
||||
From: Mike Frysinger <vapier at gentoo.org>
|
||||
Date: Fri, 19 Nov 2010 20:26:48 -0500
|
||||
Subject: [PATCH] ftpd: add daemon (-D) nommu support
|
||||
|
||||
The current daemon design of ftpd is to:
|
||||
- loop in server_mode() waiting for a connection
|
||||
- fork a child and return to main() to process like inetd
|
||||
- have parent continue looping in server_mode()
|
||||
|
||||
On a nommu system where we can only vfork(), the child returning
|
||||
from server_mode() corrupts the stack and messes up the the parent.
|
||||
So rather than having the child return, exec a new ftpd process in
|
||||
the normal inetd mode. This also fixes the problem in nommu where
|
||||
a vfork-ed child pauses the parent until it either exits or execs
|
||||
something.
|
||||
|
||||
Signed-off-by: Mike Frysinger <vapier at gentoo.org>
|
||||
---
|
||||
ftpd/extern.h | 3 ++-
|
||||
ftpd/ftpd.c | 17 ++++++++++++++---
|
||||
ftpd/server_mode.c | 9 ++++++++-
|
||||
3 files changed, 24 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/ftpd/extern.h b/ftpd/extern.h
|
||||
index 2483fe6..81182e0 100644
|
||||
--- a/ftpd/extern.h
|
||||
+++ b/ftpd/extern.h
|
||||
@@ -110,7 +110,8 @@ extern char tmpline[];
|
||||
extern off_t restart_point;
|
||||
|
||||
/* Exported from server_mode.c. */
|
||||
-extern int server_mode (const char *pidfile, struct sockaddr_in *phis_addr);
|
||||
+extern int server_mode (const char *pidfile, struct sockaddr_in *phis_addr,
|
||||
+ char *argv[]);
|
||||
|
||||
/* Credential for the request. */
|
||||
struct credentials
|
||||
diff --git a/ftpd/ftpd.c b/ftpd/ftpd.c
|
||||
index aed74e6..c5c4c90 100644
|
||||
--- a/ftpd/ftpd.c
|
||||
+++ b/ftpd/ftpd.c
|
||||
@@ -424,8 +424,7 @@ main (int argc, char *argv[], char **envp)
|
||||
argp_parse (&argp, argc, argv, 0, &index, NULL);
|
||||
|
||||
/* Bail out, wrong usage */
|
||||
- argc -= index;
|
||||
- if (argc != 0)
|
||||
+ if (argc - index != 0)
|
||||
error (1, 0, "surplus arguments; try `%s --help' for more info",
|
||||
program_name);
|
||||
|
||||
@@ -438,7 +437,19 @@ main (int argc, char *argv[], char **envp)
|
||||
fd = accept(). tcpd is check if compile with the support */
|
||||
if (daemon_mode)
|
||||
{
|
||||
- if (server_mode (pid_file, &his_addr) < 0)
|
||||
+#ifndef HAVE_FORK
|
||||
+ /* Shift out the daemon option in subforks */
|
||||
+ int i;
|
||||
+ for (i = 0; i < argc; ++i)
|
||||
+ if (strcmp (argv[i], "-D") == 0)
|
||||
+ {
|
||||
+ int j;
|
||||
+ for (j = i; j < argc; ++j)
|
||||
+ argv[j] = argv[j + 1];
|
||||
+ argv[--argc] = NULL;
|
||||
+ }
|
||||
+#endif
|
||||
+ if (server_mode (pid_file, &his_addr, argv) < 0)
|
||||
exit (1);
|
||||
}
|
||||
else
|
||||
diff --git a/ftpd/server_mode.c b/ftpd/server_mode.c
|
||||
index 3d3a498..605e13e 100644
|
||||
--- a/ftpd/server_mode.c
|
||||
+++ b/ftpd/server_mode.c
|
||||
@@ -37,6 +37,8 @@
|
||||
# include <tcpd.h>
|
||||
#endif
|
||||
|
||||
+#include <libinetutils.h>
|
||||
+
|
||||
static void reapchild (int);
|
||||
|
||||
#define DEFPORT 21
|
||||
@@ -92,7 +94,7 @@ reapchild (int signo ARG_UNUSED)
|
||||
}
|
||||
|
||||
int
|
||||
-server_mode (const char *pidfile, struct sockaddr_in *phis_addr)
|
||||
+server_mode (const char *pidfile, struct sockaddr_in *phis_addr, char *argv[])
|
||||
{
|
||||
int ctl_sock, fd;
|
||||
struct servent *sv;
|
||||
@@ -176,5 +178,10 @@ server_mode (const char *pidfile, struct sockaddr_in *phis_addr)
|
||||
if (!check_host ((struct sockaddr *) phis_addr))
|
||||
return -1;
|
||||
#endif
|
||||
+
|
||||
+#ifndef HAVE_FORK
|
||||
+ _exit(execvp(argv[0], argv));
|
||||
+#endif
|
||||
+
|
||||
return fd;
|
||||
}
|
||||
--
|
||||
1.7.3.2
|
||||
|
||||
Loading…
Reference in New Issue
Block a user