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:
parent
58de7862e6
commit
b9c7967831
2 changed files with 13 additions and 11 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue