textsearch: support for case insensitive searching

The function textsearch_prepare has a new flag to support case
insensitive searching.

Signed-off-by: Joonwoo Park <joonwpark81@gmail.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Joonwoo Park 2008-07-08 02:37:31 -07:00 committed by David S. Miller
parent 58de7862e6
commit b9c7967831
2 changed files with 13 additions and 11 deletions

View File

@ -10,10 +10,8 @@
struct ts_config;
/**
* TS_AUTOLOAD - Automatically load textsearch modules when needed
*/
#define TS_AUTOLOAD 1
#define TS_AUTOLOAD 1 /* Automatically load textsearch modules when needed */
#define TS_IGNORECASE 2 /* Searches string case insensitively */
/**
* struct ts_state - search state
@ -39,7 +37,7 @@ struct ts_state
struct ts_ops
{
const char *name;
struct ts_config * (*init)(const void *, unsigned int, gfp_t);
struct ts_config * (*init)(const void *, unsigned int, gfp_t, int);
unsigned int (*find)(struct ts_config *,
struct ts_state *);
void (*destroy)(struct ts_config *);
@ -52,12 +50,14 @@ struct ts_ops
/**
* struct ts_config - search configuration
* @ops: operations of chosen algorithm
* @flags: flags
* @get_next_block: callback to fetch the next block to search in
* @finish: callback to finalize a search
*/
struct ts_config
{
struct ts_ops *ops;
int flags;
/**
* get_next_block - fetch next block of data

View File

@ -54,10 +54,13 @@
* USAGE
*
* Before a search can be performed, a configuration must be created
* by calling textsearch_prepare() specyfing the searching algorithm and
* the pattern to look for. The returned configuration may then be used
* for an arbitary amount of times and even in parallel as long as a
* separate struct ts_state variable is provided to every instance.
* by calling textsearch_prepare() specifying the searching algorithm,
* the pattern to look for and flags. As a flag, you can set TS_IGNORECASE
* to perform case insensitive matching. But it might slow down
* performance of algorithm, so you should use it at own your risk.
* The returned configuration may then be used for an arbitary
* amount of times and even in parallel as long as a separate struct
* ts_state variable is provided to every instance.
*
* The actual search is performed by either calling textsearch_find_-
* continuous() for linear data or by providing an own get_next_block()
@ -89,7 +92,6 @@
* panic("Oh my god, dancing chickens at %d\n", pos);
*
* textsearch_destroy(conf);
*
* ==========================================================================
*/
@ -279,7 +281,7 @@ struct ts_config *textsearch_prepare(const char *algo, const void *pattern,
if (ops == NULL)
goto errout;
conf = ops->init(pattern, len, gfp_mask);
conf = ops->init(pattern, len, gfp_mask, flags);
if (IS_ERR(conf)) {
err = PTR_ERR(conf);
goto errout;