From 728bde3beea0c2a89dd4b79365fa87eadbd39b6b Mon Sep 17 00:00:00 2001 From: Jonas 'Sortie' Termansen Date: Sun, 20 Nov 2011 17:07:01 +0100 Subject: [PATCH] Added strncmp(3). --- libmaxsi/hsrc/string.h | 2 +- libmaxsi/string.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/libmaxsi/hsrc/string.h b/libmaxsi/hsrc/string.h index 1c9ebf09..58c3c600 100644 --- a/libmaxsi/hsrc/string.h +++ b/libmaxsi/hsrc/string.h @@ -38,7 +38,7 @@ namespace Maxsi char* Cat(char* Dest, const char* Src); int Compare(const char* A, const char* B); int CompareN(const char* A, const char* B, size_t MaxLength); - int StartsWith(const char* Haystack, const char* Needle); + bool StartsWith(const char* Haystack, const char* Needle); int ToInt(const char* str); int ConvertUInt8T(uint8_t num, char* dest); diff --git a/libmaxsi/string.cpp b/libmaxsi/string.cpp index c4b98e20..14abe3c1 100644 --- a/libmaxsi/string.cpp +++ b/libmaxsi/string.cpp @@ -85,6 +85,24 @@ namespace Maxsi } } + DUAL_FUNCTION(int, strncmp, CompareN, (const char* A, const char* B, size_t MaxLength)) + { + while ( MaxLength-- ) + { + if ( *A == '\0' && *B == '\0' ) { return 0; } + if ( *A < *B ) { return -1; } + if ( *A > *B ) { return 1; } + A++; B++; + } + + return 0; + } + + bool StartsWith(const char* haystack, const char* needle) + { + return CompareN(haystack, needle, Length(needle)) == 0; + } + char* Clone(const char* Input) { size_t InputSize = Length(Input);