# shellcheck shell=bash
#==============================================================================
# Copyright and license info is available in the LICENSE file included with
# the Server Deployment Package (SDP), and also available online:
# https://swarm.workshop.perforce.com/projects/perforce-software-sdp/view/main/LICENSE
#------------------------------------------------------------------------------
#==============================================================================
# This library contains runctions related to handling log files.
#------------------------------------------------------------------------------
# Function: get_old_log_timestamp ($log)
#
# Get the last modified timestamp of the old log in a cross-platform manner.
# If we don't get a correct value using 'stat' (which varies across the
# UNIX/Linux/MacOSX spectrum), use the current time as a fallback. In that
# case, the timestamp will reflect the time the log was moved rather than when
# it was last modified, but that's still reasonable. The file timestamp will
# still have the correct last-modified time.
#------------------------------------------------------------------------------
function get_old_log_timestamp () {
local log=${1:-}
local oldLogTimestamp=
[[ -n "$log" ]] || return
if [[ "$(uname -s)" == "Darwin" ]]; then
oldLogTimestamp=$(stat -L -f %Sm -t '%Y-%m-%d-%H%M%S' "$log" 2>/dev/null)
else
oldLogTimestamp="$(stat -L -c '%10y' "$log" | sed -e 's@[.].*$@@g' -e 's@:@@g' -e 's@ @-@g')"
fi
[[ "$oldLogTimestamp" =~ ^[2-9]{1}[0-9]{3}- ]] ||
oldLogTimestamp=$(date +'%Y-%m-%d-%H%M%S')
echo "$oldLogTimestamp"
}
#------------------------------------------------------------------------------
# Function: terminate
# shellcheck disable=SC2317,SC2154
function terminate ()
{
# Disable signal trapping.
trap - EXIT SIGINT SIGTERM
dbg "ExitCode: $ErrorCount"
[[ "$Log" == "off" ]] || msg "\\nLog is: $Log\\n${H1}"
# With the trap removed, exit.
exit "$ErrorCount"
}