root/releases/pkgcore/0.2.2/src/bmh_search.c @ ferringb%2540gmail.com-20061129105346-09dc98e0fd6602b1

Revision ferringb%2540gmail.com-20061129105346-09dc98e0fd6602b1, 0.8 KB (checked in by Brian Harring <ferringb@…>, 2 years ago)

fixup cpy filter-env compilation in my branch (further reversion)

Line 
1/*
2 Copyright: 2005 Gentoo Foundation
3 License: GPL2
4 $Id:$
5*/
6
7/* raided from http://www.dcc.uchile.cl/~rbaeza/handbook/algs/7/713b.srch.c.html
8aparently distributed by Addison-Wesley Publishing Co. Inc, http://aw.com/
9*/
10
11#include <string.h>
12#define MAXCHAR 256
13
14const char *bmh_search(const unsigned char *pat, const unsigned char *text,
15    int n)
16{
17    int i, j, m, k, skip[MAXCHAR];
18
19    m = strlen((char *)pat);
20    if (m == 0)
21        return (char *)text;
22
23    for (k=0; k<MAXCHAR; ++k)
24        skip[k] = m;
25    for (k=0; k<m-1; k++)
26        skip[pat[k]] = m-k-1;
27
28    for (k=m-1; k < n; k += skip[text[k] & (MAXCHAR-1)]) {
29        for (j=m-1, i=k; j>=0 && text[i] == pat[j]; --j)
30            --i;
31        if (j == -1)
32            return (char *)(text+i+1);
33    }
34
35    return NULL;
36}
Note: See TracBrowser for help on using the browser.