// non-digit characters. For instance, if InString is "foo-3.3.4-7.img",
// this function returns "3.3.4-7". If InString contains no digits,
// the return value is NULL.
+// As a special case for Arch Linux the strings "linux" and "linux-lts"
+// are considered to be digits.
CHAR16 *FindNumbers(IN CHAR16 *InString) {
UINTN i, StartOfElement, EndOfElement = 0, CopyLength;
CHAR16 *Found = NULL;
return NULL;
StartOfElement = StrLen(InString);
+
+ // Find "linux-lts" or "linux"
+ Found = MyStrStr(InString, L"linux-lts");
+ if (Found != NULL) {
+ StartOfElement = Found - InString;
+ EndOfElement = StartOfElement + StrLen(L"linux-lts") - 1;
+ } else {
+ Found = MyStrStr(InString, L"linux");
+ if (Found != NULL) {
+ StartOfElement = Found - InString;
+ EndOfElement = StartOfElement + StrLen(L"linux") - 1;
+ } // if
+ } // if/else
+ Found = NULL;
+
// Find start & end of target element
for (i = 0; InString[i] != L'\0'; i++) {
if ((InString[i] >= L'0') && (InString[i] <= L'9')) {
EndOfElement = i;
} // if
} // for
+
// Extract the target element
if (EndOfElement > 0) {
if (EndOfElement >= StartOfElement) {