[ovs-dev] [patch_v10 1/7] string: Implement strcasestr for Windows.
Darrell Ball
dlu998 at gmail.com
Sat Aug 5 22:58:29 UTC 2017
strcasestr is not defined for Windows, so implement a version
that could be used on Windows. This is needed for an upcoming
patch.
Signed-off-by: Darrell Ball <dlu998 at gmail.com>
Co-authored-by: Ben Pfaff <blp at ovn.org>
Signed-off-by: Ben Pfaff <blp at ovn.org>
---
lib/string.c | 22 ++++++++++++++++++++--
lib/string.h.in | 3 ++-
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/lib/string.c b/lib/string.c
index 082359d..bd8bb86 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011 Nicira, Inc.
+ * Copyright (c) 2009-2017 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,9 +15,11 @@
*/
#include <config.h>
-
+#include <ctype.h>
#include <string.h>
+#include "util.h"
+
#ifndef HAVE_STRNLEN
size_t
strnlen(const char *s, size_t maxlen)
@@ -26,3 +28,19 @@ strnlen(const char *s, size_t maxlen)
return end ? end - s : maxlen;
}
#endif
+
+#ifdef _WIN32
+char *strcasestr(const char *str, const char *substr)
+{
+ do {
+ for (size_t i = 0; ; i++) {
+ if (!substr[i]) {
+ return CONST_CAST(char *, str);
+ } else if (tolower(substr[i]) != tolower(str[i])) {
+ break;
+ }
+ }
+ } while (*str++);
+ return NULL;
+}
+#endif
diff --git a/lib/string.h.in b/lib/string.h.in
index bbdaeb4..7a8e18f 100644
--- a/lib/string.h.in
+++ b/lib/string.h.in
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009, 2011, 2013 Nicira, Inc.
+ * Copyright (c) 2009, 2011, 2013, 2017 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,6 +36,7 @@
#define strcasecmp _stricmp
#define strncasecmp _strnicmp
#define strerror_r(errnum, buf, buflen) strerror_s(buf, buflen, errnum)
+char *strcasestr(const char *, const char *);
#endif
#ifndef HAVE_STRNLEN
--
1.9.1
More information about the dev
mailing list