diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-07-04 16:16:50 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-07-04 16:16:50 +0200 |
commit | 04b9dc2d30cfc9b383029f6a4b02e2725108b0ae (patch) | |
tree | e117a998173b767f9fd009d49c4f8573d8b85432 /Libraries/LibC/strings.cpp | |
parent | 63814ffebf16291419745cd8ba29a4d2fd888563 (diff) | |
download | serenity-04b9dc2d30cfc9b383029f6a4b02e2725108b0ae.zip |
Libraries: Create top level directory for libraries.
Things were getting a little crowded in the project root, so this patch
moves the Lib*/ directories into Libraries/.
Diffstat (limited to 'Libraries/LibC/strings.cpp')
-rw-r--r-- | Libraries/LibC/strings.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Libraries/LibC/strings.cpp b/Libraries/LibC/strings.cpp new file mode 100644 index 0000000000..8f248e1438 --- /dev/null +++ b/Libraries/LibC/strings.cpp @@ -0,0 +1,35 @@ +#include <assert.h> +#include <ctype.h> +#include <strings.h> + +extern "C" { + +static char foldcase(char ch) +{ + if (isalpha(ch)) + return tolower(ch); + return ch; +} + +int strcasecmp(const char* s1, const char* s2) +{ + for (; foldcase(*s1) == foldcase(*s2); ++s1, ++s2) { + if (*s1 == 0) + return 0; + } + return foldcase(*(const unsigned char*)s1) < foldcase(*(const unsigned char*)s2) ? -1 : 1; +} + +int strncasecmp(const char* s1, const char* s2, size_t n) +{ + if (!n) + return 0; + do { + if (foldcase(*s1) != foldcase(*s2++)) + return foldcase(*(const unsigned char*)s1) - foldcase(*(const unsigned char*)--s2); + if (*s1++ == 0) + break; + } while (--n); + return 0; +} +} |