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

View File

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