#! /usr/bin/env bash
if [ "$1" == "--fake" ]; then
echo "true"
exit 0
fi
# Some systems do not compile well with this fake uname in place
# provide the real uname for them.
case "${CROSS}" in
mipsel-unknown-linux-uclibc)
unset CROSS
;;
esac
if [ -z "${CROSS}" ]; then
# If not cross compiling, revert to system uname
while [ "$(uname --fake 2>/dev/null)" == "true" -a -n "${PATH}" ]; do
PATH="$(echo "${PATH}" | /usr/bin/sed 's@^[^:]*$@@;s@^[^:]*:@@')"
export PATH
done
if [ -z "${PATH}" ]; then
exit 1
fi
exec uname "$@"
fi
CROSS="$(echo "${CROSS}" | sed 's@-*$@@')"
# Determine release information
case "${CROSS}" in
*-hpux11*)
sysname="HP-UX"
sysrelease="$(echo "${CROSS}" | sed 's@^.*-hpux@@')"
;;
*-solaris2*)
sysname="SunOS"
sysrelease="$(echo "${CROSS}" | sed 's@^.*-solaris@@;s@^2@5@')"
;;
*-linux*)
sysname="Linux"
sysrelease="2.6.5"
;;
*-netbsd*)
sysname="NetBSD"
sysrelease="$(echo "${CROSS}" | sed 's@^.*-netbsd@@;s@$@.0@')"
;;
*-freebsd*)
sysname="FreeBSD"
sysrelease="$(echo "${CROSS}" | sed 's@^.*-freebsd@@;s@$@.0-RELEASE@')"
;;
esac
# Determine machine information
case "${CROSS}" in
hppa64-*-hpux*)
sysmachine="9000/859"
;;
i386-*-solaris*)
sysmachine="i86pc"
;;
sparc-*-solaris*)
sysmachine="sun4u"
;;
x86_64-*)
sysmachine="x86_64"
;;
i?86-*)
sysmachine="i686"
;;
ia64-*)
sysmachine="ia64"
;;
arm-*|armel-*|armeb-*)
sysmachine="armv7l"
;;
mipsel-*|mipseb-*)
sysmachine="mips"
;;
esac
for arg in $(echo "$@" | sed 's@.@ & @g'); do
case "${arg}" in
-)
continue
;;
r)
retval="${retval} ${sysrelease}"
;;
s)
retval="${retval} ${sysname}"
;;
m)
retval="${retval} ${sysmachine}"
;;
p)
# XXX
retval="${retval} ${syscpu}"
;;
n)
retval="${retval} $(hostname)"
;;
a)
retval="${sysname} $(hostname) ${sysrelease} ${sysversion} ${sysmachine} ${syscpu}"
;;
esac
done
echo "${retval}" | sed 's@^ *@@;s@ *$@@'