Correction : local/backup/*-snapshot : évite set -e : inactif dans les fonctions.
[lhc/ateliers.git] / local / backup / mysql-snapshot
index 5140ffc..56e5b14 100755 (executable)
@@ -15,8 +15,19 @@ test ! $# = 0 || set -- :
 install -d -m 770 -o backup -g backup \
  ~backup/snapshot/mysql
 
-snapshot () {
-       local database="$1"; shift
+trap_exit () {
+       errno=$?
+       test $errno = 0 ||
+       cat >&2 <<-EOF
+               ERROR: $0 "$database" "$@"
+               EOF
+       #return $errno
+ }
+trap trap_exit EXIT
+
+while IFS='' read -r database
+ do
+       test "${database:+set}"
        test ! -e ~backup/snapshot/mysql/$database
                # NOTE: soit une sauvegarde est déjà en cours,
                #       soit une précédente a échoué.
@@ -56,17 +67,6 @@ snapshot () {
        eval "$@"
        rm -rf \
         ~backup/snapshot/mysql/"$database"
- }
-
-exit=0
-while IFS='    ' read -r database
- do if ! snapshot "$database" "$@"
-        then
-               exit=1
-               cat >&2 <<-EOF
-                       ERROR: snapshot "$database" "$@"
-                       EOF
-        fi
  done <<-EOF
        $(mysql -u backup --batch --skip-column-names <<-EOF
                SELECT schema_name
@@ -76,4 +76,3 @@ while IFS='   ' read -r database
                EOF
         )
        EOF
-exit $exit