Fixed #21 for missing readlink on MacOS X & BSD
This commit is contained in:
parent
c289e71548
commit
9815a7bff3
|
@ -31,6 +31,7 @@ UNDER WORK
|
||||||
RECENT CHANGES
|
RECENT CHANGES
|
||||||
--------------
|
--------------
|
||||||
|
|
||||||
|
- Fixed #21 by adding portable shell readlink / realpath from https://github.com/mkropat/sh-realpath
|
||||||
- Added detection of osync.sh script in osync-batch.sh to overcome mising path in crontab
|
- Added detection of osync.sh script in osync-batch.sh to overcome mising path in crontab
|
||||||
- Fixed osync-batch.sh script when osync is in executable path like /usr/local/bin
|
- Fixed osync-batch.sh script when osync is in executable path like /usr/local/bin
|
||||||
- Fixed multiple keep logging messages since sleep time between commands has been lowered under a second
|
- Fixed multiple keep logging messages since sleep time between commands has been lowered under a second
|
||||||
|
|
80
osync.sh
80
osync.sh
|
@ -4,7 +4,7 @@ PROGRAM="Osync" # Rsync based two way sync engine with fault tolerance
|
||||||
AUTHOR="(L) 2013-2015 by Orsiris \"Ozy\" de Jong"
|
AUTHOR="(L) 2013-2015 by Orsiris \"Ozy\" de Jong"
|
||||||
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
CONTACT="http://www.netpower.fr/osync - ozy@netpower.fr"
|
||||||
PROGRAM_VERSION=1.00pre
|
PROGRAM_VERSION=1.00pre
|
||||||
PROGRAM_BUILD=2004201501
|
PROGRAM_BUILD=1805201501
|
||||||
|
|
||||||
## type doesn't work on platforms other than linux (bash). If if doesn't work, always assume output is not a zero exitcode
|
## type doesn't work on platforms other than linux (bash). If if doesn't work, always assume output is not a zero exitcode
|
||||||
if ! type -p "$BASH" > /dev/null
|
if ! type -p "$BASH" > /dev/null
|
||||||
|
@ -615,6 +615,80 @@ function CheckConnectivity3rdPartyHosts
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
############################################################################################
|
||||||
|
|
||||||
|
### realpath.sh implementation from https://github.com/mkropat/sh-realpath
|
||||||
|
|
||||||
|
realpath() {
|
||||||
|
canonicalize_path "$(resolve_symlinks "$1")"
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve_symlinks() {
|
||||||
|
_resolve_symlinks "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
_resolve_symlinks() {
|
||||||
|
_assert_no_path_cycles "$@" || return
|
||||||
|
|
||||||
|
local dir_context path
|
||||||
|
path=$(readlink -- "$1")
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
dir_context=$(dirname -- "$1")
|
||||||
|
_resolve_symlinks "$(_prepend_dir_context_if_necessary "$dir_context" "$path")" "$@"
|
||||||
|
else
|
||||||
|
printf '%s\n' "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_prepend_dir_context_if_necessary() {
|
||||||
|
if [ "$1" = . ]; then
|
||||||
|
printf '%s\n' "$2"
|
||||||
|
else
|
||||||
|
_prepend_path_if_relative "$1" "$2"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_prepend_path_if_relative() {
|
||||||
|
case "$2" in
|
||||||
|
/* ) printf '%s\n' "$2" ;;
|
||||||
|
* ) printf '%s\n' "$1/$2" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_assert_no_path_cycles() {
|
||||||
|
local target path
|
||||||
|
|
||||||
|
target=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
for path in "$@"; do
|
||||||
|
if [ "$path" = "$target" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
canonicalize_path() {
|
||||||
|
if [ -d "$1" ]; then
|
||||||
|
_canonicalize_dir_path "$1"
|
||||||
|
else
|
||||||
|
_canonicalize_file_path "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_canonicalize_dir_path() {
|
||||||
|
(cd "$1" 2>/dev/null && pwd -P)
|
||||||
|
}
|
||||||
|
|
||||||
|
_canonicalize_file_path() {
|
||||||
|
local dir file
|
||||||
|
dir=$(dirname -- "$1")
|
||||||
|
file=$(basename -- "$1")
|
||||||
|
(cd "$dir" 2>/dev/null && printf '%s/%s\n' "$(pwd -P)" "$file")
|
||||||
|
}
|
||||||
|
|
||||||
|
### Specfic Osync function
|
||||||
|
|
||||||
function CreateOsyncDirs
|
function CreateOsyncDirs
|
||||||
{
|
{
|
||||||
if ! [ -d "$MASTER_STATE_DIR" ]
|
if ! [ -d "$MASTER_STATE_DIR" ]
|
||||||
|
@ -647,8 +721,8 @@ function CreateOsyncDirs
|
||||||
|
|
||||||
function CheckMasterSlaveDirs
|
function CheckMasterSlaveDirs
|
||||||
{
|
{
|
||||||
MASTER_SYNC_DIR_CANN=$(readlink -f "$MASTER_SYNC_DIR")
|
MASTER_SYNC_DIR_CANN=$(realpath "$MASTER_SYNC_DIR")
|
||||||
SLAVE_SYNC_DIR_CANN=$(readlink -f "$SLAVE_SYNC_DIR")
|
SLAVE_SYNC_DIR_CANN=$(realpath "$SLAVE_SYNC_DIR")
|
||||||
|
|
||||||
if [ "$REMOTE_SYNC" != "yes" ]
|
if [ "$REMOTE_SYNC" != "yes" ]
|
||||||
then
|
then
|
||||||
|
|
Loading…
Reference in New Issue