[SDK] Minor improvements to CRT, RTL, and headers

Signed-off-by: Quinn Stephens <quinn@osmora.org>
This commit is contained in:
2024-11-16 07:10:11 -05:00
parent e81100b2e5
commit e3f81a4c08
13 changed files with 231 additions and 224 deletions

View File

@@ -5,7 +5,7 @@ Provided under the BSD 3-Clause license.
Module Name:
printf.c
wprintf.c
Abstract:

View File

@@ -64,21 +64,17 @@ memmove (
/* Check for overlap */
if (src > dest || ((char *)src + count) < (char *)dest) {
/* Low-to-high copy, like memcpy() */
while (count--) {
*(char *)dest = *(char *)src;
dest = (char *)dest + 1;
src = (char *)src + 1;
}
} else {
/* High-to-low copy */
dest = (char *)dest + count - 1;
src = (char *)src + count - 1;
while (count--) {
*(char *)dest = *(char *)src;
dest = (char *)dest - 1;
src = (char *)src - 1;
}
/* Low-to-high copy, use memcpy() */
return memcpy(dest, src, count);
}
/* High-to-low copy */
dest = (char *)dest + count - 1;
src = (char *)src + count - 1;
while (count--) {
*(char *)dest = *(char *)src;
dest = (char *)dest - 1;
src = (char *)src - 1;
}
return ptr;

View File

@@ -24,9 +24,11 @@ strlen (
const char *ptr;
ptr = str;
while (*ptr++);
while (*ptr) {
ptr++;
}
return ptr - str - sizeof(char);
return ptr - str;
}
size_t
@@ -36,12 +38,14 @@ strnlen (
)
{
size_t len;
const char *ptr;
len = 0;
while (len < maxlen && str[len++]);
ptr = str;
while (maxlen-- && *ptr) {
ptr++;
}
return len - sizeof(char);
return ptr - str;
}
int

View File

@@ -26,8 +26,7 @@ wmemset (
wchar_t *ptr = dest;
while (count--) {
*(wchar_t *)dest = c;
dest = (wchar_t *)dest + 1;
*dest++ = c;
}
return ptr;
@@ -44,9 +43,7 @@ wmemcpy (
wchar_t *ptr = dest;
while (count--) {
*(wchar_t *)dest = *(wchar_t *)src;
dest = (wchar_t *)dest + 1;
src = (wchar_t *)src + 1;
*dest++ = *src++;
}
return ptr;
@@ -64,21 +61,17 @@ wmemmove (
/* Check for overlap */
if (src > dest || ((wchar_t *)src + count) < (wchar_t *)dest) {
/* Low-to-high copy, like memcpy() */
while (count--) {
*(wchar_t *)dest = *(wchar_t *)src;
dest = (wchar_t *)dest + 1;
src = (wchar_t *)src + 1;
}
} else {
/* High-to-low copy */
dest = (wchar_t *)dest + count - 1;
src = (wchar_t *)src + count - 1;
while (count--) {
*(wchar_t *)dest = *(wchar_t *)src;
dest = (wchar_t *)dest - 1;
src = (wchar_t *)src - 1;
}
/* Low-to-high copy, use wmemcpy() */
return wmemcpy(dest, src, count);
}
/* High-to-low copy */
dest = (wchar_t *)dest + count - 1;
src = (wchar_t *)src + count - 1;
while (count--) {
*(wchar_t *)dest = *(wchar_t *)src;
dest = (wchar_t *)dest - 1;
src = (wchar_t *)src - 1;
}
return ptr;

View File

@@ -24,7 +24,9 @@ wcslen (
const wchar_t *ptr;
ptr = str;
while (*ptr++);
while (*ptr) {
ptr++;
}
return ptr - str;
}
@@ -36,15 +38,14 @@ wcsnlen (
)
{
size_t len;
const wchar_t *ptr;
len = 0;
while (len < maxlen && *str) {
len++;
str++;
ptr = str;
while (maxlen-- && *ptr) {
ptr++;
}
return len;
return ptr - str;
}
int