#!/bin/bash

GetKernelVer () {
	local version_code="$(grep -oP '(?<=LINUX_VERSION_CODE )\d+' "${SysRootInclude}/linux/version.h")"

	if [[ -z "${version_code}" ]]; then
		echo "Error: Failed to get kernel version" >&2
		return 1
	fi

	local major="$((version_code / 65536))"
	local minor="$(((version_code - major * 65536) / 256))"
	local patch="$((version_code - major * 65536 - minor * 256))"

	printf '%s.%s.%s' "${major}" "${minor}" "${patch}"
}

# Usage: LinuxKernelVercomp v1 v2
# Where v1 and v2 are 3-part version numbers of linux-kernel, such as 12.5.67
# Return 0 if v1 < v2; otherwise, return 1 if v1 >= v2
LinuxKernelVercomp () {
	local v1="$1"
	local v2="$2"

	if ! grep -qP '\d+\.\d+\.\d+' <<< "${v1}"; then
		echo "Error: Invalid version, v1 = ${v1}" >&2
		return 1
	fi
	if ! grep -qP '\d+\.\d+\.\d+' <<< "${v2}"; then
		echo "Error: Invalid version, v2 = ${v2}" >&2
		return 1
	fi

	if printf '%s\n%s\n' "${v2}" "${v1}" | sort -V -C; then
		return 1
	else
		return 0
	fi
}
