root/releases/pkgcore/0.2.14/src/bmh_search.c @ ferringb%2540gmail.com-20070212031528-6nuz9ole6ewf92i7

Revision ferringb%2540gmail.com-20070212031528-6nuz9ole6ewf92i7, 0.7 KB (checked in by Brian Harring <ferringb@…>, 2 years ago)

drop daft copyright header; not accurate

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