From 38de75c0ef647a2ecbe153fda14a3caae345497b Mon Sep 17 00:00:00 2001
From: Zoran Dzelajlija <Zoran.Dzelajlija@CARNet.hr>
Date: Sun, 20 Mar 2005 20:22:37 +0000
Subject: [PATCH] r4: Funkcije za slanje maila, cp_echo() i cp_mail().

---
 README.CARNet |   20 ++++++++++++++++++--
 functions.sh  |   47 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 65 insertions(+), 2 deletions(-)

diff --git a/README.CARNet b/README.CARNet
index fd70a75..6c82673 100644
--- a/README.CARNet
+++ b/README.CARNet
@@ -40,11 +40,27 @@ cp_check_and_sed <regexp> <sed> <file> [<file> ...]
 	postoji, izvrsi sed program <sed> nad tim datotekama.  Najcesce se
 	koristi za zamjenu stare vrijednosti postavke novom.
 
+cp_echo [-mailonly|-m] <string>
+
+cp_mail [-q] <package> <version>
+
+	U kombinaciji, ove funkcije sluze za slanje poruka na stdout _i_ na
+	mail rootu.  Koristiti za informacije koje svakako treba dostaviti
+	sistemcu (passwordi, nekompatibilne izmjene u konfiguraciji
+	kriticnih servisa), cak i ako ne cita dokumentaciju niti prati
+	poruke kod upgradea. :->
+
+	cp_echo se koristi umjesto echo.  Uz -m salje poruku samo na mail.
+	cp_mail se poziva na kraju (postinsta), kad posalje mail.  Bez
+	-q opcije cp_mail ce ispisati obavijest o slanju tog maila.
+
+	Ove dvije funkcije koriste globalnu varijablu CP_NOTICE u koju se
+	spremaju poruke za mail.
 
 Funkcije cije ime pocinje sa cp_get_ pohranjuju rezultat u varijabli $RET,
 a one s prefiksom cp_check_ kao rezultat vracaju exit status.  U pozivnoj
-skripti se mogu definirati sljedece varijable koje utjecu na rad pomocnih
-funkcija:
+skripti se mogu definirati sljedece varijable koje utjecu na rad svih
+pomocnih funkcija:
 
 $CP_SCRIPT_DEBUG
 
diff --git a/functions.sh b/functions.sh
index 805a066..06e42be 100644
--- a/functions.sh
+++ b/functions.sh
@@ -132,3 +132,50 @@ cp_check_and_sed() {
   done
   return $ret
 }
+
+# by jelly, Sun, 20 Mar 2005 20:12:19 +0100
+cp_echo () {
+  [ "$CP_SCRIPT_DEBUG" ] && set -vx
+  if [ "x$1" = "x-mailonly" -o "x$1" = "x-m" ]; then
+    shift
+  else   
+    echo "$*"
+  fi
+  CP_NOTICE="$CP_NOTICE$1"
+  if [ `echo -n "$*" | wc -l` -eq 0 ]; then
+    CP_NOTICE="$CP_NOTICE
+"
+  fi
+}   
+
+# by jelly, Sun, 20 Mar 2005 20:12:19 +0100
+cp_mail () {
+  [ "$CP_SCRIPT_DEBUG" ] && set -vx
+  local pkg version quiet
+  if [ "x$1" = "x-q" ]; then
+    quiet=1
+    shift
+  fi
+  [ -n "$1" ] && pkg="$1"       # barf if no package
+  [ -n "$2" ] && version=" $2" || true
+  if [ "$(echo $CP_NOTICE|wc -w)" -gt 0 ]; then
+    [ -n "$quiet" ] || echo "Mailing upgrade output to root."
+    CP_NOTICE="From: $pkg postinst script <root>
+To: root
+Subject: $pkg$version package install log
+Date: $(/bin/date +'%a, %d %b %Y %H:%M:%S %z')
+ 
+Hello!
+
+The $pkg package has been successfully installed on your computer.
+For your convenience, a partial output of the last $pkg installation
+is included below.
+
+----------
+$CP_NOTICE
+----------"
+  
+    echo "$CP_NOTICE" | /usr/sbin/sendmail -t &
+    sleep 1
+  fi
+}
-- 
1.7.10.4