2008年9月25日

[mew-dist 28637] Re:HyperEstraierでインデックス更新中でも検索をしたい

山本です。

> HyperEstraierを検索エンジンに使っている場合で、kMでインデックスを更新
> 中に、k/で検索すると、Emacsが固まってしまいます。
>
> http://hyperestraier.sourceforge.net/uguide-ja.html#tips
> を参考に以下のパッチを作ってみました。

ありがとうございます。アイディアは素晴らしいです。

しかし、以下のようなエラーが出て止まります。

Replicating index...
Replicating index...done
Purging old messages...
estcmd: ERROR: /Users/kazu/Mail/casket_replica: database problem
Purging old messages...failed

コードを眺めてみましたが、原因は分りませんでした。
この問題が解決できたら、マージしようと思います。

もし、原因を調べて頂ける方がいるなら、以下のパッチを CVS に当てて下さい。
幾分コードを奇麗にしてあります。

--かず

Index: mewest
===================================================================
RCS file: /cvsroot/mew/mew/bin/mewest,v
retrieving revision 1.19
diff -c -r1.19 mewest
*** mewest 21 Mar 2008 03:59:58 -0000 1.19
--- mewest 25 Sep 2008 05:17:26 -0000
***************
*** 12,18 ****
RM=rm
MKDIR=mkdir
BASEDIR=${HOME}/Mail
! INDEXDIR=casket
OUTPUT=${OUTPUT:-/dev/null}
LOCK=${BASEDIR}/.mewest.lock
CYGWINENV=no
--- 12,20 ----
RM=rm
MKDIR=mkdir
BASEDIR=${HOME}/Mail
! INDEXDIR_ORG=casket
! INDEXDIR_REPLICA=casket_replica
! INDEXDIR=${INDEXDIR_ORG}
OUTPUT=${OUTPUT:-/dev/null}
LOCK=${BASEDIR}/.mewest.lock
CYGWINENV=no
***************
*** 29,42 ****
exit 1
}

! cleanup_lock () {
${RM} -fr "${LOCK}"
exit 4
}

! cleanup_lock_exit () {
echo $1
! cleanup_lock
}

# Check if environment is Cygwin.
--- 31,56 ----
exit 1
}

! cleanup () {
${RM} -fr "${LOCK}"
+ clean_up_replica
+ }
+
+ cleanup_trap () {
+ cleanup
exit 4
}

! cleanup_exit () {
echo $1
! cleanup
! exit 4
! }
!
! clean_up_replica () {
! if [ -d "${BASEDIR}/${INDEXDIR_REPLICA}" ]; then
! rm -fr "${BASEDIR}/${INDEXDIR_REPLICA}"
! fi
}

# Check if environment is Cygwin.
***************
*** 110,116 ****
shift `expr $OPTIND - 1`
TGTDIR=${1:-${HOME}/Mail}

! trap cleanup_lock 1 2 3 9 15

# create and check lock
if ${MKDIR} "${LOCK}" > /dev/null 2>&1 ; then
--- 124,130 ----
shift `expr $OPTIND - 1`
TGTDIR=${1:-${HOME}/Mail}

! trap cleanup_trap 1 2 3 9 15

# create and check lock
if ${MKDIR} "${LOCK}" > /dev/null 2>&1 ; then
***************
*** 122,134 ****

# Directory exist?
if [ ! -d "${TGTDIR}" ]; then
! cleanup_lock_exit "${TGTDIR} not found"
fi

if [ -d "${BASEDIR}/${INDEXDIR}" ]; then
echo "Purging old messages..."
${ESTCMD} purge "`path_conv \"${BASEDIR}/${INDEXDIR}\"`" "`path_conv \"${TGTDIR}\"`" > ${OUTPUT} ||\
! cleanup_lock_exit "Purging old messages...failed"
echo "Purging old messages...done"
fi

--- 136,153 ----

# Directory exist?
if [ ! -d "${TGTDIR}" ]; then
! cleanup_exit "${TGTDIR} not found"
fi

if [ -d "${BASEDIR}/${INDEXDIR}" ]; then
+ echo "Replicating index..."
+ clean_up_replica
+ cp -R "${BASEDIR}/${INDEXDIR}" "${BASEDIR}/${INDEXDIR_REPLICA}"
+ INDEXDIR=${INDEXDIR_REPLICA}
+ echo "Replicating index...done"
echo "Purging old messages..."
${ESTCMD} purge "`path_conv \"${BASEDIR}/${INDEXDIR}\"`" "`path_conv \"${TGTDIR}\"`" > ${OUTPUT} ||\
! cleanup_exit "Purging old messages...failed"
echo "Purging old messages...done"
fi

***************
*** 138,153 ****

${FIND} "`path_conv \"${TGTDIR}\"`" \
-type d -name "trash" -prune -o \
! -type d -name ${INDEXDIR} -prune -o \
-type f \( -name "[0-9]" -o -name "[0-9]*[0-9]" -o -name "[0-9]*${SUFFIX}" \) -print |\
${ESTCMD} gather -cl -fm -cm -sd -xh "`path_conv \"${BASEDIR}/${INDEXDIR}\"`" - > ${OUTPUT} ||\
! cleanup_lock_exit "Indexing new messages...failed"

echo "Indexing new messages...done"

! # clean up lock
! ${RM} -fr "${LOCK}"
!
exit 0

# Copyright (C) 2006-2007 Mew developing team.
--- 157,177 ----

${FIND} "`path_conv \"${TGTDIR}\"`" \
-type d -name "trash" -prune -o \
! -type d -name ${INDEXDIR_ORG} -prune -o \
! -type d -name ${INDEXDIR_REPLICA} -prune -o \
-type f \( -name "[0-9]" -o -name "[0-9]*[0-9]" -o -name "[0-9]*${SUFFIX}" \) -print |\
${ESTCMD} gather -cl -fm -cm -sd -xh "`path_conv \"${BASEDIR}/${INDEXDIR}\"`" - > ${OUTPUT} ||\
! cleanup_exit "Indexing new messages...failed"

echo "Indexing new messages...done"
+ if [ "${BASEDIR}/${INDEXDIR}" = "${BASEDIR}/${INDEXDIR_REPLICA}" ]; then
+ echo "Replacing old index with new one..."
+ rm -fr "${BASEDIR}/${INDEXDIR_ORG}"
+ mv "${BASEDIR}/${INDEXDIR_REPLICA}" "${BASEDIR}/${INDEXDIR_ORG}"
+ echo "Replacing old index with new one...done"
+ fi

! cleanup
exit 0

# Copyright (C) 2006-2007 Mew developing team.


投稿者 xml-rpc : 2008年9月25日 14:17
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/77529
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。