if test "$IMAPINVOKE" = ""
then
    IMAPINVOKE="./imapd"
fi

SED='s/UIDVALIDITY [0-9]*/UIDVALIDITY/;s/INTERNALDATE "[^"]*"/INTERNALDATE -DATE-/g;s/SNAPSHOT "[^"]*"/SNAPSHOT -SNAPSHOT-/g;s/SNAPSHOTEXISTS "[^"]*"/SNAPSHOTEXISTS -SNAPSHOT-/g;s/ADD "UID=[^"]*/ADD "UID=<uid>/;s:^-ERR .*:-ERR --error--:'

rm -rf confmdtest
../maildir/maildirmake confmdtest
i=0;
while test "$i" -lt 200
do
  ../maildir/deliverquota confmdtest <<EOF
Subject: test message

test message
EOF
  i=`expr $i + 1`
done

env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
STORE 1-10 20-80 90-130 +FLAGS=DELETED
EXPUNGE
LOGOUT
EOF

rm -rf confmdtest
../maildir/maildirmake confmdtest
i=0;
while test "$i" -lt 200
do
  ../maildir/deliverquota confmdtest <<EOF
Subject: test message

test message
EOF
  i=`expr $i + 1`
done

env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
EXPUNGE 1-10 20-80 90-130
LOGOUT
EOF

rm -rf confmdtest
../maildir/maildirmake confmdtest
../maildir/deliverquota confmdtest <<EOF
Subject: Test MIME message
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=aaa

--aaa
Content-Type: multipart/alternative; boundary=bbb

--bbb
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline

text/plain content

--bbb
Content-Type: text/html; charset=iso-8859-1
Content-Disposition: inline

text/html content

--bbb--

--aaa
Content-Type: message/rfc822

Mime-Version: 1.0
Subject: Attached message
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Attached message

--aaa--
EOF

env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
FETCH 1 CONTENTS.PEEK=MIME(Mime-Version,Content-Type,Content-Disposition)
FETCH 1 CONTENTS=MIME(Mime-Version,Content-Type,Content-Disposition)
FETCH 1 CONTENTS=HEADERS(Mime-Version,Content-Type)
FETCH 1 CONTENTS=HEADERS
FETCH 1 CONTENTS=HEADERS[1.1]
FETCH 1 CONTENTS=HEADERS[1.1.1]
FETCH 1 CONTENTS=HEADERS[1.1.2]
FETCH 1 CONTENTS=HEADERS[1.2]
FETCH 1 CONTENTS=HEADERS[1.2.0]
FETCH 1 CONTENTS=HEADERS[A]
FETCH 1 CONTENTS=HEADERS[2]
FETCH 1 CONTENTS=HEADERS[1.1.3]
FETCH 1 CONTENTS=HEADERS[1.2.1]
FETCH 1 CONTENTS=BODY
FETCH 1 CONTENTS=BODY[1.2.0]
LOGOUT
EOF

rm -rf confmdtest confmdtest2
../maildir/maildirmake confmdtest
../maildir/maildirmake confmdtest2
../maildir/maildirmake -f folder1 confmdtest2
../maildir/maildirmake --add test=`pwd`/confmdtest2 confmdtest
../maildir/maildirmake -q10C confmdtest
../maildir/deliverquota confmdtest <<EOF
Subject: testing body.decoded
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=zzz

--zzz
Content-Type: text/plain
Content-Transfer-Encoding: 8bit

This is a text/plain 8bit section

--zzz
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

This is =61 text/plain =
quoted-printable section

--zzz
Content-Type: text/plain
Content-Transfer-Encoding: base64

