Changeset View
Changeset View
Standalone View
Standalone View
libexec/rc/rc.d/accounting
Show All 21 Lines | |||||
rotate_log_cmd="accounting_rotate_log" | rotate_log_cmd="accounting_rotate_log" | ||||
accounting_start() | accounting_start() | ||||
{ | { | ||||
local _dir | local _dir | ||||
_dir="${accounting_file%/*}" | _dir="${accounting_file%/*}" | ||||
if [ ! -d "$_dir" ]; then | if [ ! -d "$_dir" ]; then | ||||
if ! mkdir -p "$_dir"; then | if ! mkdir -p -m 0750 "$_dir"; then | ||||
cem: This could be `install -d ...` as well. | |||||
err 1 "Could not create $_dir." | err 1 "Could not create $_dir." | ||||
fi | fi | ||||
fi | fi | ||||
if [ ! -e "$accounting_file" ]; then | if [ ! -e "$accounting_file" ]; then | ||||
echo -n "Creating accounting file ${accounting_file}" | echo -n "Creating accounting file ${accounting_file}" | ||||
touch "$accounting_file" | ( umask 026; touch "${accounting_file}" ) | ||||
cemUnsubmitted Done Inline ActionsCould use install -m 0640 -g wheel -o root ... insead of umask to explicitly set owner/group to root/wheel. cem: Could use `install -m 0640 -g wheel -o root ...` insead of `umask` to explicitly set… | |||||
ianAuthorUnsubmitted Done Inline ActionsOooo, I like it. Diff updated (and yes, I checked that /usr/bin will be mounted before rc.d/accounting runs). ian: Oooo, I like it. Diff updated (and yes, I checked that /usr/bin will be mounted before rc. | |||||
echo '.' | echo '.' | ||||
fi | fi | ||||
chmod 644 "$accounting_file" | |||||
echo "Turning on accounting." | echo "Turning on accounting." | ||||
${accounting_command} ${accounting_file} | ${accounting_command} ${accounting_file} | ||||
} | } | ||||
accounting_stop() | accounting_stop() | ||||
{ | { | ||||
echo "Turning off accounting." | echo "Turning off accounting." | ||||
${accounting_command} | ${accounting_command} | ||||
} | } | ||||
accounting_rotate_log() | accounting_rotate_log() | ||||
{ | { | ||||
local _dir _file | # Note that this function must handle being called as "onerotate_log" | ||||
# (by the periodic scripts) when accounting is disabled, and handle | |||||
# being called multiple times (by an admin making mistakes) without | |||||
# anything having actually rotated the old .0 file out of the way. | |||||
_dir="${accounting_file%/*}" | if [ -e "${accounting_file}.0" ]; then | ||||
cd $_dir | err 1 "Cannot rotate accounting log, ${accounting_file}.0 already exists." | ||||
fi | |||||
if checkyesno accounting_enable; then | if [ ! -e "${accounting_file}" ]; then | ||||
_file=`mktemp newacct-XXXXX` | err 1 "Cannot rotate accounting log, ${accounting_file} does not exist." | ||||
chmod 644 $_file | |||||
${accounting_command} ${_dir}/${_file} | |||||
fi | fi | ||||
mv ${accounting_file} ${accounting_file}.0 | mv ${accounting_file} ${accounting_file}.0 | ||||
if checkyesno accounting_enable; then | if checkyesno accounting_enable; then | ||||
mv $_file ${accounting_file} | ( umask 026; touch "${accounting_file}" ) | ||||
${accounting_command} "${accounting_file}" | |||||
fi | fi | ||||
} | } | ||||
load_rc_config $name | load_rc_config $name | ||||
run_rc_command "$1" | run_rc_command "$1" |
This could be install -d ... as well.