From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-dev-return-5772-arch-gentoo-dev=gentoo.org@gentoo.org>
Received: (qmail 1571 invoked by uid 1002); 19 Aug 2003 05:37:25 -0000
Mailing-List: contact gentoo-dev-help@gentoo.org; run by ezmlm
Precedence: bulk
List-Post: <mailto:gentoo-dev@gentoo.org>
List-Help: <mailto:gentoo-dev-help@gentoo.org>
List-Unsubscribe: <mailto:gentoo-dev-unsubscribe@gentoo.org>
List-Subscribe: <mailto:gentoo-dev-subscribe@gentoo.org>
List-Id: Gentoo Linux mail <gentoo-dev.gentoo.org>
X-BeenThere: gentoo-dev@gentoo.org
Received: (qmail 12865 invoked from network); 19 Aug 2003 05:37:25 -0000
Date: Tue, 19 Aug 2003 01:37:23 -0400
From: Owen Gunden <ogunden@stwing.upenn.edu>
To: gentoo-dev@gentoo.org
Message-ID: <20030819053722.GA28151@force.stwing.upenn.edu>
Mail-Followup-To: gentoo-dev@gentoo.org
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="EeQfGwPcQSOJBaQU"
Content-Disposition: inline
User-Agent: Mutt/1.5.4i
Subject: [gentoo-dev] patch: emergemail feature in functions.sh
X-Archives-Salt: 81c56c4a-b910-4f26-a224-9812d528057b
X-Archives-Hash: e3d98121b5723d432fccc559f093faf8

--EeQfGwPcQSOJBaQU
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Hi,

Attached is a small patch for the file functions.sh (part of baselayout)
which implements the feature "emergemail" (set in /etc/make.conf FEATURES).
When this feature is turned on (and an mta is present), all einfo, ewarn,
and eerror messages are emailed to root.

This is useful if you upgrade or install multiple packages at once, and you
don't want to miss any important messages that go whizzing by.

There is a major flaw with the current implementation.  Namely, you get an
email for _every_ invocation of einfo, ewarn, or error.  The way those
functions are commonly used (repeated calls for multi-line messages) makes
avoiding this flaw quite difficult without rather sweeping changes to the
design of emerge/ebuild.

Comments or suggestions welcome.
Owen

--EeQfGwPcQSOJBaQU
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="functions.sh.patch"

--- functions-old.sh	2003-08-18 21:49:35.000000000 -0400
+++ functions.sh	2003-08-19 01:23:25.000000000 -0400
@@ -121,6 +121,31 @@
 	BRACKET=$'\e[34;01m'
 fi
 
+# void emergemail(char *severity, char *message)
+#
+#	send mail to root with the given message (if possible)
+#	severity is either "information" (for einfo),
+#					   "warning" (for ewarn),
+#					or "error" (for eerror).
+#
+emergemail() {
+	SEVERITY=$1
+	MESSAGE=$2
+	if echo ${FEATURES} | grep -iq emergemail; then
+		if [ -x /usr/sbin/sendmail ]; then
+			echo -e "Subject: ${SEVERITY} from emerge of ${P}\n\n${MESSAGE}" \
+						| /usr/sbin/sendmail root 
+		else
+			# don't you dare try to use ewarn here :)
+			echo -e " ${WARN}*${NORMAL} the emergemail feature was unable to"
+			echo -e " ${WARN}*${NORMAL} find /usr/sbin/sendmail.  You must have"
+			echo -e " ${WARN}*${NORMAL} a Mail Transfer Agent (MTA) such as"
+			echo -e " ${WARN}*${NORMAL} postfix, exim, ssmtp, etc. to use this"
+			echo -e " ${WARN}*${NORMAL} feature."
+		fi
+	fi
+}
+
 # void esyslog(char* priority, char* tag, char* message)
 #
 #    use the system logger to log a message
@@ -153,6 +178,8 @@
 		echo -e " ${GOOD}*${NORMAL} ${*}"
 	fi
 
+	emergemail information "${*}"
+
 	return 0
 }
 
@@ -166,6 +193,8 @@
 		echo -ne " ${GOOD}*${NORMAL} ${*}"
 	fi
 
+	emergemail information "${*}"
+
 	return 0
 }
 
@@ -181,6 +210,8 @@
 		echo -e " ${WARN}*${NORMAL} ${*}"
 	fi
 
+	emergemail warning "${*}"
+
 	# Log warnings to system log
 	esyslog "daemon.warning" "rc-scripts" "${*}"
 
@@ -199,6 +230,8 @@
 		echo -e " ${BAD}*${NORMAL} ${*}"
 	fi
 
+	emergemail error "${*}"
+
 	# Log errors to system log
 	esyslog "daemon.err" "rc-scripts" "${*}"
 


--EeQfGwPcQSOJBaQU
Content-Type: text/plain; charset=us-ascii

--
gentoo-dev@gentoo.org mailing list
--EeQfGwPcQSOJBaQU--