YWNsb2NhbC5tNAkJICAgIGltYXBkLm8JCSAgICAgbXNnZW52ZWxvcGUubwphdXRoZW50aWNhdGVf
YXV0aC5jCSAgICBpbWFwZC5wYW0JCSAgICAgbXlzaWduYWwuYwphdXRoZW50aWNhdGVfYXV0aC5j
Ln4xLjYufiAgaW1hcGQuc2dtbAkJICAgICBteXNpZ25hbC5oCmF1dGhlbnRpY2F0ZV9hdXRoLm8J
ICAgIGltYXBkLXNzbC5kaXN0CSAgICAgbXlzaWduYWwubwphdXRoZW50aWNhdGVfc3R1Yi5jCSAg
ICBpbWFwZC1zc2wuZGlzdC5pbgkgICAgIG91dGJveC5jCmF1dG9tNHRlLTIuNTMuY2FjaGUJICAg
IGltYXBsb2dpbgkJICAgICBvdXRib3guaApCVUdTCQkJICAgIGltYXBsb2dpbi5jCQkgICAgIG91
dGJveC5vCmNhcGFiaWxpdHkuYwkJICAgIGltYXBsb2dpbi5jLn4xLjE5Ln4gICAgICBwb3AzZApj
YXBhYmlsaXR5LmMufjEuNi5+CSAgICBpbWFwbG9naW4ubwkJICAgICBwb3AzZC5hdXRocGFtCmNh
cGFiaWxpdHkubwkJICAgIGltYXBzY2FuY2xpZW50LmMJICAgICBwb3AzZGNhcGEuYwpDaGFuZ2VM
b2cJCSAgICBpbWFwc2NhbmNsaWVudC5oCSAgICAgcG9wM2RjYXBhLm8KY29uZmlnLmgJCSAgICBp
bWFwc2NhbmNsaWVudC5oLn4xLjYufiAgcG9wM2QuY25mCmNvbmZpZy5oLmluCQkgICAgaW1hcHNj
YW5jbGllbnQubwkgICAgIHBvcDNkLmNuZi5pbgpjb25maWcuaC5pbn4JCSAgICBpbWFwdG9rZW4u
YwkJICAgICBwb3AzZC5kaXN0CmNvbmZpZy5sb2cJCSAgICBpbWFwdG9rZW4uYy5+MS4xMy5+ICAg
ICAgcG9wM2QuZGlzdC5pbgpjb25maWcuc3RhdHVzCQkgICAgaW1hcHRva2VuLmgJCSAgICAgcG9w
M2QucGFtCmNvbmZpZ3VyZQkJICAgIGltYXB0b2tlbi5oLn4xLjYufgkgICAgIHBvcDNkc2VydmVy
LmMKY29uZmlndXJlLmluCQkgICAgaW1hcHRva2VuLm8JCSAgICAgcG9wM2RzZXJ2ZXIubwpjb25m
aWd1cmUuaW4ufjEuNzkufgkgICAgaW1hcHdyaXRlLmMJCSAgICAgcG9wM2Qtc3NsLmRpc3QKY29u
Zm1kdGVzdAkJICAgIGltYXB3cml0ZS5oCQkgICAgIHBvcDNkLXNzbC5kaXN0LmluCmNvbmZtZHRl
c3QyCQkgICAgaW1hcHdyaXRlLm8JCSAgICAgcG9wM2xvZ2luCmNvbmZtZHRlc3Quc3Rkb3V0CSAg
ICBsaWJpbWFwZC5hCQkgICAgIHBvcDNsb2dpbi5jCmNvdXJpZXJwb3AzZC44CQkgICAgbWFpbGJv
eGxpc3QuYwkgICAgIHBvcDNsb2dpbi5vCmNvdXJpZXJwb3AzZC44LmluCSAgICBtYWlsYm94bGlz
dC5oCSAgICAgUkVBRE1FCmNvdXJpZXJwb3AzZC5odG1sCSAgICBtYWlsYm94bGlzdC5vCSAgICAg
UkVBRE1FLmh0bWwKY291cmllcnBvcDNkLmh0bWwuaW4JICAgIG1haW5sb29wLmMJCSAgICAgc2Vh
cmNoLmMKY291cmllcnBvcDNkLnNnbWwJICAgIG1haW5sb29wLmMufjEuNi5+CSAgICAgc2VhcmNo
aW5mby5jCkNWUwkJCSAgICBtYWlubG9vcC5vCQkgICAgIHNlYXJjaGluZm8uaApGQVEJCQkgICAg
TWFrZWZpbGUJCSAgICAgc2VhcmNoaW5mby5vCkZBUS5odG1sCQkgICAgTWFrZWZpbGV+CQkgICAg
IHNlYXJjaC5vCmZldGNoLmMJCQkgICAgTWFrZWZpbGUuYW0JCSAgICAgc21hcC5jCmZldGNoLmMu
fjEuMjEufgkJICAgIE1ha2VmaWxlLmFtLn4xLjMxLn4gICAgICBzbWFwLmN+CmZldGNoaW5mby5j
CQkgICAgTWFrZWZpbGUuaW4JCSAgICAgc21hcC5vCmZldGNoaW5mby5oCQkgICAgbWtpbWFwZGNl
cnQJCSAgICAgc21hcHRlc3RzdWl0ZQpmZXRjaGluZm8ubwkJICAgIG1raW1hcGRjZXJ0LjgJICAg
ICBzbWFwdGVzdHN1aXRlfgpmZXRjaC5vCQkJICAgIG1raW1hcGRjZXJ0LjguaW4JICAgICBzbWFw
dGVzdHN1aXRlLnR4dApodG1sMm1hbi5wbC5pbgkJICAgIG1raW1hcGRjZXJ0Lmh0bWwJICAgICBz
dGFtcC1oMQppbWFwZAkJCSAgICBta2ltYXBkY2VydC5odG1sLmluICAgICAgc3RvcmVpbmZvLmMK
aW1hcGQuOAkJCSAgICBta2ltYXBkY2VydC5pbgkgICAgIHN0b3JlaW5mby5oCmltYXBkLjguaW4J
CSAgICBta2ltYXBkY2VydC5zZ21sCSAgICAgc3RvcmVpbmZvLm8KaW1hcGQuYXV0aHBhbQkJICAg
IG1rcG9wM2RjZXJ0CQkgICAgIHN5c3RlbS1hdXRoLmF1dGhwYW0KaW1hcGQuYwkJCSAgICBta3Bv
cDNkY2VydC44CSAgICAgdAppbWFwZC5jLn4xLjk1Ln4JCSAgICBta3BvcDNkY2VydC44LmluCSAg
ICAgdGVzdHN1aXRlCmltYXBkLmNuZgkJICAgIG1rcG9wM2RjZXJ0Lmh0bWwJICAgICB0ZXN0c3Vp
dGVmaXgucGwKaW1hcGQuY25mLmluCQkgICAgbWtwb3AzZGNlcnQuaHRtbC5pbiAgICAgIHRlc3Rz
dWl0ZWZpeC5wbC5pbgppbWFwZC5kaXN0CQkgICAgbWtwb3AzZGNlcnQuaW4JICAgICB0ZXN0c3Vp
dGUudHh0CmltYXBkLmRpc3QuaW4JCSAgICBta3BvcDNkY2VydC5zZ21sCSAgICAgdGhyZWFkLmMK
aW1hcGQuaAkJCSAgICBtc2dib2R5c3RydWN0dXJlLmMJICAgICB0aHJlYWQuaAppbWFwZC5odG1s
CQkgICAgbXNnYm9keXN0cnVjdHVyZS5vCSAgICAgdGhyZWFkLm8KaW1hcGQuaHRtbC5pbgkJICAg
IG1zZ2VudmVsb3BlLmMK

