Added include of string.h
[yaz-moved-to-github.git] / util / matchstr.c
index 193a47e..e223132 100644 (file)
@@ -1,46 +1,19 @@
 /*
- * Copyright (c) 1995-1997, Index Data.
+ * Copyright (c) 1995-2003, Index Data.
  * See the file LICENSE for details.
  * Sebastian Hammer, Adam Dickmeiss
  *
- * $Log: matchstr.c,v $
- * Revision 1.2  1999-10-15 11:35:41  adam
- * Character '.' matches any single character.
- *
- * Revision 1.1  1999/06/08 10:10:16  adam
- * New sub directory zutil. Moved YAZ Compiler to be part of YAZ tree.
- *
- * Revision 1.7  1997/09/30 11:47:47  adam
- * Added function 'cause checkergcc doesn't include assert handler.
- *
- * Revision 1.6  1997/09/04 07:54:34  adam
- * Right hande side operand of yaz_matchstr may include a ? in
- * which case it returns "match ok".
- *
- * Revision 1.5  1997/07/21 12:48:11  adam
- * Removed windows DLL stubs.
- *
- * Revision 1.4  1997/05/01 15:07:55  adam
- * Added DLL entry point routines.
- *
- * Revision 1.3  1996/10/29 13:36:28  adam
- * Added header.
- *
- * Revision 1.2  1996/02/20 17:58:42  adam
- * Added const to yaz_matchstr.
- *
- * Revision 1.1  1996/02/20  16:33:06  quinn
- * Moved matchstr to global util
- *
- * Revision 1.1  1995/11/01  11:56:08  quinn
- * Added Retrieval (data management) functions en masse.
- *
- *
+ * $Id: matchstr.c,v 1.7 2003-02-12 21:34:57 adam Exp $
  */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <stdio.h>
 #include <assert.h>
 #include <ctype.h>
-#include <yaz-util.h>
+#include <string.h>
+#include <yaz/yaz-util.h>
 
 /*
  * Match strings, independently of case and occurences of '-'.
@@ -58,9 +31,9 @@ int yaz_matchstr(const char *s1, const char *s2)
         if (c2 == '?')
             return 0;
        if (c1 == '-')
-           s1++;
+           c1 = *++s1;
        if (c2 == '-')
-           s2++;
+           c2 = *++s2;
        if (!c1 || !c2)
            break;
         if (c2 != '.')
@@ -78,6 +51,20 @@ int yaz_matchstr(const char *s1, const char *s2)
     return *s1 || *s2;
 }
 
+int yaz_strcmp_del(const char *a, const char *b, const char *b_del)
+{
+    while (*a && *b)
+    {
+        if (*a != *b)
+            return *a - *b;
+        a++;
+        b++;
+    }
+    if (b_del && strchr(b_del, *b))
+        return *a;
+    return *a - *b;
+}
+
 #ifdef __GNUC__
 #ifdef __CHECKER__
 void __assert_fail (const char *assertion, const char *file,