inetutils: Allow building.
This commit is contained in:
parent
fa05d6182e
commit
4621c28308
1237
inetutils/01-buildsystem-updates.patch
Normal file
1237
inetutils/01-buildsystem-updates.patch
Normal file
File diff suppressed because it is too large
Load Diff
67
inetutils/07-other-buildsys-updates.patch
Normal file
67
inetutils/07-other-buildsys-updates.patch
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/configure.ac inetutils-1.9.2/configure.ac
|
||||||
|
--- inetutils-1.9.2-orig/configure.ac 2014-12-12 11:55:10.606800000 +0300
|
||||||
|
+++ inetutils-1.9.2/configure.ac 2014-12-12 11:55:10.653600000 +0300
|
||||||
|
@@ -560,7 +560,13 @@
|
||||||
|
AC_MSG_CHECKING(hosts_ctl in -lwrap);
|
||||||
|
save_LIBS=$LIBS
|
||||||
|
LIBS="$save_LIBS -lwrap"
|
||||||
|
- AC_TRY_LINK([int allow_severity = 1; int deny_severity = 1;],
|
||||||
|
+ AC_TRY_LINK([#ifdef __CYGWIN__
|
||||||
|
+ extern int allow_severity = 1;
|
||||||
|
+ extern int deny_severity = 1;
|
||||||
|
+ #else
|
||||||
|
+ int allow_severity = 1;
|
||||||
|
+ int deny_severity = 1;
|
||||||
|
+ #endif],
|
||||||
|
hosts_ctl(), eval "ac_cv_lib_wrap_hosts_ctl=yes",
|
||||||
|
eval "ac_cv_lib_wrap_hosts_ctl=no")
|
||||||
|
LIBS=$save_LIBS
|
||||||
|
@@ -596,7 +602,7 @@
|
||||||
|
sys/proc.h sys/select.h sys/time.h sys/wait.h \
|
||||||
|
sys/resource.h \
|
||||||
|
stropts.h tcpd.h utmp.h utmpx.h unistd.h \
|
||||||
|
- vis.h osockaddr.h], [], [], [
|
||||||
|
+ vis.h osockaddr.h crypt.h], [], [], [
|
||||||
|
#include <sys/types.h>
|
||||||
|
#ifdef HAVE_STDIO_H
|
||||||
|
# include <stdio.h>
|
||||||
|
@@ -860,7 +866,11 @@
|
||||||
|
|
||||||
|
AC_DECL_SYS_SIGLIST
|
||||||
|
|
||||||
|
-AC_CHECK_DECLS(crypt, , , [#include <unistd.h>])
|
||||||
|
+AC_CHECK_DECLS(crypt, , ,
|
||||||
|
+ [IU_FLUSHLEFT([#include <unistd.h>
|
||||||
|
+ #ifdef HAVE_CRYPT_H
|
||||||
|
+ # include <crypt.h>
|
||||||
|
+ #endif])])
|
||||||
|
|
||||||
|
# EWOULDBLOCK is more or less the BSD version of posix EAGAIN.
|
||||||
|
IU_CHECK_MACRO(EWOULDBLOCK, [#include <errno.h>], , ,
|
||||||
|
@@ -887,6 +897,8 @@
|
||||||
|
iu_syslog_includes), , iu_syslog_includes),)
|
||||||
|
undefine([iu_syslog_includes])
|
||||||
|
|
||||||
|
+IU_CHECK_MACRO(TIOCNOTTY, [#include <sys/ioctl.h>],,,)
|
||||||
|
+
|
||||||
|
# Some systems don't declare common functions (especially if they
|
||||||
|
# return int), at least in the expected header file. Check.
|
||||||
|
AC_CHECK_DECLS([fclose, pclose], , , [#include <stdio.h>])
|
||||||
|
@@ -999,8 +1011,6 @@
|
||||||
|
[Define to 1 for a system using streams for ptys])
|
||||||
|
;;
|
||||||
|
*cygwin*)
|
||||||
|
- CFLAGS="${CFLAGS} -DNCURSES_STATIC"
|
||||||
|
- LDFLAGS="${LDFLAGS} -Wl,-static"
|
||||||
|
LIBS="/usr/lib/textmode.o ${LIBS}"
|
||||||
|
AC_DEFINE(UTMPX, 1, [FIXME])
|
||||||
|
;;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/man/Makefile.am inetutils-1.9.2/man/Makefile.am
|
||||||
|
--- inetutils-1.9.2-orig/man/Makefile.am 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/man/Makefile.am 2014-12-12 11:55:10.653600000 +0300
|
||||||
|
@@ -216,4 +216,4 @@
|
||||||
|
--include=$(srcdir)/$(TOOL).h2m \
|
||||||
|
--output=$(TOOL).$(SECTION) \
|
||||||
|
--section $(SECTION) \
|
||||||
|
- $(mapped_name)
|
||||||
|
+ $(mapped_name)$(EXEEXT)
|
||||||
192
inetutils/08-libinetutils.patch
Normal file
192
inetutils/08-libinetutils.patch
Normal file
@ -0,0 +1,192 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/libinetutils/daemon.c inetutils-1.9.2/libinetutils/daemon.c
|
||||||
|
--- inetutils-1.9.2-orig/libinetutils/daemon.c 2013-12-03 17:57:44.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/libinetutils/daemon.c 2014-12-12 11:55:11.043600000 +0300
|
||||||
|
@@ -51,6 +51,7 @@
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <signal.h>
|
||||||
|
+#include <syslog.h>
|
||||||
|
#include <error.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
@@ -103,13 +104,87 @@
|
||||||
|
|
||||||
|
#define MAXFD 64
|
||||||
|
|
||||||
|
-void
|
||||||
|
+/* copy signal stuff from inetd.c -- POSIX says that the various
|
||||||
|
+ signal interfaces should not be mixed in the same program.
|
||||||
|
+ Because inetd uses 'most recent signal interface' it can find,
|
||||||
|
+ we should too.
|
||||||
|
+*/
|
||||||
|
+
|
||||||
|
+#define SIGBLOCK (sigmask(SIGCHLD)|sigmask(SIGHUP)|sigmask(SIGALRM))
|
||||||
|
+#if defined(HAVE_SIGACTION)
|
||||||
|
+# define SIGSTATUS sigset_t
|
||||||
|
+# define sigstatus_empty(s) sigemptyset(&s)
|
||||||
|
+#else
|
||||||
|
+# define SIGSTATUS long
|
||||||
|
+# define sigstatus_empty(s) s = 0
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+signal_set_handler (int signo, RETSIGTYPE (*handler) ())
|
||||||
|
+{
|
||||||
|
+#if defined(HAVE_SIGACTION)
|
||||||
|
+ struct sigaction sa;
|
||||||
|
+ memset ((char *)&sa, 0, sizeof(sa));
|
||||||
|
+ sigemptyset (&sa.sa_mask);
|
||||||
|
+ sigaddset (&sa.sa_mask, signo);
|
||||||
|
+#ifdef SA_RESTART
|
||||||
|
+ sa.sa_flags = SA_RESTART;
|
||||||
|
+#endif
|
||||||
|
+ sa.sa_handler = handler;
|
||||||
|
+ sigaction (signo, &sa, NULL);
|
||||||
|
+#elif defined(HAVE_SIGVEC)
|
||||||
|
+ struct sigvec sv;
|
||||||
|
+ memset (&sv, 0, sizeof(sv));
|
||||||
|
+ sv.sv_mask = SIGBLOCK;
|
||||||
|
+ sv.sv_handler = handler;
|
||||||
|
+ sigvec (signo, &sv, NULL);
|
||||||
|
+#else /* !HAVE_SIGVEC */
|
||||||
|
+ signal (signo, handler);
|
||||||
|
+#endif /* HAVE_SIGACTION */
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+signal_block (SIGSTATUS *old_status)
|
||||||
|
+{
|
||||||
|
+#ifdef HAVE_SIGACTION
|
||||||
|
+ sigset_t sigs;
|
||||||
|
+
|
||||||
|
+ sigemptyset (&sigs);
|
||||||
|
+ sigaddset (&sigs, SIGCHLD);
|
||||||
|
+ sigaddset (&sigs, SIGHUP);
|
||||||
|
+ sigaddset (&sigs, SIGALRM);
|
||||||
|
+ sigprocmask (SIG_BLOCK, &sigs, old_status);
|
||||||
|
+#else
|
||||||
|
+ long omask = sigblock (SIGBLOCK);
|
||||||
|
+ if (old_status)
|
||||||
|
+ *old_status = omask;
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
+signal_unblock (SIGSTATUS *status)
|
||||||
|
+{
|
||||||
|
+#ifdef HAVE_SIGACTION
|
||||||
|
+ if (status)
|
||||||
|
+ sigprocmask (SIG_SETMASK, status, 0);
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ sigset_t empty;
|
||||||
|
+ sigemptyset (&empty);
|
||||||
|
+ sigprocmask (SIG_SETMASK, &empty, 0);
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
+ sigsetmask (status ? *status : 0);
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+RETSIGTYPE
|
||||||
|
waitdaemon_timeout (int signo _GL_UNUSED_PARAMETER)
|
||||||
|
{
|
||||||
|
int left;
|
||||||
|
|
||||||
|
left = alarm (0);
|
||||||
|
- signal (SIGALRM, SIG_DFL);
|
||||||
|
+ signal_set_handler (SIGALRM, SIG_DFL);
|
||||||
|
if (left == 0)
|
||||||
|
error (EXIT_FAILURE, 0, "timed out waiting for child");
|
||||||
|
}
|
||||||
|
@@ -138,9 +213,29 @@
|
||||||
|
default: /* In the parent. */
|
||||||
|
if (maxwait > 0)
|
||||||
|
{
|
||||||
|
- signal (SIGALRM, waitdaemon_timeout);
|
||||||
|
+ int status;
|
||||||
|
+ pid_t wpid;
|
||||||
|
+
|
||||||
|
+ signal_unblock(NULL);
|
||||||
|
+ signal_set_handler (SIGALRM, waitdaemon_timeout);
|
||||||
|
alarm (maxwait);
|
||||||
|
- pause ();
|
||||||
|
+ do
|
||||||
|
+ {
|
||||||
|
+ wpid = waitpid(childpid, &status, WUNTRACED
|
||||||
|
+#ifdef WCONTINUED /* Not all implementations support this */
|
||||||
|
+ | WCONTINUED
|
||||||
|
+#endif
|
||||||
|
+ );
|
||||||
|
+ if (wpid == -1)
|
||||||
|
+ {
|
||||||
|
+ /* should't happen for timeouts, because the
|
||||||
|
+ SIGALRM handler will error (and exit). However,
|
||||||
|
+ we may recieve some OTHER signal...
|
||||||
|
+ */
|
||||||
|
+ error (1, 0, "interrupted while waiting for child");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ while (!WIFEXITED(status) && !WIFSIGNALED(status));
|
||||||
|
}
|
||||||
|
_exit (EXIT_SUCCESS);
|
||||||
|
}
|
||||||
|
@@ -152,7 +247,7 @@
|
||||||
|
then SIGHUP is sent to all process belonging to the same session,
|
||||||
|
i.e., also to the second child.
|
||||||
|
*/
|
||||||
|
- signal (SIGHUP, SIG_IGN);
|
||||||
|
+ signal_set_handler (SIGHUP, SIG_IGN);
|
||||||
|
|
||||||
|
switch (fork ())
|
||||||
|
{
|
||||||
|
@@ -202,5 +297,9 @@
|
||||||
|
int
|
||||||
|
daemon (int nochdir, int noclose)
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ return (waitdaemon (nochdir, noclose, 5) == -1) ? -1 : 0;
|
||||||
|
+#else
|
||||||
|
return (waitdaemon (nochdir, noclose, 0) == -1) ? -1 : 0;
|
||||||
|
+#endif
|
||||||
|
}
|
||||||
|
diff -Naur inetutils-1.9.2-orig/libinetutils/logwtmp.c inetutils-1.9.2/libinetutils/logwtmp.c
|
||||||
|
--- inetutils-1.9.2-orig/libinetutils/logwtmp.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/libinetutils/logwtmp.c 2014-12-12 11:55:11.043600000 +0300
|
||||||
|
@@ -50,6 +50,10 @@
|
||||||
|
extern int errno;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef O_BINARY
|
||||||
|
+#define O_BINARY 0
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifdef HAVE_UTMPX_H
|
||||||
|
static void
|
||||||
|
_logwtmp (struct utmpx *ut)
|
||||||
|
@@ -62,9 +66,9 @@
|
||||||
|
static int fd = -1;
|
||||||
|
|
||||||
|
if (fd < 0)
|
||||||
|
- fd = open (OUR_WTMP, O_WRONLY | O_APPEND, 0);
|
||||||
|
+ fd = open (OUR_WTMP, O_WRONLY | O_APPEND | O_BINARY, 0);
|
||||||
|
#else
|
||||||
|
- int fd = open (OUR_WTMP, O_WRONLY | O_APPEND, 0);
|
||||||
|
+ int fd = open (OUR_WTMP, O_WRONLY | O_APPEND | O_BINARY, 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (fd >= 0)
|
||||||
|
diff -Naur inetutils-1.9.2-orig/libinetutils/setsig.c inetutils-1.9.2/libinetutils/setsig.c
|
||||||
|
--- inetutils-1.9.2-orig/libinetutils/setsig.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/libinetutils/setsig.c 2014-12-12 11:55:11.059200000 +0300
|
||||||
|
@@ -26,6 +26,10 @@
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+typedef _sig_func_ptr sig_t;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* This is exactly like the traditional signal function, but turns on the
|
||||||
|
SA_RESTART bit where possible. */
|
||||||
|
sighandler_t
|
||||||
272
inetutils/09-inetd.patch
Normal file
272
inetutils/09-inetd.patch
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/src/inetd.c inetutils-1.9.2/src/inetd.c
|
||||||
|
--- inetutils-1.9.2-orig/src/inetd.c 2013-12-23 14:57:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/src/inetd.c 2014-12-12 11:55:11.402400000 +0300
|
||||||
|
@@ -138,6 +138,13 @@
|
||||||
|
#include "version-etc.h"
|
||||||
|
#include "unused-parameter.h"
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+#include <windows.h>
|
||||||
|
+#include <exceptions.h>
|
||||||
|
+#include <sys/cygwin.h>
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
#ifndef EAI_ADDRFAMILY
|
||||||
|
# define EAI_ADDRFAMILY 1
|
||||||
|
#endif
|
||||||
|
@@ -151,7 +158,14 @@
|
||||||
|
#endif
|
||||||
|
#define SIGBLOCK (sigmask(SIGCHLD)|sigmask(SIGHUP)|sigmask(SIGALRM))
|
||||||
|
|
||||||
|
+enum {
|
||||||
|
+ NO_DAEMON = 0,
|
||||||
|
+ UNIX_DAEMON
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
bool debug = false;
|
||||||
|
+static int daemonize = UNIX_DAEMON;
|
||||||
|
+
|
||||||
|
int nsock, maxsock;
|
||||||
|
fd_set allsock;
|
||||||
|
int options;
|
||||||
|
@@ -196,6 +210,13 @@
|
||||||
|
{"resolve", OPT_RESOLVE, NULL, 0,
|
||||||
|
"resolve IP addresses when setting environment variables "
|
||||||
|
"(see --environment)", GRP+1},
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ {0,0,0,0,"Cygwin-specific options:",GRP+2},
|
||||||
|
+ {"no-daemonize", 'D', NULL, 0,
|
||||||
|
+ "Do not run as a daemon", GRP+2},
|
||||||
|
+ {"traditional-daemon", 'T', NULL, 0,
|
||||||
|
+ "This option is present for backwards compatibility.", GRP+2},
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
#undef GRP
|
||||||
|
{NULL, 0, NULL, 0, NULL, 0}
|
||||||
|
};
|
||||||
|
@@ -237,6 +258,16 @@
|
||||||
|
resolve_option = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ case 'D': /* don't become a daemon */
|
||||||
|
+ daemonize = NO_DAEMON;
|
||||||
|
+ break;
|
||||||
|
+
|
||||||
|
+ case 'T': /* act like a normal unix daemon */
|
||||||
|
+ daemonize = UNIX_DAEMON;
|
||||||
|
+ break;
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
default:
|
||||||
|
return ARGP_ERR_UNKNOWN;
|
||||||
|
}
|
||||||
|
@@ -412,6 +443,44 @@
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+void
|
||||||
|
+hide_console ()
|
||||||
|
+{
|
||||||
|
+ HMODULE lib;
|
||||||
|
+ HWND WINAPI (*GetConsoleWindow) (void) = NULL;
|
||||||
|
+ HWND console = NULL;
|
||||||
|
+
|
||||||
|
+ AllocConsole ();
|
||||||
|
+ if (lib = LoadLibrary ("kernel32.dll"))
|
||||||
|
+ GetConsoleWindow = (HWND WINAPI (*) (void))
|
||||||
|
+ GetProcAddress (lib, "GetConsoleWindow");
|
||||||
|
+
|
||||||
|
+ if (GetConsoleWindow)
|
||||||
|
+ /* If GetConsoleWindow exists (W2K and newer), use it. */
|
||||||
|
+ console = GetConsoleWindow ();
|
||||||
|
+ if (!console)
|
||||||
|
+ {
|
||||||
|
+ /* Get console window handle as described in KB article Q124103 */
|
||||||
|
+ char title[32];
|
||||||
|
+ snprintf (title, 32, "inetd.%d", getpid ());
|
||||||
|
+ SetConsoleTitle (title);
|
||||||
|
+ Sleep (40);
|
||||||
|
+ console = FindWindow (NULL, title);
|
||||||
|
+ if (console)
|
||||||
|
+ {
|
||||||
|
+ char ctitle[256];
|
||||||
|
+ if (!GetWindowText (console, ctitle, 256) || strcmp (title, ctitle))
|
||||||
|
+ console = NULL;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ if (console)
|
||||||
|
+ ShowWindow (console, SW_HIDE);
|
||||||
|
+}
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
void
|
||||||
|
run_service (int ctrl, struct servtab *sep)
|
||||||
|
{
|
||||||
|
@@ -431,6 +500,10 @@
|
||||||
|
close (ctrl);
|
||||||
|
dup2 (0, 1);
|
||||||
|
dup2 (0, 2);
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (strcmp (sep->se_user, "root"))
|
||||||
|
+ {
|
||||||
|
+#endif
|
||||||
|
pwd = getpwnam (sep->se_user);
|
||||||
|
if (pwd == NULL)
|
||||||
|
{
|
||||||
|
@@ -452,14 +525,21 @@
|
||||||
|
_exit (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ pwd = getpwuid (getuid ());
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
if (pwd->pw_uid)
|
||||||
|
{
|
||||||
|
if (grp && grp->gr_gid)
|
||||||
|
{
|
||||||
|
if (setgid (grp->gr_gid) < 0)
|
||||||
|
{
|
||||||
|
- syslog (LOG_ERR, "%s: can't set gid %d: %m",
|
||||||
|
- sep->se_service, grp->gr_gid);
|
||||||
|
+ syslog (LOG_ERR, "%s: can't set gid %d uid(%d): %m",
|
||||||
|
+ sep->se_service, pwd->pw_gid, pwd->pw_uid);
|
||||||
|
_exit (EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@@ -1278,6 +1358,10 @@
|
||||||
|
}
|
||||||
|
while ((sep = getconfigent (fconfig, file, &line)))
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (strcmp (sep->se_user, "root"))
|
||||||
|
+ {
|
||||||
|
+#endif
|
||||||
|
pwd = getpwnam (sep->se_user);
|
||||||
|
if (pwd == NULL)
|
||||||
|
{
|
||||||
|
@@ -1285,6 +1369,9 @@
|
||||||
|
sep->se_service, sep->se_proto, sep->se_user);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
if (sep->se_group && *sep->se_group)
|
||||||
|
{
|
||||||
|
grp = getgrnam (sep->se_group);
|
||||||
|
@@ -1497,10 +1584,48 @@
|
||||||
|
}
|
||||||
|
else
|
||||||
|
snprintf (buf, sizeof buf, "-%s", a);
|
||||||
|
- strncpy (cp, buf, LastArg - cp);
|
||||||
|
- cp += strlen (cp);
|
||||||
|
- while (cp < LastArg)
|
||||||
|
- *cp++ = ' ';
|
||||||
|
+
|
||||||
|
+ /* the non-portable code in the #else block relies on
|
||||||
|
+ the system allocating all of the strings in argv[]
|
||||||
|
+ contiguously. On cygwin this is not necessarily so,
|
||||||
|
+ and to assume otherwise will lead to segfaults.
|
||||||
|
+ The downside here is we get supposed ps entries for
|
||||||
|
+ internal services like:
|
||||||
|
+ '-echo' instead of '-echo [remoteIP]' (okay?)
|
||||||
|
+ '-char' instead of '-chargen [remoteIP]' (awful)
|
||||||
|
+ '-disc' instead of '-discard [remoteIP]' (awful)
|
||||||
|
+ because the original argv[0] might be 'inetd' unless
|
||||||
|
+ it was specifically invoked with a full path. However,
|
||||||
|
+ this is mostly moot:
|
||||||
|
+ (1) cygwin's ps uses its own internal version of the
|
||||||
|
+ exe name (or GetModuleName) and then calls
|
||||||
|
+ cygwin_conv_xxx() for display.
|
||||||
|
+ (2) procps DOES use the modified argv[0] value
|
||||||
|
+ */
|
||||||
|
+ {
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ char* LastNullChar = cp + strlen(cp);
|
||||||
|
+ char** scan;
|
||||||
|
+#else
|
||||||
|
+ char* LastNullChar = LastArg;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ strncpy (cp, buf, LastNullChar - cp);
|
||||||
|
+ cp += strlen (cp);
|
||||||
|
+ while (cp < LastNullChar)
|
||||||
|
+ *cp++ = ' ';
|
||||||
|
+
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ /* individually blank out the rest of the args */
|
||||||
|
+ for (scan = Argv + 1; *scan != NULL; scan++)
|
||||||
|
+ {
|
||||||
|
+ char* nullChar = *scan + strlen(*scan);
|
||||||
|
+ cp = *scan;
|
||||||
|
+ while (cp < nullChar)
|
||||||
|
+ *cp++ = ' ';
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@@ -1939,6 +2064,16 @@
|
||||||
|
envp++;
|
||||||
|
LastArg = envp[-1] + strlen (envp[-1]);
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ /* on cygwin, open the log early -- because even
|
||||||
|
+ help and cmdline processing messages go directly
|
||||||
|
+ to syslog. This is because inetd is often run
|
||||||
|
+ under the SYSTEM account (which is not quite like
|
||||||
|
+ the *nix 'root')
|
||||||
|
+ */
|
||||||
|
+ openlog("inetd", LOG_PID | LOG_NOWAIT, LOG_DAEMON);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* Parse command line */
|
||||||
|
iu_argp_init ("inetd", program_authors);
|
||||||
|
argp_parse (&argp, argc, argv, 0, &index, NULL);
|
||||||
|
@@ -1962,7 +2097,7 @@
|
||||||
|
config_files[1] = newstr (PATH_INETDDIR);
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (!debug)
|
||||||
|
+ if ((debug == 0) && daemonize)
|
||||||
|
{
|
||||||
|
if (daemon (0, 0) < 0)
|
||||||
|
{
|
||||||
|
@@ -1971,6 +2106,12 @@
|
||||||
|
exit (EXIT_FAILURE);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
+#ifndef __CYGWIN__
|
||||||
|
+ exception_list except_list;
|
||||||
|
+ cygwin_internal (CW_INIT_EXCEPTIONS, &except_list);
|
||||||
|
+ hide_console ();
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
|
||||||
|
openlog ("inetd", LOG_PID | LOG_NOWAIT, LOG_DAEMON);
|
||||||
|
|
||||||
|
@@ -1995,6 +2136,7 @@
|
||||||
|
signal_set_handler (SIGCHLD, reapchild);
|
||||||
|
signal_set_handler (SIGPIPE, SIG_IGN);
|
||||||
|
|
||||||
|
+#ifndef __CYGWIN__
|
||||||
|
{
|
||||||
|
/* space for daemons to overwrite environment for ps */
|
||||||
|
#define DUMMYSIZE 100
|
||||||
|
@@ -2004,6 +2146,7 @@
|
||||||
|
dummy[DUMMYSIZE - 1] = '\0';
|
||||||
|
setenv ("inetd_dummy", dummy, 1);
|
||||||
|
}
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
31
inetutils/11-telnet.patch
Normal file
31
inetutils/11-telnet.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/telnet/telnet.c inetutils-1.9.2/telnet/telnet.c
|
||||||
|
--- inetutils-1.9.2-orig/telnet/telnet.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/telnet/telnet.c 2014-12-12 11:55:11.761200000 +0300
|
||||||
|
@@ -51,7 +51,7 @@
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
|
||||||
|
-#if defined unix || defined __unix || defined __unix__
|
||||||
|
+#if defined unix || defined __unix || defined __unix__ || defined __CYGWIN__
|
||||||
|
# include <signal.h>
|
||||||
|
/* By the way, we need to include curses.h before telnet.h since,
|
||||||
|
* among other things, telnet.h #defines 'DO', which is a variable
|
||||||
|
@@ -756,7 +756,8 @@
|
||||||
|
* mklist will examine this buffer, so erase it
|
||||||
|
* to cover corner cases.
|
||||||
|
*/
|
||||||
|
-char termbuf[2048] = { 0 };
|
||||||
|
+#define TERMBUF_SZ 2048
|
||||||
|
+char termbuf[TERMBUF_SZ] = { 0 };
|
||||||
|
|
||||||
|
static int
|
||||||
|
init_term (char *tname, int *errp)
|
||||||
|
@@ -2371,7 +2372,7 @@
|
||||||
|
netex = !SYNCHing;
|
||||||
|
|
||||||
|
/* If we have seen a signal recently, reset things */
|
||||||
|
-#if defined TN3270 && (defined unix || defined __unix || defined __unix__)
|
||||||
|
+#if defined TN3270 && (defined unix || defined __unix || defined __unix__ || defined __CYGWIN__)
|
||||||
|
if (HaveInput)
|
||||||
|
{
|
||||||
|
HaveInput = 0;
|
||||||
122
inetutils/13-ftp.patch
Normal file
122
inetutils/13-ftp.patch
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/ftp/cmds.c inetutils-1.9.2/ftp/cmds.c
|
||||||
|
--- inetutils-1.9.2-orig/ftp/cmds.c 2013-12-03 17:57:43.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/ftp/cmds.c 2014-12-12 11:55:12.135600000 +0300
|
||||||
|
@@ -102,6 +102,10 @@
|
||||||
|
# endif
|
||||||
|
#endif /* !DEFPORT */
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+typedef _sig_func_ptr sig_t;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* Returns true if STR is entirely lower case. */
|
||||||
|
static int
|
||||||
|
all_lower (char *str)
|
||||||
|
@@ -297,6 +301,13 @@
|
||||||
|
if (autologin)
|
||||||
|
login (host);
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+# ifndef unix
|
||||||
|
+# define unix
|
||||||
|
+# endif
|
||||||
|
+# define NBBY 8
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
#if (defined unix || defined __unix || defined __unix__) && NBBY == 8
|
||||||
|
/*
|
||||||
|
* this ifdef is to keep someone form "porting" this to an incompatible
|
||||||
|
@@ -1852,7 +1863,7 @@
|
||||||
|
len += strlen (strcpy (&buf[len], argv[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
- if (command (buf) == PRELIM)
|
||||||
|
+ if (command ("%s", buf) == PRELIM)
|
||||||
|
{
|
||||||
|
while (getreply (0) == PRELIM)
|
||||||
|
continue;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/ftp/ftp.c inetutils-1.9.2/ftp/ftp.c
|
||||||
|
--- inetutils-1.9.2-orig/ftp/ftp.c 2013-12-23 14:57:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/ftp/ftp.c 2014-12-12 11:55:12.135600000 +0300
|
||||||
|
@@ -90,6 +90,11 @@
|
||||||
|
#include "ftp_var.h"
|
||||||
|
#include "unused-parameter.h"
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+#include <io.h>
|
||||||
|
+typedef _sig_func_ptr sig_t;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#if !HAVE_DECL_FCLOSE
|
||||||
|
/* Some systems don't declare fclose in <stdio.h>, so do it ourselves. */
|
||||||
|
extern int fclose (FILE *);
|
||||||
|
@@ -100,7 +105,9 @@
|
||||||
|
extern int pclose (FILE *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef __CYGWIN__
|
||||||
|
extern int h_errno;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
int data = -1;
|
||||||
|
int abrtflag = 0;
|
||||||
|
@@ -641,7 +648,15 @@
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (curtype != TYPE_A) {
|
||||||
|
+ fin = fopen (local, "rb");
|
||||||
|
+ } else {
|
||||||
|
+ fin = fopen (local, "r");
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
fin = fopen (local, "r");
|
||||||
|
+#endif
|
||||||
|
if (fin == NULL)
|
||||||
|
{
|
||||||
|
error (0, errno, "local: %s", local);
|
||||||
|
@@ -685,6 +700,7 @@
|
||||||
|
break;
|
||||||
|
case TYPE_I:
|
||||||
|
case TYPE_L:
|
||||||
|
+ setmode (fileno (fin), O_BINARY);
|
||||||
|
rc = lseek (fileno (fin), restart_point, SEEK_SET);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
@@ -753,6 +769,8 @@
|
||||||
|
|
||||||
|
case TYPE_I:
|
||||||
|
case TYPE_L:
|
||||||
|
+ setmode (fileno (fin), O_BINARY);
|
||||||
|
+ setmode (fileno (dout), O_BINARY);
|
||||||
|
errno = d = 0;
|
||||||
|
while ((c = read (fileno (fin), buf, bufsize)) > 0)
|
||||||
|
{
|
||||||
|
@@ -987,7 +1005,17 @@
|
||||||
|
{
|
||||||
|
struct stat st;
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ {
|
||||||
|
+ char nmode[8];
|
||||||
|
+ strcpy (nmode, lmode);
|
||||||
|
+ if (curtype != TYPE_A)
|
||||||
|
+ strcat (nmode, "b");
|
||||||
|
+ fout = fopen (local, nmode);
|
||||||
|
+ }
|
||||||
|
+#else
|
||||||
|
fout = fopen (local, lmode);
|
||||||
|
+#endif
|
||||||
|
if (fout == NULL || fstat (fileno (fout), &st) < 0)
|
||||||
|
{
|
||||||
|
error (0, errno, "local: %s", local);
|
||||||
|
@@ -1016,6 +1044,8 @@
|
||||||
|
|
||||||
|
case TYPE_I:
|
||||||
|
case TYPE_L:
|
||||||
|
+ setmode (fileno (fout), O_BINARY);
|
||||||
|
+ setmode (fileno (din), O_BINARY);
|
||||||
|
if (restart_point && lseek (fileno (fout), restart_point, SEEK_SET) < 0)
|
||||||
|
{
|
||||||
|
error (0, errno, "local: %s", local);
|
||||||
311
inetutils/14-ftpd.patch
Normal file
311
inetutils/14-ftpd.patch
Normal file
@ -0,0 +1,311 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/ftpd/auth.c inetutils-1.9.2/ftpd/auth.c
|
||||||
|
--- inetutils-1.9.2-orig/ftpd/auth.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/ftpd/auth.c 2014-12-12 11:55:12.478800000 +0300
|
||||||
|
@@ -19,6 +19,17 @@
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+# undef ERROR
|
||||||
|
+# include <windows.h>
|
||||||
|
+# include <pwd.h>
|
||||||
|
+# include <sys/cygwin.h>
|
||||||
|
+# include <io.h>
|
||||||
|
+# define is_winnt (GetVersion() < 0x80000000)
|
||||||
|
+#else
|
||||||
|
+# define is_winnt (0)
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
@@ -44,6 +55,9 @@
|
||||||
|
shell as returned by getusershell(). Disallow anyone mentioned in the file
|
||||||
|
PATH_FTPUSERS to allow people such as root and uucp to be avoided. */
|
||||||
|
|
||||||
|
+static int
|
||||||
|
+do_cygwin_auth (const char* passwd, struct credentials *pcred);
|
||||||
|
+
|
||||||
|
int
|
||||||
|
auth_user (const char *name, struct credentials *pcred)
|
||||||
|
{
|
||||||
|
@@ -84,6 +98,12 @@
|
||||||
|
if (pcred->message == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ /* when running under WinNT, password is always required. */
|
||||||
|
+ if (!is_winnt)
|
||||||
|
+ {
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
/* Check for anonymous log in.
|
||||||
|
*
|
||||||
|
* This code simulates part of `pam_ftp.so'
|
||||||
|
@@ -113,6 +133,9 @@
|
||||||
|
}
|
||||||
|
return err;
|
||||||
|
}
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ }
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
|
||||||
|
if (sgetcred (name, pcred) == 0)
|
||||||
|
{
|
||||||
|
@@ -184,18 +207,49 @@
|
||||||
|
case AUTH_TYPE_PASSWD:
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (!is_winnt)
|
||||||
|
+ {
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
char *xpasswd;
|
||||||
|
char *salt = pcred->passwd;
|
||||||
|
/* Try to authenticate the user. */
|
||||||
|
if (pcred->passwd == NULL || *pcred->passwd == '\0')
|
||||||
|
return 1; /* Failed. */
|
||||||
|
- xpasswd = crypt (passwd, salt);
|
||||||
|
+ xpasswd = (char*) crypt (passwd, salt);
|
||||||
|
return (!xpasswd || strcmp (xpasswd, pcred->passwd) != 0);
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ } else {
|
||||||
|
+ return do_cygwin_auth (passwd, pcred);
|
||||||
|
+ }
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
}
|
||||||
|
} /* switch (auth_type) */
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+static int
|
||||||
|
+do_cygwin_auth (const char* passwd, struct credentials *pcred)
|
||||||
|
+{
|
||||||
|
+ struct passwd *p;
|
||||||
|
+ if ((pcred == NULL) || (pcred->name == NULL) || (pcred->name[0] == '\0'))
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ /* can't "recreate" p from contents of pcred, because
|
||||||
|
+ struct passwd might contain extension elements
|
||||||
|
+ unknown to us
|
||||||
|
+ */
|
||||||
|
+ p = getpwnam (pcred->name);
|
||||||
|
+ if (p == NULL)
|
||||||
|
+ return 1;
|
||||||
|
+
|
||||||
|
+ HANDLE hToken = (HANDLE) cygwin_logon_user (p, passwd);
|
||||||
|
+ cygwin_set_impersonation_token (hToken);
|
||||||
|
+ return (hToken == INVALID_HANDLE_VALUE); // non-zero on error
|
||||||
|
+}
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
int
|
||||||
|
sgetcred (const char *name, struct credentials *pcred)
|
||||||
|
{
|
||||||
|
diff -Naur inetutils-1.9.2-orig/ftpd/ftpcmd.y inetutils-1.9.2/ftpd/ftpcmd.y
|
||||||
|
--- inetutils-1.9.2-orig/ftpd/ftpcmd.y 2013-12-23 14:57:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/ftpd/ftpcmd.y 2014-12-12 11:55:12.478800000 +0300
|
||||||
|
@@ -592,7 +592,7 @@
|
||||||
|
# endif /* BSD */
|
||||||
|
#endif /* !HAVE_UNAME */
|
||||||
|
|
||||||
|
-#if defined unix || defined __unix || defined __unix__
|
||||||
|
+#if defined unix || defined __unix || defined __unix__ || defined __CYGWIN__
|
||||||
|
sys_type = "UNIX";
|
||||||
|
#else
|
||||||
|
sys_type = "UNKNOWN";
|
||||||
|
diff -Naur inetutils-1.9.2-orig/ftpd/ftpd.c inetutils-1.9.2/ftpd/ftpd.c
|
||||||
|
--- inetutils-1.9.2-orig/ftpd/ftpd.c 2013-12-23 14:57:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/ftpd/ftpd.c 2014-12-12 11:55:12.478800000 +0300
|
||||||
|
@@ -113,6 +113,10 @@
|
||||||
|
# define LOG_FTP LOG_DAEMON /* Use generic facility. */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#ifndef LARGE_TRANSFER_BLOCKSIZE
|
||||||
|
+# define LARGE_TRANSFER_BLOCKSIZE 4096
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifndef MAP_FAILED
|
||||||
|
# define MAP_FAILED (void*)-1
|
||||||
|
#endif
|
||||||
|
@@ -445,11 +449,21 @@
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
+#if defined(WITH_WRAP) && defined(__CYGWIN__)
|
||||||
|
+extern int allow_severity; /* set value in main() */
|
||||||
|
+extern int deny_severity; /* set value in main() */
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
int
|
||||||
|
main (int argc, char *argv[], char **envp)
|
||||||
|
{
|
||||||
|
int index;
|
||||||
|
|
||||||
|
+#if defined(WITH_WRAP) && defined(__CYGWIN__)
|
||||||
|
+ allow_severity = LOG_INFO;
|
||||||
|
+ deny_severity = LOG_NOTICE;
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
set_program_name (argv[0]);
|
||||||
|
|
||||||
|
#ifdef HAVE_TZSET
|
||||||
|
@@ -560,7 +574,7 @@
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
-#ifdef F_SETOWN
|
||||||
|
+#if defined(F_SETOWN) && !defined(__CYGWIN__)
|
||||||
|
if (fcntl (STDIN_FILENO, F_SETOWN, getpid ()) == -1)
|
||||||
|
syslog (LOG_ERR, "fcntl F_SETOWN: %m");
|
||||||
|
#endif
|
||||||
|
@@ -684,19 +698,29 @@
|
||||||
|
/* We MUST do a chdir () after the chroot. Otherwise
|
||||||
|
the old current directory will be accessible as "."
|
||||||
|
outside the new root! */
|
||||||
|
- if (chroot (pcred->rootdir) < 0 || chdir (pcred->homedir) < 0)
|
||||||
|
+ if (chroot (pcred->rootdir) < 0)
|
||||||
|
{
|
||||||
|
reply (550, "Can't set guest privileges.");
|
||||||
|
goto bad;
|
||||||
|
}
|
||||||
|
+ if (chdir (pcred->homedir) < 0)
|
||||||
|
+ {
|
||||||
|
+ reply(550, "Can't access home directory.");
|
||||||
|
+ goto bad;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
else if (pcred->dochroot)
|
||||||
|
{
|
||||||
|
- if (chroot (pcred->rootdir) < 0 || chdir (pcred->homedir) < 0)
|
||||||
|
+ if (chroot (pcred->rootdir) < 0)
|
||||||
|
{
|
||||||
|
reply (550, "Can't change root.");
|
||||||
|
goto bad;
|
||||||
|
}
|
||||||
|
+ if (chdir (pcred->homedir) < 0)
|
||||||
|
+ {
|
||||||
|
+ reply(550, "Can't access home directory.");
|
||||||
|
+ goto bad;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
if (seteuid ((uid_t) pcred->uid) < 0)
|
||||||
|
@@ -862,7 +886,7 @@
|
||||||
|
char *remotehost = pcred->remotehost;
|
||||||
|
int atype = pcred->auth_type;
|
||||||
|
|
||||||
|
- seteuid ((uid_t) 0);
|
||||||
|
+ seteuid (getuid ());
|
||||||
|
if (pcred->logged_in)
|
||||||
|
{
|
||||||
|
logwtmp_keep_open (ttyline, "", "");
|
||||||
|
@@ -972,7 +996,13 @@
|
||||||
|
|
||||||
|
if (cmd == 0)
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (type != TYPE_A)
|
||||||
|
+ fin = fopen (name, "rb"), closefunc = fclose;
|
||||||
|
+ else
|
||||||
|
+#else
|
||||||
|
fin = fopen (name, "r"), closefunc = fclose;
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
st.st_size = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
@@ -1059,6 +1089,13 @@
|
||||||
|
FILE *fout, *din;
|
||||||
|
struct stat st;
|
||||||
|
int (*closefunc) (FILE *);
|
||||||
|
+ char nmode[8];
|
||||||
|
+
|
||||||
|
+ strcpy (nmode, mode);
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (type != TYPE_A)
|
||||||
|
+ strcat (nmode, "b");
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
if (unique && stat (name, &st) == 0)
|
||||||
|
{
|
||||||
|
@@ -1074,8 +1111,16 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
if (restart_point)
|
||||||
|
- mode = "r+";
|
||||||
|
- fout = fopen (name, mode);
|
||||||
|
+ {
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if (type != TYPE_A)
|
||||||
|
+ mode = "rb+";
|
||||||
|
+ else
|
||||||
|
+#endif
|
||||||
|
+ mode = "r+";
|
||||||
|
+ strcpy (nmode, mode);
|
||||||
|
+ }
|
||||||
|
+ fout = fopen (name, nmode);
|
||||||
|
closefunc = fclose;
|
||||||
|
if (fout == NULL || fstat (fileno (fout), &st) < 0)
|
||||||
|
{
|
||||||
|
@@ -1151,7 +1196,7 @@
|
||||||
|
|
||||||
|
if (data >= 0)
|
||||||
|
return fdopen (data, mode);
|
||||||
|
- seteuid ((uid_t) 0);
|
||||||
|
+ seteuid (getuid ());
|
||||||
|
s = socket (ctrl_addr.ss_family, SOCK_STREAM, 0);
|
||||||
|
if (s < 0)
|
||||||
|
goto bad;
|
||||||
|
@@ -1414,7 +1459,14 @@
|
||||||
|
len = filesize;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ cnt = write (netfd, bp,
|
||||||
|
+ (len < LARGE_TRANSFER_BLOCKSIZE ?
|
||||||
|
+ len : LARGE_TRANSFER_BLOCKSIZE));
|
||||||
|
+#else
|
||||||
|
cnt = write (netfd, bp, len);
|
||||||
|
+#endif /* __CYGWIN__ */
|
||||||
|
+
|
||||||
|
len -= cnt;
|
||||||
|
bp += cnt;
|
||||||
|
if (cnt > 0)
|
||||||
|
@@ -1439,6 +1491,9 @@
|
||||||
|
syslog (LOG_DEBUG, "Starting at position %jd.", curpos);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ if (blksize <= 0)
|
||||||
|
+ blksize = LARGE_TRANSFER_BLOCKSIZE;
|
||||||
|
+
|
||||||
|
buf = malloc ((u_int) blksize);
|
||||||
|
if (buf == NULL)
|
||||||
|
{
|
||||||
|
@@ -1978,7 +2033,7 @@
|
||||||
|
else /* !AF_INET6 */
|
||||||
|
((struct sockaddr_in *) &pasv_addr)->sin_port = 0;
|
||||||
|
|
||||||
|
- seteuid ((uid_t) 0);
|
||||||
|
+ seteuid (getuid ());
|
||||||
|
if (bind (pdata, (struct sockaddr *) &pasv_addr, pasv_addrlen) < 0)
|
||||||
|
{
|
||||||
|
if (seteuid ((uid_t) cred.uid))
|
||||||
|
diff -Naur inetutils-1.9.2-orig/ftpd/server_mode.c inetutils-1.9.2/ftpd/server_mode.c
|
||||||
|
--- inetutils-1.9.2-orig/ftpd/server_mode.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/ftpd/server_mode.c 2014-12-12 11:55:12.478800000 +0300
|
||||||
|
@@ -58,8 +58,14 @@
|
||||||
|
extern int hosts_ctl (char *, char *, char *, char *);
|
||||||
|
# endif
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+/* provided by library (e.g. extern, here) on cygwin */
|
||||||
|
+extern int allow_severity; /* set value in main() */
|
||||||
|
+extern int deny_severity; /* set value in main() */
|
||||||
|
+#else
|
||||||
|
int allow_severity = LOG_INFO;
|
||||||
|
int deny_severity = LOG_NOTICE;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
static int
|
||||||
|
check_host (struct sockaddr *sa, socklen_t len)
|
||||||
49
inetutils/15-syslogd.patch
Normal file
49
inetutils/15-syslogd.patch
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/man/syslogd.8 inetutils-1.9.2/man/syslogd.8
|
||||||
|
--- inetutils-1.9.2-orig/man/syslogd.8 2013-12-23 15:26:57.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/man/syslogd.8 2014-12-12 11:55:13.134000000 +0300
|
||||||
|
@@ -30,6 +30,14 @@
|
||||||
|
override configuration directory (default:
|
||||||
|
\fI/usr/local/etc/syslog.d\fP)
|
||||||
|
.TP
|
||||||
|
+\fB\-D\fR, \fB\-\-no\-daemonize\fR
|
||||||
|
+This is a synonym for \fB\-\-no\-detach\fR, and is provided for
|
||||||
|
+backwards compatibility with previous Cygwin ports. This flag
|
||||||
|
+(or its synonym) is necessary when installing syslogd as service
|
||||||
|
+started from cygrunsrv. The usual way to +install syslogd as
|
||||||
|
+service is to run the syslogd-config script. See
|
||||||
|
+/usr/share/doc/Cygwin/inetutils.README for more information.
|
||||||
|
+.TP
|
||||||
|
\fB\-f\fR, \fB\-\-rcfile\fR=\fIFILE\fR
|
||||||
|
override configuration file (default:
|
||||||
|
\fI/usr/local/etc/syslog.conf\fP)
|
||||||
|
diff -Naur inetutils-1.9.2-orig/src/syslogd.c inetutils-1.9.2/src/syslogd.c
|
||||||
|
--- inetutils-1.9.2-orig/src/syslogd.c 2013-10-29 13:38:56.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/src/syslogd.c 2014-12-12 11:55:13.149600000 +0300
|
||||||
|
@@ -348,6 +348,7 @@
|
||||||
|
{"mark", 'm', "INTVL", 0, "specify timestamp interval in minutes"
|
||||||
|
" (0 for no timestamping)", GRP+1},
|
||||||
|
{"no-detach", 'n', NULL, 0, "do not enter daemon mode", GRP+1},
|
||||||
|
+ {"no-daemonize", 'D', NULL, 0, "Synonym for -n", GRP+1},
|
||||||
|
{"no-forward", OPT_NO_FORWARD, NULL, 0, "do not forward any messages "
|
||||||
|
"(overrides --hop)", GRP+1},
|
||||||
|
#ifdef PATH_KLOG
|
||||||
|
@@ -431,6 +432,7 @@
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'n':
|
||||||
|
+ case 'D':
|
||||||
|
NoDetach = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
@@ -1097,7 +1099,11 @@
|
||||||
|
char *lp, *q, line[MAXLINE + 1];
|
||||||
|
const char *p;
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ strcpy (line, "kernel: ");
|
||||||
|
+#else
|
||||||
|
strcpy (line, "vmunix: ");
|
||||||
|
+#endif
|
||||||
|
lp = line + strlen (line);
|
||||||
|
for (p = msg; *p != '\0';)
|
||||||
|
{
|
||||||
131
inetutils/16-talk.patch
Normal file
131
inetutils/16-talk.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/talk/ctl.c inetutils-1.9.2/talk/ctl.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/ctl.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/ctl.c 2014-12-12 11:55:13.492800000 +0300
|
||||||
|
@@ -57,6 +57,13 @@
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include "talk.h"
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/ctl_transact.c inetutils-1.9.2/talk/ctl_transact.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/ctl_transact.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/ctl_transact.c 2014-12-12 11:55:13.492800000 +0300
|
||||||
|
@@ -55,6 +55,13 @@
|
||||||
|
#include <time.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <sys/select.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include "talk_ctl.h"
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/display.c inetutils-1.9.2/talk/display.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/display.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/display.c 2014-12-12 11:55:13.492800000 +0300
|
||||||
|
@@ -125,7 +125,11 @@
|
||||||
|
|
||||||
|
for (i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+ if ((*text == '\n') || (*text == '\r'))
|
||||||
|
+#else
|
||||||
|
if (*text == '\n')
|
||||||
|
+#endif
|
||||||
|
{
|
||||||
|
xscroll (win, 0);
|
||||||
|
text++;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/get_addrs.c inetutils-1.9.2/talk/get_addrs.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/get_addrs.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/get_addrs.c 2014-12-12 11:55:13.492800000 +0300
|
||||||
|
@@ -55,6 +55,13 @@
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/get_names.c inetutils-1.9.2/talk/get_names.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/get_names.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/get_names.c 2014-12-12 11:55:13.492800000 +0300
|
||||||
|
@@ -55,6 +55,13 @@
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/param.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <pwd.h>
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/invite.c inetutils-1.9.2/talk/invite.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/invite.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/invite.c 2014-12-12 11:55:13.492800000 +0300
|
||||||
|
@@ -57,6 +57,13 @@
|
||||||
|
#include <time.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/io.c inetutils-1.9.2/talk/io.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/io.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/io.c 2014-12-12 11:55:13.508400000 +0300
|
||||||
|
@@ -69,6 +69,10 @@
|
||||||
|
#include <sys/select.h>
|
||||||
|
#include "talk.h"
|
||||||
|
|
||||||
|
+#ifdef __CYGWIN__
|
||||||
|
+#include <sys/socket.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define A_LONG_TIME 10000000
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talk/look_up.c inetutils-1.9.2/talk/look_up.c
|
||||||
|
--- inetutils-1.9.2-orig/talk/look_up.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talk/look_up.c 2014-12-12 11:55:13.508400000 +0300
|
||||||
|
@@ -54,6 +54,13 @@
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
94
inetutils/17-talkd.patch
Normal file
94
inetutils/17-talkd.patch
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/talkd/acl.c inetutils-1.9.2/talkd/acl.c
|
||||||
|
--- inetutils-1.9.2-orig/talkd/acl.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talkd/acl.c 2014-12-12 11:55:13.867200000 +0300
|
||||||
|
@@ -332,6 +332,28 @@
|
||||||
|
level = -1; /* Enforce a deny rule. */
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /* existence check */
|
||||||
|
+ if (access (filename, F_OK) != 0)
|
||||||
|
+ {
|
||||||
|
+ switch (errno)
|
||||||
|
+ {
|
||||||
|
+ case ENOENT:
|
||||||
|
+ /* no error message if user doesn't have a .talkrc file */
|
||||||
|
+ break;
|
||||||
|
+ default:
|
||||||
|
+ syslog (LOG_ERR, "con't open config file %s: %m", filename);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ /* read check */
|
||||||
|
+ if (access (filename, R_OK) != 0)
|
||||||
|
+ {
|
||||||
|
+ syslog (LOG_ERR, "con't open config file %s: %m", filename);
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
mark = acl_tail;
|
||||||
|
read_acl (filename, level);
|
||||||
|
free (filename);
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talkd/announce.c inetutils-1.9.2/talkd/announce.c
|
||||||
|
--- inetutils-1.9.2-orig/talkd/announce.c 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talkd/announce.c 2014-12-12 11:55:13.867200000 +0300
|
||||||
|
@@ -88,7 +88,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
-print_mesg (char *tty, CTL_MSG * request, char *remote_machine)
|
||||||
|
+print_mesg (char *tty, CTL_MSG * request, const char *remote_machine)
|
||||||
|
{
|
||||||
|
time_t t;
|
||||||
|
LINE ln;
|
||||||
|
@@ -125,7 +125,7 @@
|
||||||
|
/* See if the user is accepting messages. If so, announce that
|
||||||
|
a talk is requested. */
|
||||||
|
int
|
||||||
|
-announce (CTL_MSG * request, char *remote_machine)
|
||||||
|
+announce (CTL_MSG * request, const char *remote_machine)
|
||||||
|
{
|
||||||
|
char *ttypath;
|
||||||
|
int len;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talkd/intalkd.h inetutils-1.9.2/talkd/intalkd.h
|
||||||
|
--- inetutils-1.9.2-orig/talkd/intalkd.h 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talkd/intalkd.h 2014-12-12 11:55:13.867200000 +0300
|
||||||
|
@@ -22,6 +22,13 @@
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
+#ifdef HAVE_OSOCKADDR_H
|
||||||
|
+# include <osockaddr.h>
|
||||||
|
+#else
|
||||||
|
+# ifndef HAVE_STRUCT_OSOCKADDR
|
||||||
|
+# include <protocols/osockaddr.h>
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
#include <protocols/talkd.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <syslog.h>
|
||||||
|
@@ -65,4 +72,4 @@
|
||||||
|
extern int new_id (void);
|
||||||
|
extern void read_acl (char *config_file, int system);
|
||||||
|
extern int acl_match (CTL_MSG * msg, struct sockaddr_in *sa_in);
|
||||||
|
-extern int announce (CTL_MSG * request, char *remote_machine);
|
||||||
|
+extern int announce (CTL_MSG * request, const char *remote_machine);
|
||||||
|
diff -Naur inetutils-1.9.2-orig/talkd/process.c inetutils-1.9.2/talkd/process.c
|
||||||
|
--- inetutils-1.9.2-orig/talkd/process.c 2013-10-29 13:38:56.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/talkd/process.c 2014-12-12 11:55:13.867200000 +0300
|
||||||
|
@@ -236,12 +236,14 @@
|
||||||
|
|
||||||
|
if (stat (ftty, &statb) == 0)
|
||||||
|
{
|
||||||
|
+#ifndef __CYGWIN__
|
||||||
|
if (!(statb.st_mode & S_IWGRP))
|
||||||
|
{
|
||||||
|
if (status != SUCCESS)
|
||||||
|
status = PERMISSION_DENIED;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
+#endif
|
||||||
|
if (statb.st_atime > last_time)
|
||||||
|
{
|
||||||
|
last_time = statb.st_atime;
|
||||||
151
inetutils/99-msysize.patch
Normal file
151
inetutils/99-msysize.patch
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/build-aux/config.guess inetutils-1.9.2/build-aux/config.guess
|
||||||
|
--- inetutils-1.9.2-orig/build-aux/config.guess 2013-12-03 17:57:34.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/build-aux/config.guess 2014-12-12 11:56:58.123800000 +0300
|
||||||
|
@@ -866,6 +866,9 @@
|
||||||
|
amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
|
||||||
|
echo x86_64-unknown-cygwin
|
||||||
|
exit ;;
|
||||||
|
+ amd64:MSTS*:*:* | x86_64:MSYS*:*:*)
|
||||||
|
+ echo x86_64-unknown-msys
|
||||||
|
+ exit ;;
|
||||||
|
p*:CYGWIN*:*)
|
||||||
|
echo powerpcle-unknown-cygwin
|
||||||
|
exit ;;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/configure.ac inetutils-1.9.2/configure.ac
|
||||||
|
--- inetutils-1.9.2-orig/configure.ac 2014-12-12 11:55:14.538000000 +0300
|
||||||
|
+++ inetutils-1.9.2/configure.ac 2014-12-12 11:56:27.001800000 +0300
|
||||||
|
@@ -1015,7 +1015,7 @@
|
||||||
|
AC_DEFINE([HAVE_STREAMSPTY], 1,
|
||||||
|
[Define to 1 for a system using streams for ptys])
|
||||||
|
;;
|
||||||
|
-*cygwin*)
|
||||||
|
+*cygwin* | *msys*)
|
||||||
|
LIBS="/usr/lib/textmode.o ${LIBS}"
|
||||||
|
AC_DEFINE(UTMPX, 1, [FIXME])
|
||||||
|
;;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/lib/Makefile.am inetutils-1.9.2/lib/Makefile.am
|
||||||
|
--- inetutils-1.9.2-orig/lib/Makefile.am 2013-12-23 15:13:58.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/lib/Makefile.am 2014-12-12 11:57:48.699000000 +0300
|
||||||
|
@@ -947,7 +947,7 @@
|
||||||
|
case '$(host_os)' in \
|
||||||
|
darwin[56]*) \
|
||||||
|
need_charset_alias=true ;; \
|
||||||
|
- darwin* | cygwin* | mingw* | pw32* | cegcc*) \
|
||||||
|
+ darwin* | cygwin* | msys* | mingw* | pw32* | cegcc*) \
|
||||||
|
need_charset_alias=false ;; \
|
||||||
|
*) \
|
||||||
|
need_charset_alias=true ;; \
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/btowc.m4 inetutils-1.9.2/m4/btowc.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/btowc.m4 2013-12-23 15:13:53.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/btowc.m4 2014-12-12 11:58:26.919000000 +0300
|
||||||
|
@@ -49,7 +49,7 @@
|
||||||
|
changequote(,)dnl
|
||||||
|
case "$host_os" in
|
||||||
|
# Guess no on Cygwin.
|
||||||
|
- cygwin*) gl_cv_func_btowc_nul="guessing no" ;;
|
||||||
|
+ cygwin* | msys*) gl_cv_func_btowc_nul="guessing no" ;;
|
||||||
|
# Guess yes otherwise.
|
||||||
|
*) gl_cv_func_btowc_nul="guessing yes" ;;
|
||||||
|
esac
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/double-slash-root.m4 inetutils-1.9.2/m4/double-slash-root.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/double-slash-root.m4 2013-12-23 15:13:53.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/double-slash-root.m4 2014-12-12 11:58:40.007400000 +0300
|
||||||
|
@@ -16,7 +16,7 @@
|
||||||
|
# special semantics and is distinct from /, please report it to
|
||||||
|
# <bug-gnulib@gnu.org>.
|
||||||
|
case $host in
|
||||||
|
- *-cygwin | i370-ibm-openedition)
|
||||||
|
+ *-cygwin | *-msys | i370-ibm-openedition)
|
||||||
|
gl_cv_double_slash_root=yes ;;
|
||||||
|
*)
|
||||||
|
# Be optimistic and assume that / and // are the same when we
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/dup2.m4 inetutils-1.9.2/m4/dup2.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/dup2.m4 2013-12-23 15:13:53.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/dup2.m4 2014-12-12 11:58:53.641800000 +0300
|
||||||
|
@@ -51,7 +51,7 @@
|
||||||
|
[case "$host_os" in
|
||||||
|
mingw*) # on this platform, dup2 always returns 0 for success
|
||||||
|
gl_cv_func_dup2_works="guessing no" ;;
|
||||||
|
- cygwin*) # on cygwin 1.5.x, dup2(1,1) returns 0
|
||||||
|
+ cygwin* | msys*) # on cygwin 1.5.x, dup2(1,1) returns 0
|
||||||
|
gl_cv_func_dup2_works="guessing no" ;;
|
||||||
|
linux*) # On linux between 2008-07-27 and 2009-05-11, dup2 of a
|
||||||
|
# closed fd may yield -EBADF instead of -1 / errno=EBADF.
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/getcwd.m4 inetutils-1.9.2/m4/getcwd.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/getcwd.m4 2013-12-23 15:13:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/getcwd.m4 2014-12-12 11:59:13.656600000 +0300
|
||||||
|
@@ -49,7 +49,7 @@
|
||||||
|
# Guess yes on glibc systems.
|
||||||
|
*-gnu*) gl_cv_func_getcwd_null="guessing yes";;
|
||||||
|
# Guess yes on Cygwin.
|
||||||
|
- cygwin*) gl_cv_func_getcwd_null="guessing yes";;
|
||||||
|
+ cygwin* | msys*) gl_cv_func_getcwd_null="guessing yes";;
|
||||||
|
# If we don't know, assume the worst.
|
||||||
|
*) gl_cv_func_getcwd_null="guessing no";;
|
||||||
|
esac
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/getdtablesize.m4 inetutils-1.9.2/m4/getdtablesize.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/getdtablesize.m4 2013-12-23 15:13:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/getdtablesize.m4 2014-12-12 11:59:25.294200000 +0300
|
||||||
|
@@ -26,7 +26,7 @@
|
||||||
|
[gl_cv_func_getdtablesize_works=yes],
|
||||||
|
[gl_cv_func_getdtablesize_works=no],
|
||||||
|
[case "$host_os" in
|
||||||
|
- cygwin*) # on cygwin 1.5.25, getdtablesize() automatically grows
|
||||||
|
+ cygwin* | msys*) # on cygwin 1.5.25, getdtablesize() automatically grows
|
||||||
|
gl_cv_func_getdtablesize_works="guessing no" ;;
|
||||||
|
*) gl_cv_func_getdtablesize_works="guessing yes" ;;
|
||||||
|
esac])
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/malloc.m4 inetutils-1.9.2/m4/malloc.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/malloc.m4 2013-12-23 15:13:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/malloc.m4 2014-12-12 11:59:47.539800000 +0300
|
||||||
|
@@ -30,7 +30,7 @@
|
||||||
|
[case "$host_os" in
|
||||||
|
# Guess yes on platforms where we know the result.
|
||||||
|
*-gnu* | freebsd* | netbsd* | openbsd* \
|
||||||
|
- | hpux* | solaris* | cygwin* | mingw*)
|
||||||
|
+ | hpux* | solaris* | cygwin* | msys* | mingw*)
|
||||||
|
ac_cv_func_malloc_0_nonnull=yes ;;
|
||||||
|
# If we don't know, assume the worst.
|
||||||
|
*) ac_cv_func_malloc_0_nonnull=no ;;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/printf.m4 inetutils-1.9.2/m4/printf.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/printf.m4 2013-12-23 15:13:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/printf.m4 2014-12-12 12:00:37.943400000 +0300
|
||||||
|
@@ -735,7 +735,7 @@
|
||||||
|
openbsd*) gl_cv_func_printf_directive_ls="guessing no";;
|
||||||
|
irix*) gl_cv_func_printf_directive_ls="guessing no";;
|
||||||
|
solaris*) gl_cv_func_printf_directive_ls="guessing no";;
|
||||||
|
- cygwin*) gl_cv_func_printf_directive_ls="guessing no";;
|
||||||
|
+ cygwin* | msys*) gl_cv_func_printf_directive_ls="guessing no";;
|
||||||
|
beos* | haiku*) gl_cv_func_printf_directive_ls="guessing no";;
|
||||||
|
*) gl_cv_func_printf_directive_ls="guessing yes";;
|
||||||
|
esac
|
||||||
|
@@ -812,7 +812,7 @@
|
||||||
|
[
|
||||||
|
changequote(,)dnl
|
||||||
|
case "$host_os" in
|
||||||
|
- cygwin*) gl_cv_func_printf_flag_grouping="guessing no";;
|
||||||
|
+ cygwin* | msys*) gl_cv_func_printf_flag_grouping="guessing no";;
|
||||||
|
netbsd*) gl_cv_func_printf_flag_grouping="guessing no";;
|
||||||
|
mingw* | pw*) gl_cv_func_printf_flag_grouping="guessing no";;
|
||||||
|
*) gl_cv_func_printf_flag_grouping="guessing yes";;
|
||||||
|
@@ -1464,7 +1464,7 @@
|
||||||
|
darwin[1-6].*) gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||||||
|
darwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||||||
|
# Guess yes on Cygwin.
|
||||||
|
- cygwin*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||||||
|
+ cygwin* | msys*) gl_cv_func_vsnprintf_zerosize_c99="guessing yes";;
|
||||||
|
# Guess yes on Solaris >= 2.6.
|
||||||
|
solaris2.[0-5] | solaris2.[0-5].*)
|
||||||
|
gl_cv_func_vsnprintf_zerosize_c99="guessing no";;
|
||||||
|
diff -Naur inetutils-1.9.2-orig/m4/realloc.m4 inetutils-1.9.2/m4/realloc.m4
|
||||||
|
--- inetutils-1.9.2-orig/m4/realloc.m4 2013-12-23 15:13:54.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/m4/realloc.m4 2014-12-12 12:00:59.065800000 +0300
|
||||||
|
@@ -30,7 +30,7 @@
|
||||||
|
[case "$host_os" in
|
||||||
|
# Guess yes on platforms where we know the result.
|
||||||
|
*-gnu* | freebsd* | netbsd* | openbsd* \
|
||||||
|
- | hpux* | solaris* | cygwin* | mingw*)
|
||||||
|
+ | hpux* | solaris* | cygwin* | msys* | mingw*)
|
||||||
|
ac_cv_func_realloc_0_nonnull=yes ;;
|
||||||
|
# If we don't know, assume the worst.
|
||||||
|
*) ac_cv_func_realloc_0_nonnull=no ;;
|
||||||
@ -8,36 +8,96 @@ arch=('i686' 'x86_64')
|
|||||||
url="http://www.gnu.org/software/inetutils/"
|
url="http://www.gnu.org/software/inetutils/"
|
||||||
license=('GPL3')
|
license=('GPL3')
|
||||||
groups=('base')
|
groups=('base')
|
||||||
makedepends=('automake' 'autoconf' 'pkg-config' 'make')
|
depends=('gcc-libs' 'libintl' 'libcrypt' 'libreadline' 'ncurses')
|
||||||
|
makedepends=('automake' 'autoconf' 'pkg-config' 'make' 'gettext-devel' 'libcrypt-devel' 'libreadline-devel' 'ncurses-devel')
|
||||||
options=('!emptydirs')
|
options=('!emptydirs')
|
||||||
install=inetutils.install
|
install=inetutils.install
|
||||||
source=(http://ftp.gnu.org/gnu/inetutils/${pkgname}-${pkgver}.tar.xz)
|
source=(http://ftp.gnu.org/gnu/inetutils/${pkgname}-${pkgver}.tar.xz
|
||||||
sha1sums=('f9fc5c3ba7046d95fdfd0f1c6adf508220082893')
|
01-buildsystem-updates.patch
|
||||||
|
07-other-buildsys-updates.patch
|
||||||
|
08-libinetutils.patch
|
||||||
|
09-inetd.patch
|
||||||
|
11-telnet.patch
|
||||||
|
13-ftp.patch
|
||||||
|
14-ftpd.patch
|
||||||
|
15-syslogd.patch
|
||||||
|
16-talk.patch
|
||||||
|
17-talkd.patch
|
||||||
|
inetutils-1.9.2-1.src.patch
|
||||||
|
osockaddr.h
|
||||||
|
talkd.h
|
||||||
|
tftp.h
|
||||||
|
99-msysize.patch)
|
||||||
|
sha1sums=('f9fc5c3ba7046d95fdfd0f1c6adf508220082893'
|
||||||
|
'f21c5acb88bc639821e45d08ffd8b5342ea5c0aa'
|
||||||
|
'f51e1e91893938a75fe66cc6233b306de259dd16'
|
||||||
|
'af6d06e50853e1ba7dcde4bee177cbe2742c67ae'
|
||||||
|
'64036fe2a7e7a7d308c7c70ec4e611c7a681e0d6'
|
||||||
|
'a44a370740dc8ff75e54bc187589f19d3903743d'
|
||||||
|
'26ebe17ba0e3a58f07a043d14a7890f6d94ec35f'
|
||||||
|
'e91f9bdc5c267b6ced5177b972de3e1c9d20bfd9'
|
||||||
|
'b2dec127055c93f2bac284950725ecb4bba2df57'
|
||||||
|
'f8910a048ec8a70be59694e508ff9ce73c553d7e'
|
||||||
|
'd6fef2549638fef93453e37ce54c9a008c8fc1e6'
|
||||||
|
'd9e69d0bd383c98f94aa965b20ed8a62906d6f99'
|
||||||
|
'c36af37b6dd90981c38f781baf0deee1e7bfeafe'
|
||||||
|
'40bd20f45f8bb12350c9d159e633f3e16cf1fa75'
|
||||||
|
'1dfdf7bc6d9804d62615a094924f104735621928'
|
||||||
|
'f8d3bf25ee4be9535c04d9d5efe20728dd150707')
|
||||||
|
|
||||||
prepare() {
|
prepare() {
|
||||||
cd ${srcdir}/${pkgname}-${pkgver}
|
cd ${srcdir}/${pkgname}-${pkgver}
|
||||||
autoreconf -fi
|
mkdir -p headers/protocols
|
||||||
|
cp ${srcdir}/osockaddr.h headers/protocols/osockaddr.h
|
||||||
|
cp ${srcdir}/talkd.h headers/protocols/talkd.h
|
||||||
|
# mkdir -p headers/arpa
|
||||||
|
# cp ${srcdir}/tftp.h headers/arpa/tftp.h
|
||||||
|
|
||||||
|
patch -p1 -i ${srcdir}/01-buildsystem-updates.patch
|
||||||
|
patch -p1 -i ${srcdir}/07-other-buildsys-updates.patch
|
||||||
|
patch -p1 -i ${srcdir}/08-libinetutils.patch
|
||||||
|
patch -p1 -i ${srcdir}/09-inetd.patch
|
||||||
|
patch -p1 -i ${srcdir}/11-telnet.patch
|
||||||
|
patch -p1 -i ${srcdir}/13-ftp.patch
|
||||||
|
patch -p1 -i ${srcdir}/14-ftpd.patch
|
||||||
|
patch -p1 -i ${srcdir}/15-syslogd.patch
|
||||||
|
patch -p1 -i ${srcdir}/16-talk.patch
|
||||||
|
patch -p1 -i ${srcdir}/17-talkd.patch
|
||||||
|
patch -p1 -i ${srcdir}/inetutils-1.9.2-1.src.patch
|
||||||
|
patch -p1 -i ${srcdir}/99-msysize.patch
|
||||||
|
|
||||||
|
autoreconf -fiv
|
||||||
}
|
}
|
||||||
|
|
||||||
build() {
|
build() {
|
||||||
|
CPPFLAGS+=" -I${srcdir}/${pkgname}-${pkgver}/headers"
|
||||||
cd ${srcdir}/${pkgname}-${pkgver}
|
cd ${srcdir}/${pkgname}-${pkgver}
|
||||||
./configure --prefix=/usr --libexec=/usr/bin \
|
./configure --prefix=/usr \
|
||||||
--localstatedir=/var --sysconfdir=/etc \
|
--libexec=/usr/bin \
|
||||||
--without-wrap --without-pam \
|
--localstatedir=/var \
|
||||||
--enable-ftp --enable-ftpd \
|
--sysconfdir=/etc \
|
||||||
--enable-telnet --enable-telnetd \
|
--infodir=/usr/share/info \
|
||||||
--enable-talk --enable-talkd \
|
--mandir=/usr/share/man \
|
||||||
--enable-rlogin --enable-rlogind \
|
--datarootdir=/usr/share \
|
||||||
--enable-rsh --enable-rshd \
|
--docdir=/usr/share/doc/${pkgname} \
|
||||||
--enable-rcp --enable-hostname \
|
--with-wrap \
|
||||||
--enable-dnsdomainname \
|
--without-pam \
|
||||||
|
--enable-ftp --disable-ftpd \
|
||||||
|
--enable-telnet --disable-telnetd \
|
||||||
|
--enable-talk --disable-talkd \
|
||||||
|
--enable-rlogin --disable-rlogind \
|
||||||
|
--enable-rsh --disable-rshd \
|
||||||
|
--enable-rcp --disable-hostname \
|
||||||
--disable-rexec --disable-rexecd \
|
--disable-rexec --disable-rexecd \
|
||||||
--disable-tftp --disable-tftpd \
|
--disable-tftp --disable-tftpd \
|
||||||
--disable-ping --disable-ping6 \
|
--disable-ping --disable-ping6 \
|
||||||
--disable-logger --disable-syslogd \
|
--disable-logger --disable-syslogd \
|
||||||
--disable-inetd --disable-whois \
|
--disable-inetd --disable-whois \
|
||||||
--disable-uucpd --disable-ifconfig \
|
--disable-uucpd --disable-ifconfig \
|
||||||
--disable-traceroute
|
--enable-dnsdomainname \
|
||||||
|
--disable-traceroute \
|
||||||
|
ac_cv_func_mmap_fixed_mapped=no
|
||||||
|
|
||||||
make
|
make
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
57
inetutils/inetutils-1.9.2-1.src.patch
Normal file
57
inetutils/inetutils-1.9.2-1.src.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
diff -Naur inetutils-1.9.2-orig/.version inetutils-1.9.2/.version
|
||||||
|
--- inetutils-1.9.2-orig/.version 1970-01-01 03:00:00.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/.version 2014-12-12 11:55:14.241600000 +0300
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+1.9.2
|
||||||
|
diff -Naur inetutils-1.9.2-orig/configure.ac inetutils-1.9.2/configure.ac
|
||||||
|
--- inetutils-1.9.2-orig/configure.ac 2014-12-12 11:55:10.996800000 +0300
|
||||||
|
+++ inetutils-1.9.2/configure.ac 2014-12-12 11:55:14.241600000 +0300
|
||||||
|
@@ -226,10 +226,15 @@
|
||||||
|
AC_SUBST(libls_BUILD)
|
||||||
|
|
||||||
|
# At least OpenSolaris is missing <protocols/talkd.h>.
|
||||||
|
-AC_CHECK_HEADER(protocols/talkd.h, , ,
|
||||||
|
+AC_CHECK_HEADER(protocols/osockaddr.h, , ,
|
||||||
|
[IU_FLUSHLEFT([#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>])])
|
||||||
|
|
||||||
|
+AC_CHECK_HEADER(protocols/talkd.h, , ,
|
||||||
|
+ [IU_FLUSHLEFT([#include <sys/types.h>
|
||||||
|
+ #include <sys/socket.h>
|
||||||
|
+ #include <protocols/osockaddr.h>])])
|
||||||
|
+
|
||||||
|
if test "$ac_cv_header_protocols_talkd_h" = no; then
|
||||||
|
AC_MSG_WARN([protocols/talkd.h is not available, not building talk, nor talkd])
|
||||||
|
IU_DISABLE_TARGET(talk)
|
||||||
|
@@ -602,7 +607,7 @@
|
||||||
|
sys/proc.h sys/select.h sys/time.h sys/wait.h \
|
||||||
|
sys/resource.h \
|
||||||
|
stropts.h tcpd.h utmp.h utmpx.h unistd.h \
|
||||||
|
- vis.h osockaddr.h crypt.h], [], [], [
|
||||||
|
+ vis.h crypt.h], [], [], [
|
||||||
|
#include <sys/types.h>
|
||||||
|
#ifdef HAVE_STDIO_H
|
||||||
|
# include <stdio.h>
|
||||||
|
diff -Naur inetutils-1.9.2-orig/libinetutils/daemon.c inetutils-1.9.2/libinetutils/daemon.c
|
||||||
|
--- inetutils-1.9.2-orig/libinetutils/daemon.c 2014-12-12 11:55:11.355600000 +0300
|
||||||
|
+++ inetutils-1.9.2/libinetutils/daemon.c 2014-12-12 11:55:14.241600000 +0300
|
||||||
|
@@ -56,6 +56,7 @@
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
+#include <string.h>
|
||||||
|
#include <unused-parameter.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
diff -Naur inetutils-1.9.2-orig/Makefile.am inetutils-1.9.2/Makefile.am
|
||||||
|
--- inetutils-1.9.2-orig/Makefile.am 2013-09-26 12:36:38.000000000 +0300
|
||||||
|
+++ inetutils-1.9.2/Makefile.am 2014-12-12 11:55:14.241600000 +0300
|
||||||
|
@@ -18,6 +18,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/'.
|
||||||
|
|
||||||
|
+ACLOCAL_AMFLAGS = -I m4 -I am
|
||||||
|
+
|
||||||
|
EXTRA_DIST = paths ChangeLog.0 summary.sh.in CHECKLIST
|
||||||
|
|
||||||
|
SUBDIRS = lib \
|
||||||
24
inetutils/inetutils.install
Normal file
24
inetutils/inetutils.install
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
infodir=usr/share/info
|
||||||
|
filelist="inetutils.info.gz"
|
||||||
|
|
||||||
|
post_install() {
|
||||||
|
setcap cap_net_bind_service=+ep usr/bin/rcp 2>/dev/null || chmod +s usr/bin/rcp
|
||||||
|
setcap cap_net_bind_service=+ep usr/bin/rlogin 2>/dev/null || chmod +s usr/bin/rlogin
|
||||||
|
setcap cap_net_bind_service=+ep usr/bin/rsh 2>/dev/null || chmod +s usr/bin/rsh
|
||||||
|
|
||||||
|
[ -x usr/bin/install-info ] || return 0
|
||||||
|
for file in ${filelist}; do
|
||||||
|
install-info $infodir/$file $infodir/dir 2> /dev/null
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
post_upgrade() {
|
||||||
|
post_install $1
|
||||||
|
}
|
||||||
|
|
||||||
|
pre_remove() {
|
||||||
|
[ -x usr/bin/install-info ] || return 0
|
||||||
|
for file in ${filelist}; do
|
||||||
|
install-info --delete $infodir/$file $infodir/dir 2> /dev/null
|
||||||
|
done
|
||||||
|
}
|
||||||
19
inetutils/osockaddr.h
Normal file
19
inetutils/osockaddr.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
#ifndef __OSOCKADDR_H__
|
||||||
|
#define __OSOCKADDR_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 4.3BSD sockaddr structure (used by talk protocol). */
|
||||||
|
struct osockaddr {
|
||||||
|
u_short sa_family; /* address family */
|
||||||
|
char sa_data[14]; /* up to 14 bytes of direct address */
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* __OSOCKADDR_H__ */
|
||||||
125
inetutils/talkd.h
Normal file
125
inetutils/talkd.h
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1983, 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.
|
||||||
|
*
|
||||||
|
* @(#)talkd.h 8.1 (Berkeley) 6/2/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _PROTOCOLS_TALKD_H
|
||||||
|
#define _PROTOCOLS_TALKD_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This describes the protocol used by the talk server and clients.
|
||||||
|
*
|
||||||
|
* The talk server acts a repository of invitations, responding to
|
||||||
|
* requests by clients wishing to rendezvous for the purpose of
|
||||||
|
* holding a conversation. In normal operation, a client, the caller,
|
||||||
|
* initiates a rendezvous by sending a CTL_MSG to the server of
|
||||||
|
* type LOOK_UP. This causes the server to search its invitation
|
||||||
|
* tables to check if an invitation currently exists for the caller
|
||||||
|
* (to speak to the callee specified in the message). If the lookup
|
||||||
|
* fails, the caller then sends an ANNOUNCE message causing the server
|
||||||
|
* to broadcast an announcement on the callee's login ports requesting
|
||||||
|
* contact. When the callee responds, the local server uses the
|
||||||
|
* recorded invitation to respond with the appropriate rendezvous
|
||||||
|
* address and the caller and callee client programs establish a
|
||||||
|
* stream connection through which the conversation takes place.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Client->server request message format.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
u_char vers; /* protocol version */
|
||||||
|
u_char type; /* request type, see below */
|
||||||
|
u_char answer; /* not used */
|
||||||
|
u_char pad;
|
||||||
|
u_long id_num; /* message id */
|
||||||
|
struct osockaddr addr; /* old (4.3) style */
|
||||||
|
struct osockaddr ctl_addr; /* old (4.3) style */
|
||||||
|
long pid; /* caller's process id */
|
||||||
|
#define NAME_SIZE 12
|
||||||
|
char l_name[NAME_SIZE];/* caller's name */
|
||||||
|
char r_name[NAME_SIZE];/* callee's name */
|
||||||
|
#define TTY_SIZE 16
|
||||||
|
char r_tty[TTY_SIZE];/* callee's tty name */
|
||||||
|
} CTL_MSG;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Server->client response message format.
|
||||||
|
*/
|
||||||
|
typedef struct {
|
||||||
|
u_char vers; /* protocol version */
|
||||||
|
u_char type; /* type of request message, see below */
|
||||||
|
u_char answer; /* respose to request message, see below */
|
||||||
|
u_char pad;
|
||||||
|
u_long id_num; /* message id */
|
||||||
|
struct osockaddr addr; /* address for establishing conversation */
|
||||||
|
} CTL_RESPONSE;
|
||||||
|
|
||||||
|
#define TALK_VERSION 1 /* protocol version */
|
||||||
|
|
||||||
|
/* message type values */
|
||||||
|
#define LEAVE_INVITE 0 /* leave invitation with server */
|
||||||
|
#define LOOK_UP 1 /* check for invitation by callee */
|
||||||
|
#define DELETE 2 /* delete invitation by caller */
|
||||||
|
#define ANNOUNCE 3 /* announce invitation by caller */
|
||||||
|
|
||||||
|
/* answer values */
|
||||||
|
#define SUCCESS 0 /* operation completed properly */
|
||||||
|
#define NOT_HERE 1 /* callee not logged in */
|
||||||
|
#define FAILED 2 /* operation failed for unexplained reason */
|
||||||
|
#define MACHINE_UNKNOWN 3 /* caller's machine name unknown */
|
||||||
|
#define PERMISSION_DENIED 4 /* callee's tty doesn't permit announce */
|
||||||
|
#define UNKNOWN_REQUEST 5 /* request has invalid type value */
|
||||||
|
#define BADVERSION 6 /* request has invalid protocol version */
|
||||||
|
#define BADADDR 7 /* request has invalid addr value */
|
||||||
|
#define BADCTLADDR 8 /* request has invalid ctl_addr value */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Operational parameters.
|
||||||
|
*/
|
||||||
|
#define MAX_LIFE 60 /* max time daemon saves invitations */
|
||||||
|
/* RING_WAIT should be 10's of seconds less than MAX_LIFE */
|
||||||
|
#define RING_WAIT 30 /* time to wait before resending invitation */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_PROTOCOLS_TALKD_H */
|
||||||
88
inetutils/tftp.h
Normal file
88
inetutils/tftp.h
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 1983, 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.
|
||||||
|
*
|
||||||
|
* @(#)tftp.h 8.1 (Berkeley) 6/2/93
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _TFTP_H_
|
||||||
|
#define _TFTP_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Trivial File Transfer Protocol (IEN-133)
|
||||||
|
*/
|
||||||
|
#define SEGSIZE 512 /* data segment size */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Packet types.
|
||||||
|
*/
|
||||||
|
#define RRQ 01 /* read request */
|
||||||
|
#define WRQ 02 /* write request */
|
||||||
|
#define DATA 03 /* data packet */
|
||||||
|
#define ACK 04 /* acknowledgement */
|
||||||
|
#define ERROR 05 /* error code */
|
||||||
|
|
||||||
|
struct tftphdr {
|
||||||
|
short th_opcode; /* packet type */
|
||||||
|
union {
|
||||||
|
short tu_block; /* block # */
|
||||||
|
short tu_code; /* error code */
|
||||||
|
char tu_stuff[1]; /* request packet stuff */
|
||||||
|
} th_u;
|
||||||
|
char th_data[1]; /* data or error string */
|
||||||
|
};
|
||||||
|
|
||||||
|
#define th_block th_u.tu_block
|
||||||
|
#define th_code th_u.tu_code
|
||||||
|
#define th_stuff th_u.tu_stuff
|
||||||
|
#define th_msg th_data
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Error codes.
|
||||||
|
*/
|
||||||
|
#define EUNDEF 0 /* not defined */
|
||||||
|
#define ENOTFOUND 1 /* file not found */
|
||||||
|
#define EACCESS 2 /* access violation */
|
||||||
|
#define ENOSPACE 3 /* disk full or allocation exceeded */
|
||||||
|
#define EBADOP 4 /* illegal TFTP operation */
|
||||||
|
#define EBADID 5 /* unknown transfer ID */
|
||||||
|
#define EEXISTS 6 /* file already exists */
|
||||||
|
#define ENOUSER 7 /* no such user */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !_TFTP_H_ */
|
||||||
Loading…
x
Reference in New Issue
Block a user