--zzz--
EOF

env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
open INBOX
FETCH 1 CONTENTS=BODY[1.1]
FETCH 1 CONTENTS=BODY.DECODED[1.1]
FETCH 1 CONTENTS=BODY[1.2]
FETCH 1 CONTENTS=BODY.DECODED[1.2]
FETCH 1 CONTENTS=BODY[1.3]
FETCH 1 CONTENTS=BODY.DECODED[1.3]
ADD FOLDER INBOX "" FLAGS=SEEN "INTERNALDATE=03 Aug 2003 03:00:00 -0500"
ADD {.100}
Subject: test add
Mime-Version: 1.0

This is a test of the
.add command.
.
NOOP
COPY 1-2 "" INBOX
NOOP
COPY 1-4 "" INBOX
NOOP
COPY 1-4 "" INBOX
COPY 1-2 "" INBOX
NOOP
ADD FOLDER INBOX "" FLAGS=SEEN "INTERNALDATE=03 Aug 2003 03:00:00 -0500"
ADD {.100}
Subject: test add
Mime-Version: 1.0

This is a test of the
.add command.
.
open INBOX
fetch 10 CONTENTS=HEADERS(Mime-Version)
LOGOUT
EOF

rm -f confmdtest/maildirsize
env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
open INBOX
COPY 1-10 "" INBOX
NOOP
COPY 1-20 "" INBOX
NOOP
COPY 1-40 "" INBOX
NOOP
COPY 1-80 "" INBOX
NOOP
COPY 1-160 "" INBOX
NOOP
COPY 1-320 "" INBOX
NOOP
LOGOUT
EOF

