blob: 6a5f1a45d3179e58872858fe544dacfa5ae1c7fc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
#!/bin/sh
#
# $FreeBSD$
# Modified by Brian A. Seklecki <bseklecki@collaborativefusion.com>
# <lavalamp@spiritual-machines.org>
# $Id$
#
# sed -e 's/%%PREFIX%%/\/usr\/local/g' < slon.sh.in > slon
# PROVIDE: slon
# REQUIRE: postgresql
# KEYWORD: shutdown
. /etc/rc.subr
name="slon"
rcvar=slon_enable
load_rc_config "$name"
_pidprefix="/var/run/${name}"
pidfile="${_pidprefix}.pid" # Used as fall-through in event of no profiles
procname="%%PREFIX%%/bin/slon"
# From global rc.conf(5); if unset, set them here
[ -z "$slon_enable" ] && slon_enable="NO"
configfile_path="%%PREFIX%%/etc/${name}.conf"
command_args="-f ${configfile_path}"
required_files="${configfile_path}"
isProfile () {
local profile
for profile in $slon_profiles; do
if [ "$profile" = "$1" ]; then
return 0
fi
done
return 1
}
if [ -n "$2" ]; then
if [ "x${slon_profiles}" = "x" ]; then # This checks that profiles are indeed defined
echo "$0: extra profile argument ignored, no profiles defined"
exit 1
fi
profile="$2" # A profile argument has been given (presumably)
# Now let's check to make sure that both the profile, the profile's
# config path variable, config file exists
if ! isProfile $profile; then
echo "$0: no such profile defined in slon_profiles."
exit 1
fi
configfile_default_path="%%PREFIX%%/etc/${name}-${profile}.conf"
# Basic string substitution gets variable name
configfile_varname="${name}_${profile}_configfile"
eval configfile_path=\${$configfile_varname:-${configfile_default_path}}
if [ ! -r "$configfile_path" ]; then
echo "$0: unable to read configuration file."
exit 1
fi
required_files="${configfile_path}"
pidfile_default="${_pidprefix}-${profile}.pid"
eval pidfile=\${${name}_${profile}_pidfile:-${pidfile_default}}
command_args="-f ${configfile_path}"
eval command_args=\${${name}_${profile}_flags:-${command_args}}
else
# We get to here if $2 is not defined at command line, but we do have profiles
# so apply $1 command to all profiles!
# This block uses recursion to call ourself with each-profile defined as $2.
if [ "x${slon_profiles}" != "x" -a "x$1" != "x" ]; then
for profile in ${slon_profiles}; do
echo "Processing ${name} profile: ${profile}"
%%PREFIX%%/etc/rc.d/${name} $1 ${profile}
done
exit 0
fi
# else = no profile argument given
fi
slon_start () {
echo "Starting ${name}."
/usr/sbin/daemon -cf -p ${pidfile} %%PREFIX%%/bin/slon ${command_args}
}
start_cmd=slon_start
run_rc_command "$1"
|