summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apt-private/private-search.cc8
-rwxr-xr-xtest/integration/test-apt-cli-search7
2 files changed, 12 insertions, 3 deletions
diff --git a/apt-private/private-search.cc b/apt-private/private-search.cc
index 8106333b6..ecd5d7fad 100644
--- a/apt-private/private-search.cc
+++ b/apt-private/private-search.cc
@@ -68,8 +68,12 @@ bool FullTextSearch(CommandLine &CmdL) /*{{{*/
const char *pattern = patterns[i];
all_found &= (
strstr(V.ParentPkg().Name(), pattern) != NULL ||
- parser.ShortDesc().find(pattern) != std::string::npos ||
- parser.LongDesc().find(pattern) != std::string::npos);
+ strcasestr(parser.ShortDesc().c_str(), pattern) != NULL ||
+ strcasestr(parser.LongDesc().c_str(), pattern) != NULL);
+ // search patterns are AND by default so we can skip looking further
+ // on the first mismatch
+ if(all_found == false)
+ break;
}
if (all_found)
{
diff --git a/test/integration/test-apt-cli-search b/test/integration/test-apt-cli-search
index 84650b366..58613717b 100755
--- a/test/integration/test-apt-cli-search
+++ b/test/integration/test-apt-cli-search
@@ -13,7 +13,7 @@ if [ ! -x ${BUILDDIRECTORY}/apt ]; then
exit 0
fi
-DESCR='Some description that has a unusual word xxyyzz and aabbcc'
+DESCR='Some description that has a unusual word xxyyzz and aabbcc and a UPPERCASE'
DESCR2='Some other description with the unusual aabbcc only'
insertpackage 'unstable' 'foo' 'all' '1.0' '' '' "$DESCR"
insertpackage 'testing' 'bar' 'i386' '2.0' '' '' "$DESCR2"
@@ -39,6 +39,11 @@ testequal "foo/unstable 1.0 all
$DESCR
" apt search -qq aabbcc xxyyzz
+# search is not case-sensitive by default
+testequal "foo/unstable 1.0 all
+ $DESCR
+" apt search -qq uppercase
+
# output is sorted and search word finds both package
testequal "bar/testing 2.0 i386
$DESCR2