(
echo "open INBOX"
n=0
while test $n -lt 64
do
	m=$n
	if test "$m" = ""
	then
		m=""
	fi

	echo "STORE ${m}3-${m}5 ${m}7 ${m}9 +FLAGS=DELETED"
	n=`expr $n + 1`
done
echo "LOGOUT"
) | env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE | sed "$SED"

env IMAP_BROKENUIDV=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
open INBOX
SEARCH UNMARKED NOT DELETED
SEARCH MARKED NOT DELETED
SEARCH UNMARKED DELETED
STORE 1-10 +FLAGS=DRAFT
STORE 15-25 30 +FLAGS=SEEN
SEARCH UNMARKED DRAFT
SEARCH UNMARKED SEEN
EXPUNGE 1-640
ADD FOLDER INBOX "" FLAGS=SEEN "INTERNALDATE=03 Aug 2003 03:00:00 -0500"
ADD {.100}
Subject: iso-8859-1 encoding test: =?iso-8859-1?Q?S=E2m?=
Date: 03 Aug 2003 03:00:00 -0500
Mime-Version: 1.0

This is a test of the
.add command.
.
NOOP
ADD FOLDER INBOX "" FLAGS=SEEN "INTERNALDATE=08 Aug 2003 03:00:00 -0500"
ADD {.100}
Subject: iso-8859-1 encoding test: =?iso-8859-1?Q?S=E2m?=
Date: 05 Aug 2003 05:00:00 -0500
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Mime-Version: 1.0

S=E2m This is a ttest of the
.add command.
.
NOOP
SEARCH UNMARKED SUBJECT "sâm"
SEARCH UNMARKED HEADER DATE "05 AUG"
SEARCH UNMARKED TEXT "ttest"
SEARCH UNMARKED BODY "sâm"
SEARCH UNMARKED TEXT "sâm"
SEARCH UNMARKED ON "08-Aug-2003"
SEARCH UNMARKED ON "03-Aug-2003"
SEARCH UNMARKED SENTON "05-Aug-2003"
SEARCH UNMARKED SMALLER "200"
SEARCH UNMARKED NOT SMALLER "200"
SEARCH UNMARKED INVALID
LOGOUT
EOF

rm -rf confmdtest confmdtest2
../maildir/maildirmake confmdtest
../maildir/maildirmake confmdtest2
../maildir/maildirmake -f folder1 confmdtest2
../maildir/maildirmake --add test=`pwd`/confmdtest2 confmdtest
../maildir/maildirmake -q20C confmdtest
../maildir/deliverquota confmdtest <<EOF
Subject: testing body.decoded
Mime-Version: 1.0
Content-Type: text/plain

Test
EOF

env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
open INBOX
COPY 1 "" INBOX
NOOP
open INBOX
CREATE INBOX Trash
copy 1 "" INBOX Trash
CREATE INBOX a
MOVE 2 "" INBOX a
LOGOUT
EOF
cat confmdtest/maildirsize
env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
open INBOX a
LOGOUT
EOF
cat confmdtest/maildirsize

env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
sopen "" INBOX a
NOOP
NOOP
STORE 1 FLAGS=REPLIED
NOOP
NOOP
STORE 1 FLAGS=REPLIED
NOOP
NOOP
STORE 1 FLAGS=DELETED
EXPUNGE
EXPUNGE
NOOP
NOOP
EXPUNGE 1
NOOP
LOGOUT
EOF
echo `ls confmdtest/.a/courierimapsnapshots | wc -l`

env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
delete INBOX a
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
sopen "" INBOX
NOOP
CLOSE
LOGOUT
EOF
echo `ls confmdtest/courierimapsnapshots | wc -l`
touch -t 199901010000 `ls confmdtest/courierimapsnapshots/* | sed -n 1p`

env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
sopen "" INBOX
CLOSE
LOGOUT
EOF
echo `ls confmdtest/courierimapsnapshots | wc -l`

