summaryrefslogtreecommitdiff
path: root/fitz
diff options
context:
space:
mode:
authorRobin Watts <robin.watts@artifex.com>2013-05-27 12:53:03 +0100
committerRobin Watts <robin.watts@artifex.com>2013-05-27 14:02:07 +0100
commit4fc3c0324e080c3df7455a9ba8fcb60d6baba7eb (patch)
treea8ee8ed65a8ff19de431cfead76244e982c318d3 /fitz
parent868a21fe07d4ac760a3bc429edefe860b8255b6d (diff)
downloadmupdf-4fc3c0324e080c3df7455a9ba8fcb60d6baba7eb.tar.xz
Treat multiple whitespace in search strings as single.
Skip over successive whitespace in search string. Make android use text_search.c
Diffstat (limited to 'fitz')
-rw-r--r--fitz/fitz.h2
-rw-r--r--fitz/text_search.c9
2 files changed, 9 insertions, 2 deletions
diff --git a/fitz/fitz.h b/fitz/fitz.h
index 52264d92..8817672d 100644
--- a/fitz/fitz.h
+++ b/fitz/fitz.h
@@ -2292,7 +2292,7 @@ void fz_print_text_page(fz_context *ctx, fz_output *out, fz_text_page *page);
NOTE: This is an experimental interface and subject to change without notice.
*/
-int fz_search_text_page(fz_context *ctx, fz_text_page *text, char *needle, fz_rect *hit_bbox, int hit_max);
+int fz_search_text_page(fz_context *ctx, fz_text_page *text, const char *needle, fz_rect *hit_bbox, int hit_max);
/*
fz_highlight_selection: Return a list of rectangles to highlight given a selection rectangle.
diff --git a/fitz/text_search.c b/fitz/text_search.c
index 6631535b..9b0a3acf 100644
--- a/fitz/text_search.c
+++ b/fitz/text_search.c
@@ -103,9 +103,16 @@ static int match(fz_text_page *page, const char *s, int n)
s += fz_chartorune(&c, (char *)s);
if (iswhite(c) && iswhite(charat(page, n)))
{
+ const char *s_next;
+
+ /* Skip over whitespace in the document */
do
n++;
while (iswhite(charat(page, n)));
+
+ /* Skip over multiple whitespace in the search string */
+ while (s_next = s + fz_chartorune(&c, (char *)s), iswhite(c))
+ s = s_next;
}
else
{
@@ -118,7 +125,7 @@ static int match(fz_text_page *page, const char *s, int n)
}
int
-fz_search_text_page(fz_context *ctx, fz_text_page *text, char *needle, fz_rect *hit_bbox, int hit_max)
+fz_search_text_page(fz_context *ctx, fz_text_page *text, const char *needle, fz_rect *hit_bbox, int hit_max)
{
int pos, len, i, n, hit_count;