diff options
-rw-r--r-- | configure.ac | 8 | ||||
-rw-r--r-- | src/.gitignore | 1 | ||||
-rw-r--r-- | src/Makefile.am | 18 | ||||
-rw-r--r-- | src/inetd.in | 90 |
4 files changed, 117 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index e9119dc..15c2835 100644 --- a/configure.ac +++ b/configure.ac @@ -67,6 +67,14 @@ AM_ICONV AM_GNU_GETTEXT([external], [need-formatstring-macros]) AM_GNU_GETTEXT_VERSION([0.17]) +AC_ARG_ENABLE([inetd], + AC_HELP_STRING([--enable-inetd], + [build and install a replacement for SBINDIR/inetd]), + [case $enableval in + yes) AC_SUBST([INETD_SH], [inetd.sh]);; + no) ;; + esac]) + # Doc hints. # Select a rendition level: # DISTRIB for stable releases (at most one dot in the version number) diff --git a/src/.gitignore b/src/.gitignore index 8a4684a..fe9c6fe 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,3 +1,4 @@ +inetd.sh meta1gram.c meta1gram.h meta1gram.output diff --git a/src/Makefile.am b/src/Makefile.am index bbe5db7..98815b0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -64,3 +64,21 @@ AM_CPPFLAGS=\ AM_YFLAGS=-dvt -pmeta1 AM_LFLAGS=-dvp -Pmeta1 -olex.yy.c + +SUFFIXES = .in .sh +EXTRA_SCRIPTS = inetd.in +sbin_SCRIPTS = @INETD_SH@ +inetd.sh: inetd.in + +.in.sh: + $(AM_V_GEN)sed 's|_SBINDIR_|$(sbindir)|' $< > $@ + +install-exec-hook: + if test -n "@INETD_SH@" && \ + test -f $(DESTDIR)$(sbindir)/@INETD_SH@; then \ + test -f $(DESTDIR)$(sbindir)/inetd$(EXEEXT) && \ + cd $(DESTDIR)$(sbindir) && \ + mv -f inetd$(EXEEXT) inetd$(EXEEXT)~; \ + cd $(DESTDIR)$(sbindir) && \ + mv @INETD_SH@ inetd$(EXEEXT); \ + fi diff --git a/src/inetd.in b/src/inetd.in new file mode 100644 index 0000000..eefe0f6 --- /dev/null +++ b/src/inetd.in @@ -0,0 +1,90 @@ +#! /bin/sh +# This file is part of GNU Pies. +# Copyright (C) 2008, 2009 Sergey Poznyakoff +# +# GNU Pies is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3, or (at your option) +# any later version. +# +# GNU Pies is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Pies. If not, see <http://www.gnu.org/licenses/>. */ + +PATH=_SBINDIR_:$PATH + +cmdline= +debug=0 + +help() +{ + echo "Usage: $0 [OPTION] [CONFIG [CONFIG...]] [-- PIES_OPTION]" + echo "" + echo "OPTIONS are:" + echo " -d increase debug level" + echo " -R rate set maximum rate" + echo " -t, --lint parse configuration file and exit" + echo " -s, --status display info about the running instance" + echo " -S, --stop stop the running instance" + echo "" + echo " -?, --help give this help list" + echo " --usage give a short usage message" + echo " -V, --version print program version" + echo "" + echo "Report bugs to <bug-pies@gnu.org.ua>." +} + +while test $# -ne 0 +do + case $1 in + -d) debug=$(($debug + 1)) + shift + ;; + -R) cmdline="$cmdline --rate=$2" + shift + shift + ;; + -R*) + ropt=`echo $1 | sed 's/^-R/--rate=/'` + cmdline="$cmdline $ropt" + shift + ;; + -t|--lint|-s|--status|-S|--stop) + cmdline="$cmdline $1" + shift + ;; + -V|--version) + pies --version | sed -n '1s/^pies/inetd.sh/p' + exit + ;; + --usage) + echo "$0 [-dtsSV?] [-R rate] [--lint] [--status] [--stop] [--help]" + pad=`echo $0 | sed 's/./ /g'` + echo "$pad [--usage] [--version] [CONFIG [CONFIG...]] [-- PIES_OPTION]" + exit + ;; + -?|--help) + help + exit + ;; + --) shift + cmdline="$cmdline $@" + break + ;; + -*) echo >&2 "$0: unknown option" + exit 64 + ;; + *) cmdline="$cmdline --config-file=$1" + shift + esac +done + +if test $debug -gt 0; then + cmdline="$cmdline --debug=$debug" +fi + +pies --inetd $cmdline |