libretro-super/script-modules/log.sh

88 lines
1.9 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# vim: set ts=3 sw=3 noet ft=sh : bash
color() {
[ -n "$use_color" ] && echo -n "[0;${1:-0}m"
}
secho() {
echo "$@"
[ -n "$log_file_only" ] && echo "$@" >&6
}
lecho() {
[ -n "$LIBRETRO_LOG_SUPER" ] && echo "$@" >> "$log_super"
}
lsecho() {
echo "$@"
[ -n "$log_file_only" ] && echo "$@" >&6
[ -n "$LIBRETRO_LOG_SUPER" ] && echo "$@" >> "$log_super"
}
echo_cmd() {
eval 'echo "$@"'
eval "$@"
return $?
}
LIBRETRO_LOG_DIR="${LIBRETRO_LOG_DIR:-$WORKDIR/log}"
LIBRETRO_LOG_MODULE="${LIBRETRO_LOG_MODULE:-%s.log}"
LIBRETRO_LOG_SUPER="${LIBRETRO_LOG_SUPER:-libretro-super.log}"
libretro_log_init() {
if [ -z "$LIBRETRO_LOG_SUPER" -a -z "$LIBRETRO_LOG_MODULE" ]; then
return
fi
mkdir -p "$LIBRETRO_LOG_DIR"
if [ -n "$LIBRETRO_LOG_SUPER" ]; then
log_super="$LIBRETRO_LOG_DIR/$LIBRETRO_LOG_SUPER"
# Redirecting : avoids dependency on trunc(1)
[ -z "$LIBRETRO_LOG_APPEND" ] && : > "$log_super"
fi
# Module logs are truncated as they're opened in log_module_start
}
log_module_start() {
if [ -n "$LIBRETRO_LOG_MODULE" ]; then
printf -v log_module "$LIBRETRO_LOG_DIR/$LIBRETRO_LOG_MODULE" "$1"
# Save stdout and stderr to fds 6 and 7
exec 6>&1 7>&2
# Redirecting : avoids dependency on trunc(1)
[ -z "$LIBRETRO_LOG_APPEND" ] && : > "$log_module"
# Output to screen and logfile in developer mode (if possible)
if [[ -n "$LIBRETRO_DEVELOPER" && -n "${log_tee:=$(find_tool "tee")}" ]]; then
exec >> $($log_tee -a "$log_module") 2>&1
else
exec >> "$log_module" 2>&1
log_file_only=1
fi
fi
}
log_module_stop() {
if [ -n "$1" ]; then
# There's a reason we're stopping
lsecho "$@"
fi
if [ -n "$LIBRETRO_LOG_MODULE" ]; then
# Restore stdout/stderr and close our copies
exec 1>&6 2>&7 6>&- 7>&-
log_file_only=""
fi
lsecho ""
}
# TODO: Move this into libretro_log_init once libretro-fetch is fixed
if [[ -n $FORCE_COLOR || -t 1 && -z "$NO_COLOR" ]]; then
want_color=1
use_color=1
else
want_color=""
use_color=""
fi