1#!/sbin/sh 2# 3# CDDL HEADER START 4# 5# The contents of this file are subject to the terms of the 6# Common Development and Distribution License (the "License"). 7# You may not use this file except in compliance with the License. 8# 9# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10# or http://www.opensolaris.org/os/licensing. 11# See the License for the specific language governing permissions 12# and limitations under the License. 13# 14# When distributing Covered Code, include this CDDL HEADER in each 15# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16# If applicable, add the following below this CDDL HEADER, with the 17# fields enclosed by brackets "[]" replaced with your own identifying 18# information: Portions Copyright [yyyy] [name of copyright owner] 19# 20# CDDL HEADER END 21# 22# Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23# Use is subject to license terms. 24 25DEFAULT_FILE="/etc/default/sendmail" 26SENDMAIL="/usr/lib/smtp/sendmail/sendmail" 27PATH="/usr/bin:/usr/sbin:/usr/ccs/bin" 28export PATH 29 30check_queue_interval_syntax() 31{ 32 default="15m" 33 if [ $# -lt 1 ]; then 34 answer=$default 35 return 36 fi 37 if echo $1 | egrep '^([0-9]*[1-9][0-9]*[smhdw])+$' >/dev/null 2>&1; then 38 answer=$1 39 else 40 answer=$default 41 fi 42} 43 44check_and_kill() 45{ 46 PID=`head -1 $1` 47 kill -0 $PID > /dev/null 2>&1 48 [ $? -eq 0 ] && kill $PID 49} 50 51exist_or_exit() 52{ 53 if [ ! -f $1 ]; then 54 echo "$1 does not exist" >&2 55 exit $SMF_EXIT_ERR_CONFIG 56 fi 57} 58 59turn_m4_crank() 60{ 61 # expected to be called with two arguments: .cf path & path to m4 file 62 [ $# -lt 2 ] && return 63 cf_path=$1 64 m4_path=$2 65 if [ "$m4_path" = "_DONT_TOUCH_THIS" ]; then 66 if [ -f "${cf_path}.old" ]; then 67 mv "$cf_path" "${cf_path}.new" 68 [ $? -ne 0 ] && exit $SMF_EXIT_ERR_CONFIG 69 mv "${cf_path}.old" "$cf_path" 70 [ $? -ne 0 ] && exit $SMF_EXIT_ERR_CONFIG 71 fi 72 # 73 # If ${cf_path}.old does not exist, assume it was taken care 74 # of on a previous run. 75 # 76 else 77 case "$m4_path" in 78 /*) ;; # absolute path 79 *) return;; 80 esac 81 exist_or_exit "$m4_path" 82 cd `dirname "$m4_path"` 83 base=`basename "$m4_path"` 84 name=`basename "$m4_path" .mc` 85 info=`svcprop -p config/include_info $SMF_FMRI 2>/dev/null` 86 if [ "$info" = "true" ]; then 87 m4flags="" 88 else 89 m4flags="-DSUN_HIDE_INTERNAL_DETAILS" 90 fi 91 m4 $m4flags /etc/mail/cf/m4/cf.m4 "$base" > "${name}.cf" 92 [ $? -ne 0 ] && exit $SMF_EXIT_ERR_CONFIG 93 cmp -s "${name}.cf" "$cf_path" || ( 94 cp "${name}.cf" "${cf_path}.tmp" && 95 chown root:bin "${cf_path}.tmp" && 96 chmod 444 "${cf_path}.tmp" && 97 mv "${cf_path}.tmp" "$cf_path" 98 ) 99 [ $? -ne 0 ] && exit $SMF_EXIT_ERR_CONFIG 100 fi 101} 102