commit 6e51d166be2b57b78176d2b79a76960bb8486040
parent f43ab33872805f7828e61300f2419b8849aaf34b
Author: Jaromil <jaromil@dyne.org>
Date: Tue, 11 Jun 2013 16:49:58 +0000
search/index fixes
warning if mlocate not found and better search string handling
searches through all open tombs. mlocate seems to not support multiple strings well.
Diffstat:
M | tomb | | | 34 | +++++++++++++++++++++++++--------- |
1 file changed, 25 insertions(+), 9 deletions(-)
diff --git a/tomb b/tomb
@@ -1533,7 +1533,15 @@ BEGIN { main="" }
# $1 is optional, to specify a tomb
index_tombs() {
{ command -v updatedb > /dev/null } || {
- die "Cannot index tombs on this system: updatedb not installed" }
+ die "Cannot index tombs on this system: updatedb (mlocate) not installed" }
+
+ updatedbver=`updatedb --version | grep '^updatedb'`
+ [[ "$updatedbver" =~ "GNU findutils" ]] && {
+ _warning "Cannot use GNU findutils for index/search commands" }
+ [[ "$updatedbver" =~ "mlocate" ]] || {
+ die "Index command needs 'mlocate' to be installed." }
+
+ xxx "$updatedbver"
mounted_tombs=(`list_tomb_mounts $1`)
{ test ${#mounted_tombs} = 0 } && {
@@ -1557,14 +1565,22 @@ index_tombs() {
}
search_tombs() {
{ command -v locate > /dev/null } || {
- die "Cannot index tombs on this system: updatedb not installed" }
+ die "Cannot index tombs on this system: updatedb (mlocate) not installed" }
+
+ updatedbver=`updatedb --version | grep '^updatedb'`
+ [[ "$updatedbver" =~ "GNU findutils" ]] && {
+ _warning "Cannot use GNU findutils for index/search commands" }
+ [[ "$updatedbver" =~ "mlocate" ]] || {
+ die "Index command needs 'mlocate' to be installed." }
+
+ xxx "$updatedbver"
# list all open tombs
- mounted_tombs=(`list_tomb_mounts $1`)
- { test ${#mounted_tombs} = 0 } && {
- die "I can't see any open tomb, may they all rest in peace." }
- shift
- yes "Searching for: $fg_bold[white]${=@}$fg_no_bold[white]"
+ mounted_tombs=(`list_tomb_mounts`)
+ if [ ${#mounted_tombs} = 0 ]; then
+ die "I can't see any open tomb, may they all rest in peace."; fi
+
+ yes "Searching for: $fg_bold[white]${(f)@}$fg_no_bold[white]"
for t in ${mounted_tombs}; do
xxx "checking for index: ${t}"
mapper=`basename ${t[(ws:;:)1]}`
@@ -1572,8 +1588,8 @@ search_tombs() {
tombmount=${t[(ws:;:)2]}
if [ -r ${tombmount}/.updatedb ]; then
say "Searching in tomb $tombname"
- locate -d ${tombmount}/.updatedb -e -i ${=@}
- say "Matches found: `locate -d ${tombmount}/.updatedb -e -i -c ${=@}`"
+ locate -d ${tombmount}/.updatedb -e -i "${(f)@}"
+ say "Matches found: `locate -d ${tombmount}/.updatedb -e -i -c ${(f)@}`"
else
no "skipping tomb $tombname: not indexed"
no "run 'tomb index' to create indexes"