Code

Added an implementation of strcasecmp for non glibc systems.
authorKalle Wallin <kaw@linux.se>
Mon, 22 Mar 2004 19:37:17 +0000 (19:37 +0000)
committerKalle Wallin <kaw@linux.se>
Mon, 22 Mar 2004 19:37:17 +0000 (19:37 +0000)
git-svn-id: https://svn.musicpd.org/ncmpc/trunk@378 09075e82-0dd4-0310-85a5-a0d7c8717e4f

support.c
support.h

index 15f084c1cd84afb006ab604bc6ff55f7255e91d4..28297e41846657f2a20f81ce625f6c4835302aa0 100644 (file)
--- a/support.c
+++ b/support.c
@@ -1,3 +1,4 @@
+#include <ctype.h>
 #include <errno.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -34,8 +35,6 @@ iconv_t iconv_to_uft8 = (iconv_t)(-1);
 #endif
 
 
-#ifndef HAVE_LIBGEN_H
-
 char *
 remove_trailing_slash(char *path)
 {
@@ -51,7 +50,25 @@ remove_trailing_slash(char *path)
   return path;
 }
 
+char *
+lowerstr(char *str)
+{
+  size_t i;
+  size_t len = strlen(str);
 
+  if( str==NULL )
+    return NULL;
+
+  i=0;
+  while(i<len && str[i])
+    {
+      str[i] = tolower(str[i]);
+      i++;
+    }
+  return str;
+}
+
+#ifndef HAVE_BASENAME
 char *
 basename(char *path)
 {
@@ -68,8 +85,16 @@ basename(char *path)
 
   return path;
 }
+#endif /* HAVE_BASENAME */
+
 
-#endif /* HAVE_LIBGEN_H */
+#ifndef HAVE_STRCASESTR
+char *
+strcasestr(const char *haystack, const char *needle)
+{
+  return strstr(lowerstr(haystack), lowerstr(needle));
+}
+#endif /* HAVE_STRCASESTR */
 
 
 int
index c0b9c34dc05b33ca0b88d8c69249de203b5deaa8..da5ac5ed800457bd9740264bb884ab5e0a11ad92 100644 (file)
--- a/support.h
+++ b/support.h
@@ -1,10 +1,19 @@
 
 #ifdef HAVE_LIBGEN_H
 #include <libgen.h>
-#else
+#endif
+
+
+#ifndef HAVE_BASENAME
 char *basename(char *path);
 #endif
 
+#ifndef HAVE_STRCASESTR
+char *strcasestr(const char *haystack, const char *needle);
+#endif
+
+char *remove_trailing_slash(char *path);
+char *lowerstr(char *str);
 
 
 int charset_init(void);