X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=util%2Fmatchstr.c;h=e2231326f14063c949c958358f2467fa4f5232e3;hb=c39a893dfdae5f792139177132e7e7a70e010aa7;hp=193a47ee480540f004f1d41dafd78a6f5d26bab5;hpb=8e3a0973e8149ae25f5404395f417761edee1604;p=yaz-moved-to-github.git diff --git a/util/matchstr.c b/util/matchstr.c index 193a47e..e223132 100644 --- a/util/matchstr.c +++ b/util/matchstr.c @@ -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 +#endif + #include #include #include -#include +#include +#include /* * 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,