* implement strstr
* clean up usb_arcotg_dcd_enable


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14740 a1c6a512-1295-4272-9138-f99709370657
diff --git a/firmware/common/strstr.c b/firmware/common/strstr.c
new file mode 100644
index 0000000..2f33629
--- /dev/null
+++ b/firmware/common/strstr.c
@@ -0,0 +1,45 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id: $
+ *
+ * Copyright (C) 2007 by Christian Gmeiner
+ *
+ ****************************************************************************/
+
+#include <string.h>
+
+/**
+ * Locate substring.
+ * @param search c string to be scanned.
+ * @param find c string containing the sequence of characters to match.
+ * @return a pointer to the first occurrence in search of any of the 
+ *         entire sequence of characters specified in find, or a
+ *         null pointer if the sequence is not present in search.
+ */
+char *strstr(const char *search, const char *find)
+{
+    char *hend;
+    char *a, *b;
+
+    if (*find == 0) return (char*)search;
+    hend = (char *)search + strlen(search) - strlen(find) + 1;
+    while (search < hend) {
+        if (*search == *find) {
+            a = (char *)search;
+            b = (char *)find;
+            for (;;) {
+                if (*b == 0) return (char*)search;
+                if (*a++ != *b++) {
+                    break;
+                }
+            }
+        }
+        search++;
+    }
+    return 0;
+}