<<< Date Index >>>     <<< Thread Index >>>

Re: How to implement save_empty on maildir?



On Sun, Jun 21, 2009 at 10:31:56AM +0100, Chris G wrote:
> It's one of my major gripes with maildir, there appears to be no way
> to safely (as in maildirsafely) remove a maildir folder.

I would move (rename) the root of the maildir; then you can delete cur,
new, and tmp in any order you like.  Not absolutely foolproof, since you
might successfully delete (for example) $maildir/new but not
$maildir/cur, but at least the initial mv should be atomic.

----------------------------- cut here -----------------------------  
#!/bin/bash
# Also works in zsh (I think)
if [ $# != 1 ]; then
    echo "usage: rmmaildir DIR" >&2
    exit 1
fi
maildir=$1
# This should use ${maildir#/} or whatever but I forget the syntax
parent=${maildir%/*}
base=${maildir##*/}
tmp=$parent/.$base.deleting.$$
if mv $maildir $tmp; then
    if rmdir $tmp/new $tmp/cur $tmp/tmp $tmp; then
        exit 0
    elif ! mkdir -p $tmp/new $tmp/cur $tmp/tmp; then
        echo "Partially deleted" >&2
        exit -1
    fi
else
    echo "Can't delete" >&2
    exit 2
fi
----------------------------- cut here -----------------------------  

Paul.

-- 
Paul Hoffman <nkuitse@xxxxxxxxxxx>