rm -rf confmdtest
../maildir/maildirmake confmdtest

  ../maildir/deliverquota confmdtest <<EOF
Received: by localhost
Subject: test message
From: nobody@localhost
Cc: nobody@localhost
Mime-Version: 1.0
Content-Type: multipart/mixed;
    boundary=abc


--abc
Content-Type: text/plain; charset=iso-8859-1
X-Comment: foo

Mary had a little lamb, its fleece was white as snow.
--abc--

test message
EOF

env IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
open INBOX
FETCH 1 CONTENTS=HEADERS
FETCH 1 CONTENTS=RAWHEADERS
FETCH 1 CONTENTS=MIME
FETCH 1 CONTENTS=MIME(Content-Type)
FETCH 1 CONTENTS=HEADERS(Content-Type)
FETCH 1 CONTENTS=HEADERS(:ENVELOPE)
FETCH 1 CONTENTS=HEADERS(:ENVELOPE,Received)
FETCH 1 CONTENTS=HEADERS(Received,:ENVELOPE)
FETCH 1 CONTENTS=HEADERS(:MIME)
FETCH 1 CONTENTS=MIME(:MIME)
LOGOUT
EOF

env IMAP_KEYWORDS=1 IMAP_BROKENUIDV=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF >testsuite.tmp
open INBOX
CREATE INBOX a
COPY 1 "" INBOX a
OPEN INBOX a
STORE 1 +FLAGS=DELETED +KEYWORDS=-Label1
ADD FOLDER INBOX a
ADD FLAGS=SEEN
ADD KEYWORDS=-Label2
ADD {.}
Subject: test

test

test
.
EXPUNGE
FETCH 1 FLAGS KEYWORDS
COPY 1 "" INBOX
OPEN INBOX
FETCH 1-2 FLAGS KEYWORDS
MOVE 2 "" INBOX a
SOPEN "" INBOX a
FETCH 1-2 FLAGS KEYWORDS
NOOP
EXPUNGE 1
STORE 1 KEYWORDS=-Label3
LOGOUT
EOF

SNAPSHOT=`grep -F '* SNAPSHOT ' testsuite.tmp | cut -c12-`
sed "$SED" <testsuite.tmp
rm -f testsuite.tmp

env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
SOPEN $SNAPSHOT INBOX a
COPY 1 "" INBOX a
NOOP
COPY 1-2 "" INBOX a
NOOP
FETCH 1-4 FLAGS KEYWORDS
STORE 3-4 -KEYWORDS=-Label2
STORE 3-4 -KEYWORDS=-Label3
SEARCH UNMARKED SEEN
SEARCH UNMARKED KEYWORD -Label2
SEARCH UNMARKED KEYWORD -Label3
SEARCH UNMARKED NOT KEYWORD -Label3
LOGOUT
EOF

env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
STORE 1 KEYWORDS=Junk*Junk
LOGOUT
EOF

env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest $IMAPINVOKE <<EOF | sed 's/UIDVALIDITY [0-9]*/UIDVALIDITY/'
a1 SELECT INBOX
a2 FETCH 1 FLAGS
a3 STORE 1 FLAGS (\Seen Abra,Cadabra)
a3 LOGOUT
EOF

env IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
FETCH 1 FLAGS KEYWORDS
COPY 1 "" INBOX
NOOP
STORE 2 +FLAGS=MARKED
SEARCH UNMARKED SEEN
SEARCH MARKED SEEN
SEARCH ALL SEEN
LOGOUT
EOF

rm -rf confmdtest*
../maildir/maildirmake confmdtest || exit 1
../maildir/maildirmake confmdtest2 || exit 1
../maildir/maildirmake confmdtest3 || exit 1
mkdir confmdtest4 || exit 1
cat >confmdtest4/index <<EOF || exit 1
confmdtest	1	1	`pwd`	confmdtest
a	*	indexa
b	*	indexb
EOF
echo "confmdtest2	1	1	`pwd`	confmdtest2" >confmdtest4/indexa || exit 1
echo "aashared	1	1	`pwd`	confmdtest5" >>confmdtest4/indexa || exit 1
echo "confmdtest3	1	1	`pwd`	confmdtest3" >confmdtest4/indexb || exit 1

