[mew-dist 18666] Re: cur of qmail

Yasunari Momoi momo at example.com
2001年 8月 31日 (金) 20:20:04 JST


From: Kazu Yamamoto (山本和彦) <kazu at example.com>
Subject: [mew-dist 18665] Re: cur of qmail
Date: Fri, 31 Aug 2001 20:05:10 +0900 (JST)

> > メールが Maildir/new から Maildir/cur に移動しているためだと
> > 思うのですが、これを取り込めるようにするにはどうすればいいの
> > でしょうか。
> 
> この話題は、まさにその問題から発生しています。
> そのうち、momo ちゃんが、incdir と incm を改良してくれる予定です。

実装は 3 秒ぐらいでできてるんですが (^^;),backup オプション
(-b) と同時に指定されたときの扱いをちょっと考えてました.

まあ,仕様として明記すればどっちでも良さそうな問題なので,と
りあえず次の仕様にしておきました.

・オプション指定なし
	Maildir/new のメールを +inbox へ mv

・-a オプションを指定
	Maildir/cur のメールを +inbox へ mv
	Maildir/new のメールを +inbox へ mv

・-a -b オプションを指定
	Maildir/cur のメールを +inbox へ cp
	Maildir/new のメールを +inbox へ cp
	Maildir/new のメールを Maildir/cur へ mv

つまり,incdir -a -b とすると,同じメールが延々と取れてきて
しまうことになりますが,そのあたりは自己責任ということで...

これでよさそうなら incm (C 版) の方も同じ仕様にします.

-- momo

-------------- next part --------------
#!/bin/sh

VERSION='$Id: incdir,v 1.5 2001/08/31 11:16:05 momo Exp $'
IDIR=.
MDIR=${HOME}/Maildir
FROMCUR="NO"
MOVE="YES"

args=`getopt abd:i: $*`
if [ $? != 0 ]; then
    echo "usage: incdir [-b] [-d maildir] [-i inboxdir]"
    echo "    -a            retrieve all mail from maildir/{cur,new} directory"
    echo "    -b            backup mail to maildir/cur directory"
    echo "    -d maildir    path to maildir  (default: ${HOME}/Maildir)"
    echo "    -i inboxdir   path to inboxdir  (default: .)"
    echo
    echo "version: $VERSION"
    exit 1
fi
set -- $args
for i
do
    case "$i" in
    -a)
	FROMCUR="YES"; shift
	;;
    -b)
	MOVE="NO"; shift
	;;
    -d)
	MDIR="$2"; shift; shift
	;;
    -i)
	IDIR="$2"; shift; shift
	;;
    --)
	shift; break
	;;
    esac
done

if [ \( ! -d $MDIR/new \) -a \( ! -d $MDIR/cur \) ]; then
    echo "can't find $MDIR."; exit 1
fi
if [ ! -d $IDIR ]; then
    echo "can't find $IDIR."; exit 1
fi

SEQ=`ls -f1 $IDIR | egrep '^[1-9][0-9]*$' | sort -n | tail -1`
if [ "$SEQ"X = ""X ]; then
    SEQ=1
else
    SEQ=`expr $SEQ + 1`
fi

if [ "$FROMCUR"X = "YES"X ]; then
    for f in $MDIR/cur/*; do
	# sanity check
	[ ! -f $f ] && continue
	while [ -f $IDIR/$SEQ ]; do
	    SEQ=`expr $SEQ + 1`
	done
	if [ "$MOVE"X = "YES"X ]; then
	    mv $f $IDIR/$SEQ
	else
	    cp -p $f $IDIR/$SEQ
	fi
	echo $SEQ
	SEQ=`expr $SEQ + 1`
    done
fi

for f in $MDIR/new/*; do
    # sanity check
    [ ! -f $f ] && continue
    while [ -f $IDIR/$SEQ ]; do
	SEQ=`expr $SEQ + 1`
    done

    if [ "$MOVE"X = "YES"X ]; then
	mv $f $IDIR/$SEQ
    else
	cp -p $f $IDIR/$SEQ
	mv $f $MDIR/cur/`basename $f`:2,S
    fi
    echo $SEQ
    SEQ=`expr $SEQ + 1`
done

exit 0

# incdir - incorporate new mail from qmail user's maildir
#     author: Yasunari Momoi <momo at example.com>
#     created: 2000/10/13
#
#
# Add the following to your emacs configuration file.
#
# (setq mew-mailbox-type 'mbox)   ; this applies also maildir
# (setq mew-mbox-command "incdir")
# (setq mew-mbox-command-arg "-d /path/to/your/maildir")
#
#
# Copyright (C) 2000 Yasunari Momoi.  All rights reserved.
# Copyright notice is the same as Mew's one.


Mew-dist メーリングリストの案内