spkg: strlib: Add RtlMemCmp() to string lib
Signed-off-by: Chloe M. <chloe@yiffware.org>
This commit is contained in:
@@ -18,4 +18,15 @@
|
|||||||
*/
|
*/
|
||||||
USIZE RtlStrLen(const CHAR *String);
|
USIZE RtlStrLen(const CHAR *String);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compare the differences between two strings
|
||||||
|
*
|
||||||
|
* @Buffer1: First buffer to compare
|
||||||
|
* @Buffer2: Second buffer to compare
|
||||||
|
* @Length: Number of bytes to compare
|
||||||
|
*
|
||||||
|
* Returns the differences
|
||||||
|
*/
|
||||||
|
LONG RtlMemCmp(const VOID *Buffer1, const VOID *Buffer2, USIZE Length);
|
||||||
|
|
||||||
#endif /* !_SPKG_STRING_H_ */
|
#endif /* !_SPKG_STRING_H_ */
|
||||||
|
|||||||
@@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2026, Chloe M.
|
||||||
|
* Provided under the BSD-3 clause.
|
||||||
|
*
|
||||||
|
* Description: RtlMemCmp() implementation
|
||||||
|
* Author: Chloe M.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
LONG
|
||||||
|
RtlMemCmp(const VOID *Buffer1, const VOID *Buffer2, USIZE Length)
|
||||||
|
{
|
||||||
|
const UCHAR *Ptr1 = Buffer1;
|
||||||
|
const UCHAR *Ptr2 = Buffer2;
|
||||||
|
|
||||||
|
if (Buffer1 == NULL || Buffer2 == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Length == 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (*Ptr1++ != *Ptr2++) {
|
||||||
|
return (*--Ptr1 - *--Ptr2);
|
||||||
|
}
|
||||||
|
} while (--Length != 0);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user