Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9c79678 authored by Joonwoo Park's avatar Joonwoo Park Committed by David S. Miller
Browse files

textsearch: support for case insensitive searching



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

Signed-off-by: default avatarJoonwoo Park <joonwpark81@gmail.com>
Signed-off-by: default avatarPatrick McHardy <kaber@trash.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 58de7862
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -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
+8 −6
Original line number Diff line number Diff line
@@ -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;