62 lines
1.0 KiB
C
62 lines
1.0 KiB
C
#include "string_utils.h"
|
|
|
|
BOOLEAN is_space16(CHAR16 Ch)
|
|
{
|
|
return (Ch == L' ' || Ch == L'\t');
|
|
}
|
|
|
|
CHAR16 ascii_lower16(CHAR16 Ch)
|
|
{
|
|
if (Ch >= L'A' && Ch <= L'Z') {
|
|
return (CHAR16)(Ch + 32);
|
|
}
|
|
return Ch;
|
|
}
|
|
|
|
BOOLEAN ascii_streq_ci(const CHAR16 *A, const CHAR16 *B)
|
|
{
|
|
if (A == NULL || B == NULL) {
|
|
return FALSE;
|
|
}
|
|
|
|
while (*A != L'\0' && *B != L'\0') {
|
|
if (ascii_lower16(*A) != ascii_lower16(*B)) {
|
|
return FALSE;
|
|
}
|
|
A++;
|
|
B++;
|
|
}
|
|
|
|
return (*A == L'\0' && *B == L'\0');
|
|
}
|
|
|
|
void trim_spaces_inplace(CHAR16 *Cmd)
|
|
{
|
|
UINTN start = 0;
|
|
UINTN end = 0;
|
|
UINTN i = 0;
|
|
|
|
if (Cmd == NULL) {
|
|
return;
|
|
}
|
|
|
|
while (Cmd[start] != L'\0' && is_space16(Cmd[start])) {
|
|
start++;
|
|
}
|
|
|
|
end = start;
|
|
while (Cmd[end] != L'\0') {
|
|
end++;
|
|
}
|
|
|
|
while (end > start && is_space16(Cmd[end - 1])) {
|
|
end--;
|
|
}
|
|
|
|
while (i < (end - start)) {
|
|
Cmd[i] = Cmd[start + i];
|
|
i++;
|
|
}
|
|
Cmd[i] = L'\0';
|
|
}
|