diff options
| author | Garrett D'Amore <garrett@damore.org> | 2017-12-27 17:36:24 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2017-12-27 17:36:24 -0800 |
| commit | 1fc48dc4a67503c65a040606bc00a4cac7210f13 (patch) | |
| tree | 4ea220a46b4223d75bd08405df354ff5b368018c /src/core | |
| parent | 5ff3d3d3ab82be4b2171e06f1def9cdddaef4115 (diff) | |
| download | nng-1fc48dc4a67503c65a040606bc00a4cac7210f13.tar.gz nng-1fc48dc4a67503c65a040606bc00a4cac7210f13.tar.bz2 nng-1fc48dc4a67503c65a040606bc00a4cac7210f13.zip | |
Compilation fixes for Windows.
Diffstat (limited to 'src/core')
| -rw-r--r-- | src/core/strs.c | 33 | ||||
| -rw-r--r-- | src/core/strs.h | 1 |
2 files changed, 29 insertions, 5 deletions
diff --git a/src/core/strs.c b/src/core/strs.c index a03c0bb5..66a385d0 100644 --- a/src/core/strs.c +++ b/src/core/strs.c @@ -134,14 +134,35 @@ nni_strcasestr(const char *s1, const char *s2) } int +nni_strcasecmp(const char *s1, const char *s2) +{ +#if defined(_WIN32) + return (_stricmp(s1, s2)); +#elif defined(NNG_HAVE_STRCASECMP) + return (strcasecmp(s1, s2)); +#else + for (;;) { + uint8_t c1 = (uint8_t) tolower(*s1++); + uint8_t c2 = (uint8_t) tolower(*s2++); + if (c1 == c2) { + if (c1 == 0) { + return (0); + } + continue; + } + return ((c1 < c2) ? -1 : 1); + } + return (0); +#endif +} + +int nni_strncasecmp(const char *s1, const char *s2, size_t n) { -#ifdef NNG_HAVE_STRNCASECMP -#ifdef _WIN32 +#if defined(_WIN32) return (_strnicmp(s1, s2, n)); -#else +#elif defined(NNG_HAVE_STRNCASECMP) return (strncasecmp(s1, s2, n)); -#endif #else for (int i = 0; i < n; i++) { uint8_t c1 = (uint8_t) tolower(*s1++); @@ -152,12 +173,14 @@ nni_strncasecmp(const char *s1, const char *s2, size_t n) } continue; } - return (c1 < c2 ? -1 : 1); + return ((c1 < c2) ? -1 : 1); } return (0); #endif } +// As with strdup, we always use our own, so that our strings +// can be freed with nni_strfree(). int nni_asprintf(char **sp, const char *fmt, ...) { diff --git a/src/core/strs.h b/src/core/strs.h index 3b369fe4..d4851ecf 100644 --- a/src/core/strs.h +++ b/src/core/strs.h @@ -20,6 +20,7 @@ extern size_t nni_strlcat(char *, const char *, size_t); extern size_t nni_strnlen(const char *, size_t); extern char * nni_strcasestr(const char *, const char *); extern int nni_strncasecmp(const char *, const char *, size_t); +extern int nni_strcasecmp(const char *, const char *); extern int nni_asprintf(char **, const char *, ...); #endif // CORE_STRS_H |
