]> git.pld-linux.org Git - packages/systemd.git/blobdiff - pld-rc-inetd-generator.sh
- release 2
[packages/systemd.git] / pld-rc-inetd-generator.sh
index 10859a2385becf1485d4a0c131d9993c9cd4e872..a1f72b278ff90ad4a115dfc9c1ca98a019fe9ab3 100644 (file)
@@ -1,11 +1,8 @@
 #!/bin/sh
-#
-# TODO:
-#      pre_start_service() and pre_stop_service()
-#
+
 parse_one_service() {
-       SOCKET_FILE="${CURRENT_SERVICE}.socket"
-       SERVICE_FILE="${CURRENT_SERVICE}.service"
+       SOCKET_FILE="$1/rc-inetd-${CURRENT_SERVICE}.socket"
+       SERVICE_FILE="$1/rc-inetd-${CURRENT_SERVICE}@.service"
 
        case "$FAMILY" in
                ipv4)
@@ -38,20 +35,22 @@ parse_one_service() {
        echo "[Unit]" >>$SERVICE_FILE
        echo "Description=$SERVICE_NAME" >>$SERVICE_FILE
        echo >>$SERVICE_FILE
+
        echo "[Service]" >>$SERVICE_FILE
+       echo "StandardInput=socket" >>$SERVICE_FILE
+       echo "StandardError=syslog" >>$SERVICE_FILE
 
        echo "[Unit]" >>$SOCKET_FILE
        echo "Description=$SERVICE_NAME" >>$SOCKET_FILE
        echo >>$SOCKET_FILE
+
        echo "[Socket]" >>$SOCKET_FILE
        echo $__LISTEN >>$SOCKET_FILE
 
        for i in $FLAGS; do
                case "$i" in
-                       wait)
-                               echo "Accept=true" >>$SOCKET_FILE
-                               ;;
                        nowait)
+                               echo "Accept=true" >>$SOCKET_FILE
                                [ "${MAX_CONNECTIONS:-n}" = "n" ] || echo "MaxConnections=$MAX_CONNECTIONS" >>$SOCKET_FILE
                                ;;
                        *)
@@ -71,16 +70,32 @@ parse_one_service() {
        [ "${NICE:-none}" = "none" ] || echo "Nice=$NICE" >>$SERVICE_FILE
        [ "${CHROOT:-none}" = "none" ] || echo "RootDirectory=$CHROOT" >>$SERVICE_FILE
        [ "${ENV:-none}" = "none" ] || echo "Environment=$ENV" >>$SERVICE_FILE
-       echo -n "ExecStart=$DAEMON" >>$SERVICE_FILE
+       echo -n "ExecStart=-$DAEMON" >>$SERVICE_FILE
        if [ "${DAEMONARGS:-none}" = "none" ] ; then
                echo >>$SERVICE_FILE
        else
-               echo "$DAEMONARGS" >>$SERVICE_FILE
+               echo " $DAEMONARGS" >>$SERVICE_FILE
+       fi
+
+       if typeset -f pre_start_service 2>&1 >/dev/null ; then
+               echo "#!/bin/sh" >/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+               typeset -f pre_start_service >>/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+               echo "pre_start_service >&2" >>/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+               chmod u+x /run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh
+               echo "ExecStartPre=-/run/rc-inetd/${CURRENT_SERVICE}_pre_start.sh" >>$SERVICE_FILE
+       fi
+
+       if typeset -f pre_stop_service 2>&1 >/dev/null ; then
+               echo "#!/bin/sh" >/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+               typeset -f pre_stop_service >>/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+               echo "pre_stop_service >&2" >>/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+               chmod u+x /run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh
+               echo "ExecStopPost=-/run/rc-inetd/${CURRENT_SERVICE}_post_stop.sh" >>$SERVICE_FILE
        fi
 
        echo >>$SERVICE_FILE
        echo "[Install]" >>$SERVICE_FILE
-       echo "Also=${CURRENT_SERVICE}.socket" >>$SERVICE_FILE
+       echo "Also=rc-inetd-${CURRENT_SERVICE}.socket" >>$SERVICE_FILE
        echo >>$SERVICE_FILE
 
        echo >>$SOCKET_FILE
@@ -88,6 +103,20 @@ parse_one_service() {
        echo "WantedBy=sockets.target" >>$SOCKET_FILE
 }
 
+normalunitdir=${1:-/tmp}
+earlyunitdir=${2:-/tmp}
+lateunitdir=${3:-/tmp}
+
+destunitdir=$normalunitdir
+
+rm -f $destunitdir/rc-inetd-*.service \
+       $destunitdir/rc-inetd-*.socket \
+       $destunitdir/sockets.target.wants/rc-inetd-*.socket \
+       /run/rc-inetd/*
+
+mkdir -p $destunitdir/sockets.target.wants \
+       /run/rc-inetd
+
 SERVICES=$(ls -d /etc/sysconfig/rc-inetd/* 2>/dev/null | grep -Ev '.*(\.rpm(save|new|orig)|~|CVS)')
 for i in $SERVICES; do
        # unset everything
@@ -117,5 +146,10 @@ for i in $SERVICES; do
        done
        [ $DONT_PARSE -eq 0 ] || continue
 
-       parse_one_service
+       parse_one_service $destunitdir
+
+       if [ -f $destunitdir/rc-inetd-${CURRENT_SERVICE}.socket ]; then
+               ln -sf "$destunitdir/rc-inetd-${CURRENT_SERVICE}.socket" \
+                       "$destunitdir/sockets.target.wants/rc-inetd-${CURRENT_SERVICE}.socket"
+       fi
 done
This page took 0.102083 seconds and 4 git commands to generate.