]>
git.madduck.net Git - etc/offlineimap.git/blobdiff - .bin/offlineimap
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
-[ "${1:-}" = -q ] && exec >/dev/null
-
VAR=$HOME/.var/offlineimap
VAR=$HOME/.var/offlineimap
-LOCKFILE="$VAR/.cron.lock"
-trap "rm -f $LOCKFILE" 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15
-if ! lockfile -0 -r0 -l 3600 "$LOCKFILE" 2>/dev/null; then
- echo "E: offlineimap is already running." >&2
+
+opts=
+accounts=
+quiet=
+for opt in "$@"; do
+ case "$opt" in
+ --quiet)
+ opts="${opts:+$opts }-uQuiet -l/dev/null"
+ quiet=1
+ ;;
+ -a) continue;;
+ -*) opts="${opts:+$opts }$opt";;
+ *) accounts="${accounts:+$accounts }$opt";;
+ esac
+done
+
+say() { [ -n "$quiet" ] || echo >&2 "$@"; }
+err() { echo >&2 "$@"; }
+
+if [ -z "$accounts" ]; then
+ err "E: no account(s) specified…"
+else
+ accounts=$(echo "$accounts" | sed -e 's/,/ /g')
- echo Renicing because we are not run interactively… >&2
+ say "I: Renicing because we are not run interactively…"
renice 20 -p $$ >/dev/null
ionice -c3 -p $$
fi
renice 20 -p $$ >/dev/null
ionice -c3 -p $$
fi
-ret=0
-/usr/bin/offlineimap -o "$@" || exit $?
+getlock()
+{
+ lockfile="$VAR/.$1.lock"
+ trapfn() { rm -f "$lockfile"; trap - 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15; }
+ trap trapfn 1 2 3 4 5 6 7 8 10 11 12 13 14 15
+ if [ -d "$VAR" ] && ! lockfile -0 -r0 -l 3600 "$lockfile" 2>/dev/null; then
+ return 1
+ fi
+ trap trapfn 0
+}
-if [ -x "$(command -v notmuch)" ]; then
- notmuch new || exit $?
+failures=0
+for account in $accounts; do
+ getlock "$account" || {
+ err "E: unable to acquire lock for account $account, already running?"
+ failures=$(($failures + 1))
+ continue
+ }
+
+ eval /usr/bin/offlineimap -a $account -k metadata=$VAR/$account $opts || \
+ failures=$(($failures + 1))
+
+ trapfn
+done
+
+if [ $failures -gt 0 ]; then
+ exit 1
+else
+ exit 0