From f727db8f86581f1c25a4109136f0971df9416333 Mon Sep 17 00:00:00 2001 From: deajan Date: Thu, 26 May 2016 22:11:00 +0200 Subject: [PATCH] Fixed sed -i for BSD & Mac --- dev/debug_osync.sh | 34 +++++++++++++++++++++++++---- dev/n_osync.sh | 6 +++--- dev/ofunctions.sh | 53 +++++++++++++++++++++++++++++++++++++++++++++- osync.sh | 34 +++++++++++++++++++++++++---- 4 files changed, 115 insertions(+), 12 deletions(-) diff --git a/dev/debug_osync.sh b/dev/debug_osync.sh index 0a52b38..42a1497 100755 --- a/dev/debug_osync.sh +++ b/dev/debug_osync.sh @@ -4,10 +4,10 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-RC1 -PROGRAM_BUILD=2016052601 +PROGRAM_BUILD=2016052602 IS_STABLE=yes -## FUNC_BUILD=2016052502 +## FUNC_BUILD=2016052602 ## BEGIN Generic functions for osync & obackup written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -591,11 +591,37 @@ function IsNumeric { fi } +## from https://gist.github.com/cdown/1163649 +function urlEncode { + local length="${#1}" + + local LANG=C + for (( i = 0; i < length; i++ )); do + local c="${1:i:1}" + case $c in + [a-zA-Z0-9.~_-]) + printf "$c" + ;; + *) + printf '%%%02X' "'$c" + ;; + esac + done +} + +function urlDecode { + local url_encoded="${1//+/ }" + + printf '%b' "${url_encoded//%/\\x}" +} + function CleanUp { __CheckArguments 0 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG if [ "$_DEBUG" != "yes" ]; then rm -f "$RUN_DIR/$PROGRAM."*".$SCRIPT_PID" + # Fix for sed -i requiring backup extension for BSD & Mac (see all sed -i statements) + rm -f "$RUN_DIR/$PROGRAM."*".$SCRIPT_PID.tmp" fi } @@ -1877,8 +1903,8 @@ function sync_attrs { # If target gets updated first, then sync_attr must update initiator's attrs first # For join, remove leading replica paths - sed -i "s;^${INITIATOR[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${INITIATOR[0]}.$SCRIPT_PID" - sed -i "s;^${TARGET[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${TARGET[0]}.$SCRIPT_PID" + sed -i'.tmp' "s;^${INITIATOR[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${INITIATOR[0]}.$SCRIPT_PID" + sed -i'.tmp' "s;^${TARGET[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${TARGET[0]}.$SCRIPT_PID" if [ "$CONFLICT_PREVALANCE" == "${TARGET[0]}" ]; then local source_dir="${INITIATOR[1]}" diff --git a/dev/n_osync.sh b/dev/n_osync.sh index 1453717..a48a7d9 100755 --- a/dev/n_osync.sh +++ b/dev/n_osync.sh @@ -4,7 +4,7 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-RC1 -PROGRAM_BUILD=2016052601 +PROGRAM_BUILD=2016052602 IS_STABLE=yes source "./ofunctions.sh" @@ -659,8 +659,8 @@ function sync_attrs { # If target gets updated first, then sync_attr must update initiator's attrs first # For join, remove leading replica paths - sed -i "s;^${INITIATOR[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${INITIATOR[0]}.$SCRIPT_PID" - sed -i "s;^${TARGET[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${TARGET[0]}.$SCRIPT_PID" + sed -i'.tmp' "s;^${INITIATOR[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${INITIATOR[0]}.$SCRIPT_PID" + sed -i'.tmp' "s;^${TARGET[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${TARGET[0]}.$SCRIPT_PID" if [ "$CONFLICT_PREVALANCE" == "${TARGET[0]}" ]; then local source_dir="${INITIATOR[1]}" diff --git a/dev/ofunctions.sh b/dev/ofunctions.sh index 509aa65..9cae238 100644 --- a/dev/ofunctions.sh +++ b/dev/ofunctions.sh @@ -1,4 +1,4 @@ -## FUNC_BUILD=2016052502 +## FUNC_BUILD=2016052602 ## BEGIN Generic functions for osync & obackup written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -83,6 +83,7 @@ function Dummy { sleep .1 } +# Sub function of Logger function _Logger { local svalue="${1}" # What to log to stdout local lvalue="${2:-$svalue}" # What to log to logfile, defaults to screen value @@ -97,6 +98,7 @@ function _Logger { fi } +# General log function with log levels function Logger { local value="${1}" # Sentence to log (in double quotes) local level="${2}" # Log level: PARANOIA_DEBUG, DEBUG, NOTICE, WARN, ERROR, CRITIAL @@ -140,6 +142,29 @@ function Logger { fi } +# QuickLogger subfunction, can be called directly +function _QuickLogger { + local value="${1}" + local destination="${2}" # Destination: stdout, log, both + + if ([ "$destination" == "log" ] || [ "$destination" == "both" ]); then + echo -e "$(date) - $value" >> "$LOG_FILE" + elif ([ "$destination" == "stdout" ] || [ "$destination" == "both" ]); then + echo -e "$value" + fi +} + +# Generic quick logging function +function QuickLogger { + local value="${1}" + + if [ "$_SILENT" -eq 1 ]; then + _QuickLogger "$value" "log" + else + _QuickLogger "$value" "stdout" + fi +} + # Portable child (and grandchild) kill function tester under Linux, BSD and MacOS X function KillChilds { local pid="${1}" @@ -557,11 +582,37 @@ function IsNumeric { fi } +## from https://gist.github.com/cdown/1163649 +function urlEncode { + local length="${#1}" + + local LANG=C + for (( i = 0; i < length; i++ )); do + local c="${1:i:1}" + case $c in + [a-zA-Z0-9.~_-]) + printf "$c" + ;; + *) + printf '%%%02X' "'$c" + ;; + esac + done +} + +function urlDecode { + local url_encoded="${1//+/ }" + + printf '%b' "${url_encoded//%/\\x}" +} + function CleanUp { __CheckArguments 0 $# ${FUNCNAME[0]} "$@" #__WITH_PARANOIA_DEBUG if [ "$_DEBUG" != "yes" ]; then rm -f "$RUN_DIR/$PROGRAM."*".$SCRIPT_PID" + # Fix for sed -i requiring backup extension for BSD & Mac (see all sed -i statements) + rm -f "$RUN_DIR/$PROGRAM."*".$SCRIPT_PID.tmp" fi } diff --git a/osync.sh b/osync.sh index a62c17e..1ab66df 100755 --- a/osync.sh +++ b/osync.sh @@ -4,10 +4,10 @@ PROGRAM="osync" # Rsync based two way sync engine with fault tolerance AUTHOR="(C) 2013-2016 by Orsiris de Jong" CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr" PROGRAM_VERSION=1.1-RC1 -PROGRAM_BUILD=2016052601 +PROGRAM_BUILD=2016052602 IS_STABLE=yes -## FUNC_BUILD=2016052502 +## FUNC_BUILD=2016052602 ## BEGIN Generic functions for osync & obackup written in 2013-2016 by Orsiris de Jong - http://www.netpower.fr - ozy@netpower.fr ## type -p does not work on platforms other than linux (bash). If if does not work, always assume output is not a zero exitcode @@ -577,10 +577,36 @@ function IsNumeric { fi } +## from https://gist.github.com/cdown/1163649 +function urlEncode { + local length="${#1}" + + local LANG=C + for (( i = 0; i < length; i++ )); do + local c="${1:i:1}" + case $c in + [a-zA-Z0-9.~_-]) + printf "$c" + ;; + *) + printf '%%%02X' "'$c" + ;; + esac + done +} + +function urlDecode { + local url_encoded="${1//+/ }" + + printf '%b' "${url_encoded//%/\\x}" +} + function CleanUp { if [ "$_DEBUG" != "yes" ]; then rm -f "$RUN_DIR/$PROGRAM."*".$SCRIPT_PID" + # Fix for sed -i requiring backup extension for BSD & Mac (see all sed -i statements) + rm -f "$RUN_DIR/$PROGRAM."*".$SCRIPT_PID.tmp" fi } @@ -1778,8 +1804,8 @@ function sync_attrs { # If target gets updated first, then sync_attr must update initiator's attrs first # For join, remove leading replica paths - sed -i "s;^${INITIATOR[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${INITIATOR[0]}.$SCRIPT_PID" - sed -i "s;^${TARGET[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${TARGET[0]}.$SCRIPT_PID" + sed -i'.tmp' "s;^${INITIATOR[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${INITIATOR[0]}.$SCRIPT_PID" + sed -i'.tmp' "s;^${TARGET[1]};;g" "$RUN_DIR/$PROGRAM.ctime_mtime.${TARGET[0]}.$SCRIPT_PID" if [ "$CONFLICT_PREVALANCE" == "${TARGET[0]}" ]; then local source_dir="${INITIATOR[1]}"