OpenSDE Framework (without history before r20070)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

148 lines
3.3 KiB

#!/bin/sh
# --- SDE-COPYRIGHT-NOTE-BEGIN ---
# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
#
# Filename: lib/init/formats/tail.in
# Copyright (C) 2008 The OpenSDE Project
# Copyright (C) 2004 - 2006 The T2 SDE Project
#
# More information can be found in the files COPYING and README.
#
# This program 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; version 2 of the License. A copy of the
# GNU General Public License can be found in the file COPYING.
# --- SDE-COPYRIGHT-NOTE-END ---
# T2 Automated Init Language - Tail
# http://wiki.t2-project.org/index.cgi?TailFormat
# Alejandro Mery <amery@geeks.cl>
tail_read() {
local verbose=1 file= output= query=
local query= count=2
if [ "$1" = "-q" ]; then
verbose=
shift
fi
file="$1"; shift
while [ $# -gt 1 ]; do
query="${query}$1 "
shift;
(( count++ ))
done
query="${query}$1\\( \\|\$\\)"
output="$( grep -e "^$query" $file | cut -f$count- )"
[ "$verbose" ] && echo "$output"
grep -q -e "^$query" $file
}
tail_install() {
local style=$1 tailfile="$2"
local x= y= z=
shift 2
case "$style" in
runit)
local servicedir=$( echo `eval echo $1` )
local runprefix=
mkdir -vp "$servicedir"
rm -f /tmp/tail.$$
# run /tailrun/ options
#
eval "`tail_read $tailfile tailrun $style`"
# ./env/
#
if tail_read -q $tailfile env; then
mkdir -p "$servicedir/env"
runprefix="$runprefix${runprefix:+ }envdir ./env"
tail_read $tailfile env | while read x y; do
echo "TAIL: ./env/$x = $y"
echo "$y" | rock_substitute > $servicedir/env/$x
done
fi
# ./run
#
cat <<-EOT > /tmp/tail.$$
#!/bin/sh
exec 2>&1
EOT
if tail_read -q $tailfile input; then
echo "exec < $( tail_read $tailfile input )" >> /tmp/tail.$$
fi
if tail_read -q $tailfile user; then
runprefix="$runprefix${runprefix:+ }envuidgid $( tail_read $tailfile user )"
fi
echo "exec $runprefix${runprefix:+ }$( tail_read $tailfile run )" >> /tmp/tail.$$
rock_substitute /tmp/tail.$$ > $servicedir/run
chmod +x $servicedir/run
# ./conffile
#
for x in `tail_read $tailfile conf | cut -f1 | sort -u`; do
y="$x"
echo "TAIL: $x ..."
if [ "${y%/*}" != "$y" ]; then
if [ "${y:0:1}" != "/" ]; then
y="$servicedir/$y"
fi
mkdir -vp ${y%/*}
fi
rm -vf $y
tail_read $tailfile conf $x | rock_substitute > $y
done
# ./log/
#
if tail_read -q $tailfile log; then
mkdir -vp "$servicedir/log/main"
if [ -z "$logdir" ]; then
if [ "${localstatedir%$pkg}" != "$localstatedir" ]; then
logdir=$localstatedir/log
else
logdir=$localstatedir/log/$pkg
fi
fi
z=
for x in `tail_read $tailfile log | cut -f1 | sort -u`; do
echo "TAIL: ./log/$x"
mkdir -vp $root/$logdir/$x
chown 9:9 $root/$logdir/$x
ln -vnfs $logdir/$x $servicedir/log/main/
z="$z main/$x"
y="`tail_read $tailfile log $x`"
[ "$y" ] && echo "$y" > $root/$logdir/$x/config || true
done
cat <<-EOT > "$servicedir/log/run"
#!/bin/sh
exec 2>&1
exec setuidgid log svlogd -t $z
EOT
chmod +x "$servicedir/log/run"
fi
;;
*)
abort "tail_install: unknown style '$style' for $tailfile."
;;
esac
}