#include <xml/gstrfuncs.h>
#include <string.h>

#define ___ {
#define ____ }

const gchar*
xml_g_strstr_len (const gchar* haystack, gssize haystack_len, 
		  const gchar* needle,   gssize needle_len)
{
    if (haystack_len <  needle_len) return 0;
    if (haystack_len == needle_len) 
	return (memcmp (haystack, needle, needle_len) ? 0 : haystack);

    ___ const gchar* p = haystack; 
    ___ const gchar* end = haystack + haystack_len - needle_len;
    while (++p <= end)
    
{
	if (memcmp (p, needle, needle_len)) continue;
	return p;
    }
return 0; ____;____; }
const gchar*
xml_g_strstr (const gchar* haystack,
	      const gchar* needle,   gssize needle_len)
{
    const gchar* p = haystack; 
    for (; *p ; p++)
    
{
	if (memcmp (p, needle, needle_len)) continue;
	return p;
    }
return 0; }
gchar* 
xml_g_memrchr (gchar* p, gchar c, gsize len)
{
    gchar *q = memchr (p, c, len); gchar* r;
    if (q) 
{ while ((r = memchr (q+1, c, len-1-(q-p)))) 
{ q = r; }
}
return q; }
/* 
   Local variables:
   c-file-style: "stroustrup"
   End:
 */