../maildir/maildirmake -f x confmdtest2
../maildir/maildiracl -set confmdtest2 INBOX.x user=confmdtest aceilrstwx
../maildir/maildiracl -set confmdtest3 INBOX user=confmdtest aceilrstwx

IMAP_SHAREDINDEXFILE=`pwd`/confmdtest4/index
export IMAP_SHAREDINDEXFILE
env AUTHENTICATED=confmdtest IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
LIST public
LIST public a
LIST public b
LIST public a confmdtest2
GETACL INBOX
SETACL INBOX "" owner -stwx
SETACL INBOX "" owner aceilrstw
SETACL INBOX "" owner +x
SETACL INBOX "" owner -l
SETACL INBOX "" -owner a
SETACL INBOX "" user=testuser1 ace
SETACL INBOX "" user=testuser1 +x
SETACL INBOX "" user=testuser1 -x
SETACL INBOX "" user=testuser1 -ace
SETACL INBOX "" user=testuser1 ace
DELETEACL INBOX "" user=testuser2
DELETEACL INBOX "" user=testuser1
DELETEACL INBOX "" owner
ACL INBOX
GETACL public b confmdtest3
ACL public b confmdtest3
GETACL public a confmdtest2 x
ACL public a confmdtest2 x
ACL public
ACL public a
OPEN INBOX
ADD FOLDER INBOX "" FLAGS=SEEN,DELETED,MARKED KEYWORDS=keyword1
ADD {.}
Subject: test message 1

test message 1
.
NOOP
FETCH 1 FLAGS KEYWORDS
SETACL INBOX "" owner -w
ADD FOLDER INBOX "" FLAGS=SEEN,DELETED,MARKED KEYWORDS=keyword1
ADD {.}
Subject: test message 1

test message 1
.
NOOP
FETCH 2 FLAGS KEYWORDS
SETACL INBOX "" owner +w owner -s
ADD FOLDER INBOX "" FLAGS=SEEN,DELETED,MARKED KEYWORDS=keyword1
ADD {.}
Subject: test message 1

test message 1
.
NOOP
FETCH 3 FLAGS KEYWORDS
SETACL INBOX "" owner +s owner -t
ADD FOLDER INBOX "" FLAGS=SEEN,DELETED,MARKED KEYWORDS=keyword1
ADD {.}
Subject: test message 1

test message 1
.
NOOP
FETCH 4 FLAGS KEYWORDS
SETACL INBOX "" owner +t owner -i
ADD FOLDER INBOX ""
SETACL INBOX "" owner +i
SETACL public b confmdtest3 "" user=confmdtest -l
STATUS CHEAP public b confmdtest3
SETACL public b confmdtest3 "" user=confmdtest +l
STATUS CHEAP public b confmdtest3
DELETE public b confmdtest3
CREATE INBOX c
SETACL INBOX c "" owner -x
DELETE INBOX c
SETACL INBOX c "" owner +x
DELETE INBOX c
SETACL INBOX "" -owner r
OPEN INBOX
DELETEACL INBOX "" -owner
OPEN INBOX
SETACL INBOX "" -owner i
COPY 1-4 "" INBOX
DELETEACL INBOX "" -owner
COPY 1 "" INBOX
NOOP
COPY 2 "" INBOX
NOOP
COPY 3 "" INBOX
NOOP
COPY 4 "" INBOX
NOOP
CLOSE
CREATE INBOX a
MKDIR INBOX b
SETACL INBOX b "" owner -c
RENAME INBOX a "" INBOX b a
SETACL INBOX b "" owner +c
RENAME INBOX a "" INBOX b a
SETACL INBOX b "" owner -x
RENAME INBOX b "" INBOX a
SETACL INBOX b "" owner +x
RENAME INBOX b "" INBOX a
OPEN INBOX
FETCH 1 FLAGS KEYWORDS
SETACL INBOX "" owner -w
STORE 1 FLAGS=SEEN KEYWORDS=
SETACL INBOX "" owner +w owner -t
STORE 1 FLAGS=MARKED,SEEN,DELETED KEYWORDS=keyword2
SETACL INBOX "" owner +t owner -s
STORE 1 -FLAGS=SEEN,MARKED
SETACL INBOX "" owner +s owner -e
STORE 1 FLAGS=DELETED
EXPUNGE
SETACL INBOX "" owner +e
EXPUNGE
SETACL INBOX "" owner -t
EXPUNGE 1
SETACL INBOX "" owner +t
EXPUNGE 1
LOGOUT
EOF

