Blame datefudge.sh

Packit 96cac8
#!/bin/sh
Packit 96cac8
# vim:noet:ts=2
Packit 96cac8
# Fake the system time
Packit 96cac8
Packit 96cac8
dat="$1"
Packit 96cac8
static=0
Packit 96cac8
Packit 96cac8
if [ "$dat" = "-s" -o "$dat" = "--static" ] ; then
Packit 96cac8
	static=1
Packit 96cac8
	shift
Packit 96cac8
	dat="$1"
Packit 96cac8
fi
Packit 96cac8
if [ "$dat" = "-v" -o "$dat" = "--version" ] ; then
Packit 96cac8
	echo "$0: Version @VERSION@"
Packit 96cac8
	echo ""
Packit 96cac8
	echo "For usage information, use '$0 --help'."
Packit 96cac8
	exit 0
Packit 96cac8
fi
Packit 96cac8
if [ -z "$dat" -o "$dat" = "-h" -o "$dat" = "-?" -o "$dat" = "--help" ] ; then
Packit 96cac8
	echo "Usage: $0 [-s|--static] date program args..."
Packit 96cac8
	echo ""
Packit 96cac8
	echo "Run 'program' with 'args'."
Packit 96cac8
	echo "The program will believe that the current time is 'date'."
Packit 96cac8
	if [ -z "$dat" ] ; then exit 1; else exit 0; fi
Packit 96cac8
fi
Packit 96cac8
Packit 96cac8
shift
Packit 96cac8
Packit 96cac8
# Assume that 'date' already printed an error message
Packit 96cac8
sec1=$(date -d "$dat" '+%s')
Packit 96cac8
[ $? -eq 0 ] || exit 1
Packit 96cac8
Packit 96cac8
sec2=$(expr $(date '+%s') - $sec1)
Packit 96cac8
# According to its documentation expr returns exit status 1,
Packit 96cac8
# when the expression evaluates to 0
Packit 96cac8
[ $? -le 1 ] || exit 1
Packit 96cac8
Packit 96cac8
add_ld_preload()
Packit 96cac8
{
Packit 96cac8
	export LD_PRELOAD="${1}${LD_PRELOAD:+:}${LD_PRELOAD}"
Packit 96cac8
}
Packit 96cac8
Packit 96cac8
add_ld_library_path()
Packit 96cac8
{
Packit 96cac8
	export LD_LIBRARY_PATH="${1}${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}"
Packit 96cac8
}
Packit 96cac8
Packit 96cac8
set_ld_environment()
Packit 96cac8
{
Packit 96cac8
	lib="datefudge.so"
Packit 96cac8
	libpath="@LIBDIR@"
Packit 96cac8
	set --	"$libpath"@MULTIARCH_PATTERN@"/datefudge/$lib"
Packit 96cac8
	if [ ! -e "$1" ]; then
Packit 96cac8
		echo "Cannot find $lib in $libpath" >&2
Packit 96cac8
		[ -z "$POSH_VERSION" ] || echo "You might have just encountered posh bug#636601, please try using another shell." >&2
Packit 96cac8
		exit 1;
Packit 96cac8
	fi
Packit 96cac8
	for path in "$@"; do
Packit 96cac8
		add_ld_library_path "${path%/*}"
Packit 96cac8
	done
Packit 96cac8
	add_ld_preload "$lib"
Packit 96cac8
}
Packit 96cac8
Packit 96cac8
set_datefudge_vars()
Packit 96cac8
{
Packit 96cac8
	if [ "$static" = "1" ]; then
Packit 96cac8
		export DATEFUDGE=$sec1
Packit 96cac8
		export DATEFUDGE_DOSTATIC="1"
Packit 96cac8
	else
Packit 96cac8
		export DATEFUDGE=$sec2
Packit 96cac8
		unset  DATEFUDGE_DOSTATIC
Packit 96cac8
	fi
Packit 96cac8
}
Packit 96cac8
Packit 96cac8
Packit 96cac8
set_ld_environment
Packit 96cac8
set_datefudge_vars
Packit 96cac8
Packit 96cac8
exec "$@"