#!/bin/sh
LOCALE_FILE="/usr/share/fll-live-initscripts/locales.csv"
# en_US\t0\tkbm\tkbv\tkbl\tkbo\ttz\tmirror\tlocales
# locales
#   locale1 locale2

LOCALES="$(locale -a)"

fll_locale_default() {
	# is this locale the default for it's language?
	return $(awk 'BEGIN{FS="\t"} /^'$1'\t/{print $2}' ${LOCALE_FILE})
}

fll_locale_cheats() {
	# the list of all ll_CC we know by cheat
	[ -n "${FLL_LOCALE_CHEATS}" ] && return

	FLL_LOCALE_CHEATS=$(awk 'BEGIN{FS="\t"} {print $1" "}' ${LOCALE_FILE})
}

fll_locale_lang() {
	# set LANG to use for given cheat
	# get the list of locales the requested one lists
	locale_list=$(awk 'BEGIN{FS="\t"} /^'$1'\t/{print $5}' ${LOCALE_FILE})

	# starting with the given one, check each of those in turn
	for locale_temp in "$1 ${locale_list}"; do
		# get the list for the current locale
		locale_list2=$(awk 'BEGIN{FS="\t"} /^'$locale_temp'\t/{print $5}' ${LOCALE_FILE})

		# stop on first available locale
		for locale_temp2 in ${locale_list2}; do
			for locale_temp3 in ${LOCALES}; do
				[ "${locale_temp3}" = "${locale_temp2}" ] && LANG="${locale_temp3}" && return
			done
		done
	done
}

fll_locale_demo() {
	# set KB{M|L|V|O}, TZ for LANG
	c=3

	for optname in XKBMODEL XKBLAYOUT XKBVARIANT XKBOPTIONS TZ; do
		# extract value from file
		v=$(awk 'BEGIN{FS="\t"} /^'$1'\t/{print $'${c}'}' ${LOCALE_FILE})

		if [ -n "${v}" ]; then
			# set variable to value
			eval ${optname}=${v}
		fi

		c=$((c+1))
	done
}