rm -rf confmdtest*
../maildir/maildirmake confmdtest || exit 1

n=0
while test $n -lt 256
do
	filename=`expr $n + 1000`
	filename="$filename,test:2,S"
	if test `expr $n % 2` = 1
	then
		filename="$filename""T"
	fi
	cat >confmdtest/cur/$filename <<EOF
Subject: test message

test message
EOF
	n=`expr $n + 1`
done
env AUTHENTICATED=user1 IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
EXPUNGE
SETACL INBOX "" -owner c
MKDIR INBOX subdir
CREATE INBOX subdir
SETACL INBOX "" -owner ""
MKDIR INBOX subdir
CREATE INBOX subdir
SETACL INBOX "" -owner x
RMDIR INBOX subdir
SETACL INBOX "" -owner ""
RMDIR INBOX subdir
SETACL INBOX subdir "" -owner x
DELETE INBOX subdir
SETACL INBOX subdir "" -owner ""
DELETE INBOX subdir
CREATE INBOX Trash
MOVE 1 "" INBOX Trash
OPEN INBOX Trash
STORE 1 "INTERNALDATE=10 Jan 2022 09:00:00 -0500"
STORE 1 +KEYWORDS=-Label1
STORE 1 +KEYWORDS=-Label2
LOGOUT
EOF

f="`echo confmdtest/.Trash/cur/*`"

$PERL -e "use POSIX qw(strftime); print strftime(\"%m/%Y\\n\", localtime [stat('$f')]->[9])"

rm -rf confmdtest
../maildir/maildirmake confmdtest || exit 1

echo '#! /bin/sh' >confsendmail
echo 'echo $* >'`pwd`'/confsendmail.out' >>confsendmail
echo "cat >>`pwd`/confsendmail.out" >>confsendmail
chmod +x confsendmail

env AUTHENTICATED=user1 IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 SENDMAIL=`pwd`/confsendmail $IMAPINVOKE <<EOF | sed "$SED"
OPEN INBOX
ADD FOLDER INBOX "" "MAILFROM=user@example.com" "RCPTTO=recipient@example.com" "RCPTTO=recipient2@example.com" "NOTIFY=success,delay,fail" FLAGS=REPLIED KEYWORDS=keyword1 {.}
Subject: test message 1

test message 1
.
OPEN INBOX
FETCH 1 CONTENTS=BODY FLAGS KEYWORDS
EOF
cat confsendmail.out
rm -rf confsendmail confsendmail.out confmdtest

../maildir/maildirmake confmdtest || exit 1
$PERL -e 'printf("%04d\n", $_+1234) for (1..4096);' >testfile
../rfc2045/makemime -c 'application/octet-stream' \
		    -e base64 -o confmdtest/new/test \
		    -a 'Mime-Version: 1.0' testfile
env AUTHENTICATED=user1 IMAP_BROKENUIDV=1 IMAP_KEYWORDS=1 MOVE_EXPUNGE_TO_TRASH=1 MAILDIR=confmdtest PROTOCOL=SMAP1 SENDMAIL=`pwd`/confsendmail $IMAPINVOKE <<EOF | sed "$SED" >testfile.out
OPEN INBOX
FETCH 1 CONTENTS=BODY.DECODED[1]
LOGOUT
EOF

$PERL -e '
use strict;
use warnings;
my $chunk=0;

while (<STDIN>)
{
    chomp;
    if (/^\{(\d+)\//)
    {
        $chunk=$1;
        last;
    }
}

while ($chunk)
{
	my $buffer;
	my $bytes_read = read(STDIN, $buffer, $chunk);
	print $buffer;
	last unless defined ($_=<STDIN>);
	last unless /(\d+)/;
	$chunk = $1;
}' <testfile.out >testfile.decoded
set -vx
diff -U 3 testfile testfile.decoded || exit 1
rm -rf confmdtest filefile testfile testfile.decoded testfile.msg testfile.out
