# by ico, Tue, 15 Mar 2005 14:04:21 +0100
cp_backup_conffile() {
- [ "$CP_SCRIPT_DEBUG" ] && set -vx
- local file_bak
+ cp_check_and_backup "$@"
+}
+cp_check_and_backup() {
+ [ "$CP_SCRIPT_DEBUG" ] && set -vx
+ local file_bak check did
+
+ if [ "x$1" = "x-r" ]; then
+ check=1
+ shift
+ fi
if [ -z "$1" ]; then
return 1
fi
echo "cp_backup_conffile: $1: No such file" 1>&2
return 1
fi
+ if [ -z "$2" ]; then
+ file_bak="/var/backups/`basename $1`.bak"
+ else
+ file_bak="/var/backups/`basename $2`.bak"
+ fi
- file_bak="/var/backups/`basename $1`.bak"
-
- if [ ! -f $file_bak ]; then
- cp -pf "$1" $file_bak
+ if [ ! -f "$file_bak" ]; then
+ cp -pf "$1" "$file_bak"
+ did=1
else
- if ! cmp -s "$1" $file_bak; then
- /usr/bin/savelog -p -c 7 $file_bak > /dev/null 2> /dev/null
- cp -pf $1 $file_bak
+ if ! cmp -s "$1" "$file_bak"; then
+ /usr/bin/savelog -p -c 7 "$file_bak" > /dev/null 2> /dev/null
+ cp -pf "$1" "$file_bak"
+ did=1
fi
fi
+
+ if [ "$check" -a "$did" ]; then
+ return 0
+ else
+ return 3
+ fi
}
# by jelly, Tue, 15 Mar 2005 14:04:21 +0100