#!/bin/bash
# LGSM fn_glibcfix function
# Author: Daniel Gibbs
# Website: http://danielgibbs.co.uk
# Version: 171214

fn_glibcfixmsg(){
echo "GLIBC Fix required"
echo "============================"
sleep 1
echo -e "\e[0;31mWARNING!\e[0;39m ${gamename} requires GLIBC_${glibcversion} or above"
sleep 1
echo ""
echo -e "Currently installed:\e[0;31m GLIBC_$(ldd --version |grep ldd|awk '{print $NF}')\e[0;39m"
echo -e "Required: =>\e[0;32m GLIBC_${glibcversion}\e[0;39m"
echo ""
sleep 1
echo "The installer will now detect and download the required files to allow ${gamename} server to run on a distro with less than GLIBC_${glibcversion}."
echo "note: This will NOT upgrade GLIBC on your system."
sleep 1
echo ""
echo "loading required files..."
sleep 1
}

# if ldd command not detected
if [ -z $(command -v ldd) ]; then
	echo ""
	echo -e "\r\033[K\e[0;31mFAIL\e[0;39m GLIBC is not detected."
	sleep 1
	echo "Install GLIBC and retry installation"
	sleep 1
	echo ""
	while true; do
		read -p "Continue install? [y/N]" yn
		case $yn in
			[Yy]* ) break;;
			[Nn]* ) echo Exiting; exit;;
			 * ) echo "Please answer yes or no.";;
		esac
	done
# if Glibc less than 1.15
elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 215 ]; then
	# Blade Symphony
	if [ "${gamename}" == "Blade Symphony" ]; then
		glibcversion="2.15"
		fn_glibcfixmsg
		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
	# Fistful of Frags
	elif [ "${gamename}" == "Fistful of Frags" ]; then
		glibcversion="2.15"
		fn_glibcfixmsg
		cd "${filesdir}"
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/FistfulOfFrags/dependencies/libm.so.6
	# Garrys's Mod
	elif [ "${gamename}" == "Garrys's Mod" ]; then
		glibcversion="2.15"
		fn_glibcfixmsg
		cd "${filesdir}/bin"
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/GarrysMod/dependencies/libc.so.6
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/GarrysMod/dependencies/libm.so.6
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/GarrysMod/dependencies/libpthread.so.0
		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
	# Insurgency
	elif [ "${gamename}" == "Insurgency" ]; then
		glibcversion="2.15"
		fn_glibcfixmsg
		cd "${filesdir}/bin"
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libc.so.6
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/librt.so.1
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/Insurgency/dependencies/libpthread.so.0
	# Natural Selection 2
	elif [ "${gamename}" == "Natural Selection 2" ]; then
		glibcversion="2.15"
		fn_glibcfixmsg
		cd "${filesdir}"
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/NaturalSelection2/dependencies/libm.so.6
		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
	# No More Room in Hell
	elif [ "${gamename}" == "No More Room in Hell" ]; then
		glibcversion="2.15"
		fn_glibcfixmsg
		cd "${filesdir}"
		wget -nv -N --no-check-certificate https://github.com/dgibbs64/linuxgameservers/raw/master/NoMoreRoomInHell/dependencies/libm.so.6
		cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
	# if Glibc less than 1.13
	elif [ "$(ldd --version | sed -n '1 p' | tr -cd [:digit:] | tail -c 3)" -lt 213 ]; then
		# ARMA 3
		if [ "${gamename}" == "ARMA 3" ]; then
			glibcversion="2.13"
			fn_glibcfixmsg
			cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
		# Just Cause 2
		elif [ "${gamename}" == "Just Cause 2" ]; then
			glibcversion="2.13"
			fn_glibcfixmsg
			cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/libstdc++.so.6"
		# Serious Sam 3: BFE
		elif [ "${gamename}" == "Serious Sam 3: BFE" ]; then
			glibcversion="2.13"
			fn_glibcfixmsg
			cp -v "${rootdir}/steamcmd/linux32/libstdc++.so.6" "${filesdir}/Bin/libstdc++.so.6"
		else
			echo "error: Unable to detect game. Fix not applied"
		fi
	else
		echo "error: Unable to detect game. Fix not applied"
	fi
fi
sleep 1
echo ""