Comments
Patch
new file mode 100755
@@ -0,0 +1,51 @@
+#!/bin/bash
+#
+# notmuch-retry --- call notmuch and retry if DB is locked
+#
+# Calls notmuch and passes on all commandline arguments. If DB is
+# locked, keep trying notmuch until the DB isn't locked. Notmuch's
+# stdout and stderr go to stdout and stderr. Returns notmuch's return
+# code.
+#
+# Copyright 2010 James Vasile
+#
+# This is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This software is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this software. If not, see
+# <http://www.gnu.org/licenses/>.
+#
+# Authors: James Vasile <james@hackervisions.org>
+
+bin=`which notmuch`
+
+notmuch_retry () {
+ regex="already locked"
+ while [ 1 -gt 0 ]; do
+ $bin $@ 2>$err
+ retcode=$?
+ result=$(<$err)
+ if [[ $result =~ $regex ]]; then
+ sleep 2.5
+ else
+ if [ -n "$result" ]; then
+ echo $result >&2
+ fi
+ return $retcode
+ fi
+ done
+}
+
+err=$(mktemp)
+notmuch_retry $@
+retcode=$?
+rm $err
+exit $retcode