From 13f247afebde199ffb03d23e8662d362d5681ca6 Mon Sep 17 00:00:00 2001
From: intrigeri <intrigeri@boum.org>
Date: Sun, 7 Nov 2010 13:07:26 +0100
Subject: [PATCH] Fix reliance on bash for pipefail. (Closes: #602374)

Thanks to Sergio Talens-Oliag <sto@debian.org> for the bug report and patch.
---
 AUTHORS           |  1 +
 ChangeLog         |  7 +++++++
 handlers/ldap.in  |  2 +-
 handlers/mysql.in |  2 +-
 handlers/pgsql.in | 12 ++++++------
 5 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/AUTHORS b/AUTHORS
index 5ca3087..90fa918 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -37,3 +37,4 @@ Chris Nolan <chris@cenolan.com> -- maildir subdirectory expansion
 Dan Carley -- mysql bugfix
 Jordi Mallach <jordi@debian.org> -- do not error when no jobs are configured
 Jacob Anawalt <jlanawalt@gmail.com> -- pg_dump format option
+Sergio Talens-Oliag <sto@debian.org> -- pipefail fixes
diff --git a/ChangeLog b/ChangeLog
index f7bf585..8bcdc6b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,10 +8,17 @@ version 0.9.9 -- UNRELEASED
 	   (Closes Roundup bug #598)
 	 . Remove support for duplicity < 0.4.4. Even etch-backports has
 	   a newer one.
+	ldap:
+	 . Fix reliance on bash for pipefail.
+	mysql:
+	 . Fix reliance on bash for pipefail.
+	   Thanks to Sergio Talens-Oliag <sto@debian.org> for the patch.
+	   (Closes: #602374)
 	postgresql:
 	 . Support various pg_dump formats in addition to pg_dumpall.
 	   Thanks to Jacob Anawalt <jlanawalt@gmail.com> for the patch.
 	   (Closes Roundup bug #2534)
+	 . Fix reliance on bash for pipefail.
 	rdiff:
 	 . Support reading include/exclude patterns from files using the
 	   "include @/etc/backup_includes" syntax (Closes Roundup bug
diff --git a/handlers/ldap.in b/handlers/ldap.in
index 83307ee..600f172 100644
--- a/handlers/ldap.in
+++ b/handlers/ldap.in
@@ -91,7 +91,7 @@ if [ "$ldif" == "yes" ]; then
             execstr="$execstr > $dumpdir/$dbsuffix.ldif"
          fi
          debug "$execstr"
-         output=`su root -c "set -o pipefail ; $execstr" 2>&1`
+         output=`su root -s /bin/bash -c "set -o pipefail ; $execstr" 2>&1`
          code=$?
          if [ "$code" == "0" ]; then
             debug $output
diff --git a/handlers/mysql.in b/handlers/mysql.in
index 0282046..05ea396 100644
--- a/handlers/mysql.in
+++ b/handlers/mysql.in
@@ -303,7 +303,7 @@ then
       debug "su $user -c \"$execstr\""
       if [ ! $test ]
       then
-         output=`su $user -c "set -o pipefail ; $execstr" 2>&1`
+         output=`su $user -s /bin/bash -c "set -o pipefail ; $execstr" 2>&1`
          code=$?
          if [ "$code" == "0" ]
          then
diff --git a/handlers/pgsql.in b/handlers/pgsql.in
index f68ec2f..ff71ebc 100644
--- a/handlers/pgsql.in
+++ b/handlers/pgsql.in
@@ -115,13 +115,13 @@ fi
 if [ "$databases" == "all" ]; then
    if [ $usevserver = yes ]; then
       if [ "$compress" == "yes" ]; then
-         execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP $GZIP_OPTS > '$backupdir/${vsname}.sql.gz'\""
+         execstr="$VSERVER $vsname exec su - $PGSQLUSER -s /bin/bash -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP $GZIP_OPTS > '$backupdir/${vsname}.sql.gz'\""
       else
          execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$PGSQLDUMPALL > '$backupdir/${vsname}.sql'\""
       fi
    else
       if [ "$compress" == "yes" ]; then
-         execstr="su - $PGSQLUSER -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP $GZIP_OPTS > '$backupdir/${localhost}-all.sql.gz'\""
+         execstr="su - $PGSQLUSER -s /bin/bash -c \"set -o pipefail ; $PGSQLDUMPALL | $GZIP $GZIP_OPTS > '$backupdir/${localhost}-all.sql.gz'\""
       else
          execstr="su - $PGSQLUSER -c \"$PGSQLDUMPALL > '$backupdir/${localhost}-all.sql'\""
       fi
@@ -152,9 +152,9 @@ else
          globalscmd="$PGSQLDUMPALL -g > '$backupdir/globals.sql'"
       fi
       if [ $usevserver = yes ]; then
-         execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$globalscmd\""
+         execstr="$VSERVER $vsname exec su - $PGSQLUSER -s /bin/bash -c \"$globalscmd\""
       else
-         execstr="su - $PGSQLUSER -c \"$globalscmd\""
+         execstr="su - $PGSQLUSER -s /bin/bash -c \"$globalscmd\""
       fi
       debug "$execstr"
       if [ ! $test ]; then
@@ -189,9 +189,9 @@ else
          dumpcmd="$PGSQLDUMP --format=$format ${disablecustomcompress} $db | > '$backupdir/${db}.${dumpext}'"
       fi
       if [ $usevserver = yes ]; then
-         execstr="$VSERVER $vsname exec su - $PGSQLUSER -c \"$dumpcmd\""
+         execstr="$VSERVER $vsname exec su - $PGSQLUSER -s /bin/bash -c \"$dumpcmd\""
       else
-         execstr="su - $PGSQLUSER -c \"$dumpcmd\""
+         execstr="su - $PGSQLUSER -s /bin/bash -c \"$dumpcmd\""
       fi
       debug "$execstr"
       if [ ! $test ]; then
-- 
GitLab