summaryrefslogtreecommitdiff
path: root/mh
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2017-06-09 13:24:03 +0300
committerSergey Poznyakoff <gray@gnu.org.ua>2017-06-09 13:24:03 +0300
commit1ba98c365c5e5ce5cbc02a82054749a90a34c689 (patch)
treec597899df9e286ef9dc1cfcc891f01035c228de7 /mh
parente4c393f9b98164f5a9c1f5076181227c52565bfc (diff)
parent263e2e9f9fcf721c11a61a16dca4cb38d6385fe9 (diff)
downloadmailutils-1ba98c365c5e5ce5cbc02a82054749a90a34c689.tar.gz
mailutils-1ba98c365c5e5ce5cbc02a82054749a90a34c689.tar.bz2
Merge recent fixes from master
Diffstat (limited to 'mh')
-rw-r--r--mh/mh.h3
-rw-r--r--mh/mh_whatnow.c14
-rw-r--r--mh/tests/atlocal.in6
-rw-r--r--mh/tests/comp.at34
-rw-r--r--mh/tests/forw.at38
-rw-r--r--mh/tests/mhn.at38
-rw-r--r--mh/tests/mhpath.at30
-rw-r--r--mh/tests/repl.at12
8 files changed, 91 insertions, 84 deletions
diff --git a/mh/mh.h b/mh/mh.h
index 9190ae919..c15f8569f 100644
--- a/mh/mh.h
+++ b/mh/mh.h
@@ -210,13 +210,14 @@ struct mh_whatnow_env /* whatnow shell environment */
char *file; /* The file being processed */
char *msg; /* File name of the original message (if any) */
char *draftfile; /* File to preserve the draft into */
- const char *editor;
+ const char *editor; /* Default editor */
char *prompt;
char *anno_field; /* Annotate field to be used */
mu_list_t anno_list; /* List of messages (mu_message_t) to annotate */
mu_mailbox_t mbox;
int nowhatnowproc;
int reedit:1; /* Set if the editor was already invoked */
+ char *last_ed; /* Last used editor */
};
#define DISP_QUIT 0
diff --git a/mh/mh_whatnow.c b/mh/mh_whatnow.c
index 71b6b221c..5dc15b553 100644
--- a/mh/mh_whatnow.c
+++ b/mh/mh_whatnow.c
@@ -323,6 +323,9 @@ _whatnow (struct mh_whatnow_env *wh, struct action_tab *tab)
size_t size = 0;
struct mu_wordsplit ws;
int wsflags = MU_WRDSF_DEFFLAGS|MU_WRDSF_COMMENT;
+
+ wh->reedit = 0;
+ wh->last_ed = NULL;
do
{
@@ -360,6 +363,8 @@ _whatnow (struct mh_whatnow_env *wh, struct action_tab *tab)
while (rc == 0);
if (wsflags & MU_WRDSF_REUSE)
mu_wordsplit_free (&ws);
+ free (wh->last_ed);
+ wh->last_ed = NULL;
free (line);
return status;
}
@@ -382,8 +387,9 @@ display (struct mh_whatnow_env *wh, int argc, char **argv, int *status)
static int
edit (struct mh_whatnow_env *wh, int argc, char **argv, int *whs)
{
- char const *ed = wh->editor;
+ char const *ed = wh->last_ed ? wh->last_ed : wh->editor;
int i, rc, status;
+ char *p;
if (wh->reedit)
{
@@ -455,8 +461,10 @@ edit (struct mh_whatnow_env *wh, int argc, char **argv, int *whs)
else
mu_error (_("problems with edit"));
}
-
- wh->editor = ed;
+
+ p = mu_strdup (ed);
+ free (wh->last_ed);
+ wh->last_ed = p;
wh->reedit = 1;
return 0;
diff --git a/mh/tests/atlocal.in b/mh/tests/atlocal.in
index 508e03f28..6a7f40528 100644
--- a/mh/tests/atlocal.in
+++ b/mh/tests/atlocal.in
@@ -3,10 +3,8 @@
# Copyright (C) 2004, 2010-2012, 2014-2017 Free Software Foundation,
# Inc.
-PATH=@abs_builddir@:@abs_top_builddir@/mh:$top_srcdir:$srcdir:$PATH
-remove_curdir() {
- sed "s|$HOME/*||;s| *$||" $*
-}
+PATH=@abs_builddir@:@abs_top_builddir@/testsuite:@abs_top_builddir@/mh:$top_srcdir:$srcdir:$PATH
+
# mimeflt [FILE]
# Filter out all variable information from a MIME message in FILE.
# If FILE is not given, filter stdin.
diff --git a/mh/tests/comp.at b/mh/tests/comp.at
index a8d4a4129..563310cca 100644
--- a/mh/tests/comp.at
+++ b/mh/tests/comp.at
@@ -19,7 +19,7 @@ m4_pushdef([MH_KEYWORDS],[comp])
m4_pushdef([compcmd],[comp -editor $abs_top_srcdir/mh/tests/mhed])
MH_CHECK([comp -file],[comp00 comp-file],[
-echo quit | compcmd -file ./infile | remove_curdir | sed 's/ *$//'
+echo quit | compcmd -file $HOME/infile | cwdrepl | sed 's/ *$//'
sed 's/ *$//' infile
],
[0],
@@ -39,7 +39,7 @@ Seen by mhed
])
MH_CHECK([comp -file (del)],[comp01 comp-file_del],[
-echo 'quit -delete' | compcmd -file ./infile | remove_curdir
+echo 'quit -delete' | compcmd -file $HOME/infile | cwdrepl | sed 's/ *$//'
],
[0],
[-- Editor invocation: ./infile
@@ -53,18 +53,18 @@ What now?
])
MH_CHECK([comp file],[comp02 comp_file],[
-echo 'quit' | compcmd file | remove_curdir | sed 's/ *$//'
+echo 'quit' | compcmd file | cwdrepl | sed 's/ *$//'
sed 's/ *$//' Mail/file
],
[0],
-[-- Editor invocation: Mail/file
+[-- Editor invocation: ./Mail/file
-- Input file:
To:
cc:
Subject:
--------
-- Input file end
-What now? draft left on "Mail/file".
+What now? draft left on "./Mail/file".
To:
cc:
Subject:
@@ -80,11 +80,11 @@ Subject: test input
message body
])
-echo 'quit' | compcmd -use file | remove_curdir | sed 's/ *$//'
+echo 'quit' | compcmd -use file | cwdrepl | sed 's/ *$//'
sed 's/ *$//' Mail/file
],
[0],
-[-- Editor invocation: Mail/file
+[-- Editor invocation: ./Mail/file
-- Input file:
From: gray
To: root
@@ -92,7 +92,7 @@ Subject: test input
message body
-- Input file end
-What now? draft left on "Mail/file".
+What now? draft left on "./Mail/file".
From: gray
To: root
Subject: test input
@@ -110,14 +110,14 @@ Subject: test input
message body
])
-echo 'quit' | compcmd +inbox 1 | remove_curdir | sed 's/ *$//'
+echo 'quit' | compcmd +inbox 1 | cwdrepl | sed 's/ *$//'
echo Mail/draft
sed 's/ *$//' Mail/draft
echo Message
sed 's/ *$//' Mail/inbox/1
],
[0],
-[-- Editor invocation: Mail/draft
+[-- Editor invocation: ./Mail/draft
-- Input file:
From: gray
To: root
@@ -125,7 +125,7 @@ Subject: test input
message body
-- Input file end
-What now? draft left on "Mail/draft".
+What now? draft left on "./Mail/draft".
Mail/draft
From: gray
To: root
@@ -143,18 +143,18 @@ message body
MH_CHECK([comp -draftfolder],[comp05 comp-draftfolder draftfolder],[
mkdir Mail/drafts
-echo 'quit' | compcmd -draftfolder drafts | remove_curdir | sed 's/ *$//'
+echo 'quit' | compcmd -draftfolder drafts | cwdrepl | sed 's/ *$//'
sed 's/ *$//' Mail/drafts/1
],
[0],
-[-- Editor invocation: Mail/drafts/1
+[-- Editor invocation: ./Mail/drafts/1
-- Input file:
To:
cc:
Subject:
--------
-- Input file end
-What now? draft left on "Mail/drafts/1".
+What now? draft left on "./Mail/drafts/1".
To:
cc:
Subject:
@@ -172,11 +172,11 @@ message body
])
echo "cur: 1" > Mail/drafts/.mh_sequences
-echo 'quit' | compcmd -draftfolder drafts -use| remove_curdir | sed 's/ *$//'
+echo 'quit' | compcmd -draftfolder drafts -use| cwdrepl | sed 's/ *$//'
sed 's/ *$//' Mail/drafts/1
],
[0],
-[-- Editor invocation: Mail/drafts/1
+[-- Editor invocation: ./Mail/drafts/1
-- Input file:
From: gray
To: root
@@ -184,7 +184,7 @@ Subject: test input
message body
-- Input file end
-What now? draft left on "Mail/drafts/1".
+What now? draft left on "./Mail/drafts/1".
From: gray
To: root
Subject: test input
diff --git a/mh/tests/forw.at b/mh/tests/forw.at
index 4392fa2b9..e0566dfe7 100644
--- a/mh/tests/forw.at
+++ b/mh/tests/forw.at
@@ -27,7 +27,7 @@ Subject: test input
message body
])
-echo quit | forwcmd +inbox 1 | remove_curdir
+echo quit | forwcmd +inbox 1 | cwdrepl
echo == Mail/draft ==
cat Mail/draft
echo == Message ==
@@ -36,7 +36,7 @@ echo == Message ==
sed '/^X-IMAPbase/d' Mail/inbox/1
],
[0],
-[-- Editor invocation: Mail/draft
+[-- Editor invocation: ./Mail/draft
-- Input file:
To:
cc:
@@ -53,7 +53,7 @@ message body
------- End of Forwarded message
-- Input file end
-What now? draft left on "Mail/draft".
+What now? draft left on "./Mail/draft".
== Mail/draft ==
To:
cc:
@@ -87,7 +87,7 @@ Subject: test input
message body
])
-echo quit | forwcmd -format +inbox 1 | remove_curdir
+echo quit | forwcmd -format +inbox 1 | cwdrepl
echo == Mail/draft ==
cat Mail/draft
echo == Message ==
@@ -96,7 +96,7 @@ echo == Message ==
sed '/^X-IMAPbase/d' Mail/inbox/1
],
[0],
-[-- Editor invocation: Mail/draft
+[-- Editor invocation: ./Mail/draft
-- Input file:
To:
cc:
@@ -113,7 +113,7 @@ message body
------- End of Forwarded message
-- Input file end
-What now? draft left on "Mail/draft".
+What now? draft left on "./Mail/draft".
== Mail/draft ==
To:
cc:
@@ -153,7 +153,7 @@ Subject: 2nd message
2nd message body
])
-echo quit | forwcmd +inbox 1 2 | remove_curdir
+echo quit | forwcmd +inbox 1 2 | cwdrepl
echo == Mail/draft ==
cat Mail/draft
echo == Message 1 ==
@@ -162,7 +162,7 @@ echo == Message 2 ==
cat Mail/inbox/2
],
[0],
-[-- Editor invocation: Mail/draft
+[-- Editor invocation: ./Mail/draft
-- Input file:
To:
cc:
@@ -188,7 +188,7 @@ Subject: 2nd message
------- End of Forwarded messages
-- Input file end
-What now? draft left on "Mail/draft".
+What now? draft left on "./Mail/draft".
== Mail/draft ==
To:
cc:
@@ -237,7 +237,7 @@ Subject: test input
message body
])
-forwcmd -build +inbox 1 | remove_curdir
+forwcmd -build +inbox 1 | cwdrepl
echo == Mail/draft ==
cat Mail/draft
echo == Message ==
@@ -282,9 +282,9 @@ Subject: 2nd message
2nd message body
])
-forwcmd -build -mime +inbox 1 2 | remove_curdir
+forwcmd -build -mime +inbox 1 2 | cwdrepl
echo == Mail/draft ==
-remove_curdir Mail/draft
+cwdrepl < Mail/draft
echo == Message 1 ==
sed '/^X-IMAPbase/d' Mail/inbox/1
echo == Message 2 ==
@@ -296,7 +296,7 @@ To:
cc:
Subject:
--------
-#forw [] +Mail/inbox 1 2
+#forw [] +./Mail/inbox 1 2
== Message 1 ==
From: gray
@@ -322,14 +322,14 @@ Subject: test input
message body
])
-echo "quit" | forwcmd -draftfolder drafts 1 | remove_curdir
+echo "quit" | forwcmd -draftfolder drafts 1 | cwdrepl
echo == Mail/drafts/1 ==
cat Mail/drafts/1
echo == Message ==
sed '/^X-IMAPbase/d' Mail/inbox/1
],
[0],
-[-- Editor invocation: Mail/drafts/1
+[-- Editor invocation: ./Mail/drafts/1
-- Input file:
To:
cc:
@@ -346,7 +346,7 @@ message body
------- End of Forwarded message
-- Input file end
-What now? draft left on "Mail/drafts/1".
+What now? draft left on "./Mail/drafts/1".
== Mail/drafts/1 ==
To:
cc:
@@ -379,10 +379,10 @@ Subject: test input
message body
])
-echo "quit" | forwcmd -file infile | remove_curdir
+echo "quit" | forwcmd -file infile | cwdrepl
],
[0],
-[-- Editor invocation: Mail/draft
+[-- Editor invocation: ./Mail/draft
-- Input file:
To:
cc:
@@ -394,7 +394,7 @@ Subject: test input
message body
-- Input file end
-What now? draft left on "Mail/draft".
+What now? draft left on "./Mail/draft".
])
m4_popdef([forwcmd])
diff --git a/mh/tests/mhn.at b/mh/tests/mhn.at
index 51d579abf..30755ecb7 100644
--- a/mh/tests/mhn.at
+++ b/mh/tests/mhn.at
@@ -130,21 +130,21 @@ Be off, or I'll kick you down stairs!'
MH_CHECK([mhn -store -auto],[mhn03 mhn-store-auto],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
-mhn +inbox -store -auto 4 | remove_curdir || exit $?
+mhn +inbox -store -auto 4 | cwdrepl || exit $?
],
[0],
-[storing message 4 part 1 as file msg.21
-storing message 4 part 2.1 as file msg.22
-storing message 4 part 2.2.1 as file msg.23
-storing message 4 part 2.2.2 as file msg.24
+[storing message 4 part 1 as file ./msg.21
+storing message 4 part 2.1 as file ./msg.22
+storing message 4 part 2.2.1 as file ./msg.23
+storing message 4 part 2.2.2 as file ./msg.24
])
MH_CHECK([mhn -store -auto -part],[mhn04 mhn-store-auto-part],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox],[700])
-mhn +inbox -store -auto -part 2.2.1 4 | remove_curdir || exit $?
+mhn +inbox -store -auto -part 2.2.1 4 | cwdrepl || exit $?
],
[0],
-[storing message 4 part 2.2.1 as file msg.23
+[storing message 4 part 2.2.1 as file ./msg.23
])
MH_CHECK([mhn -store -auto (pathname safety)],[mhn05 mhn-store-auto-safety],[
@@ -178,13 +178,13 @@ MUT_MBCHMOD(Mail/inbox, 700)
mkdir out
echo "mhn-storage: $HOME/out" >> $MH
-mhn +inbox -store 4 | remove_curdir || echo $?
+mhn +inbox -store 4 | cwdrepl || echo $?
],
[0],
-[storing message 4 part 1 as file out/4.1.plain
-storing message 4 part 2.1 as file out/4.2.1.octet-stream
-storing message 4 part 2.2.1 as file out/4.2.2.1.octet-stream
-storing message 4 part 2.2.2 as file out/4.2.2.2.octet-stream
+[storing message 4 part 1 as file ./out/4.1.plain
+storing message 4 part 2.1 as file ./out/4.2.1.octet-stream
+storing message 4 part 2.2.1 as file ./out/4.2.2.1.octet-stream
+storing message 4 part 2.2.2 as file ./out/4.2.2.2.octet-stream
])
MH_CHECK([mhn-store-: all escapes],[mhn07 mhn-store_escapes],[
@@ -193,7 +193,7 @@ cp $abs_top_srcdir/testsuite/mh/mbox1/4 Mail/inbox
MUT_MBCHMOD(Mail/inbox, 700)
echo "mhn-store-application: %%-%m%P.%s-%p" >> $MH
-mhn +inbox -store 4 | remove_curdir || exit $?
+mhn +inbox -store 4 || exit $?
find . -name '%*' | sort
],
[0],
@@ -213,13 +213,13 @@ cp $abs_top_srcdir/testsuite/mh/mbox1/4 Mail/inbox
MUT_MBCHMOD(Mail/inbox, 700)
echo "mhn-store-application: $HOME/out/%m%P.%s" >> $MH
-mhn +inbox -store 4 | remove_curdir || exit $?
+mhn +inbox -store 4 | cwdrepl || exit $?
],
[0],
[storing message 4 part 1 as file 4.1.plain
-storing message 4 part 2.1 as file out/4.2.1.octet-stream
-storing message 4 part 2.2.1 as file out/4.2.2.1.octet-stream
-storing message 4 part 2.2.2 as file out/4.2.2.2.octet-stream
+storing message 4 part 2.1 as file ./out/4.2.1.octet-stream
+storing message 4 part 2.2.1 as file ./out/4.2.2.1.octet-stream
+storing message 4 part 2.2.2 as file ./out/4.2.2.2.octet-stream
])
MH_CHECK([mhn-store-: +folder],[mhn09 mhn-store+folder],[
@@ -229,7 +229,7 @@ cp $abs_top_srcdir/testsuite/mh/mbox1/4 Mail/inbox
MUT_MBCHMOD(Mail, 700)
echo "mhn-store-application: +app" >> $MH
-mhn +inbox -store 4 | remove_curdir || exit $?
+mhn +inbox -store 4 | cwdrepl || exit $?
],
[0],
[storing message 4 part 1 as file 4.1.plain
@@ -247,7 +247,7 @@ echo "Current-Folder: inbox" > Mail/context
cat >> $MH <<EOT
mhn-store-application/octet-stream: +
EOT
-mhn +inbox -store -part 2.2.1 4 | remove_curdir || exit $?
+mhn +inbox -store -part 2.2.1 4 | cwdrepl || exit $?
],
[0],
[storing message 4 part 2.2.1 to folder inbox as message 5
diff --git a/mh/tests/mhpath.at b/mh/tests/mhpath.at
index a04868710..d07a7c765 100644
--- a/mh/tests/mhpath.at
+++ b/mh/tests/mhpath.at
@@ -20,43 +20,43 @@ m4_pushdef([MH_KEYWORDS],[mhpath])
MH_CHECK([mhpath],[mhpath00],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
echo 'Current-Folder: inbox' > Mail/context
-mhpath | remove_curdir
+mhpath | cwdrepl
],
[0],
-[Mail/inbox
+[./Mail/inbox
])
MH_CHECK([mhpath +],[mhpath01 mhpath+],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
echo 'Current-Folder: inbox' > Mail/context
-mhpath +| remove_curdir
+mhpath +| cwdrepl
],
[0],
-[Mail
+[./Mail
])
MH_CHECK([mhpath msgs],[mhpath02 mhparam_msgs],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
-mhpath 1-3 | remove_curdir
+mhpath 1-3 | cwdrepl
],
[0],
-[Mail/inbox/1
-Mail/inbox/2
-Mail/inbox/3
+[./Mail/inbox/1
+./Mail/inbox/2
+./Mail/inbox/3
])
MH_CHECK([mhpath msgs (some nonexistent)],[mhpath03 mhparam_msgs_some_nonex],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
-mhpath 4-10 | remove_curdir
+mhpath 4-10 | cwdrepl
],
[0],
-[Mail/inbox/4
-Mail/inbox/5
+[./Mail/inbox/4
+./Mail/inbox/5
])
MH_CHECK([mhpath msgs (all nonexistent)],[mhpath04 mhparam_msgs_all_nonex],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
-mhpath 8-10 | remove_curdir
+mhpath 8-10 | cwdrepl
],
[0],
[],
@@ -87,7 +87,7 @@ mhpath 8-10 | remove_curdir
MH_CHECK([mhpath nonexistent],[mhpath05 mhparam_nonexistent],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
-mhpath 10 | remove_curdir
+mhpath 10 | cwdrepl
],
[0],
[],
@@ -96,10 +96,10 @@ mhpath 10 | remove_curdir
MH_CHECK([mhpath new],[mhpath06 mhparam_new],[
MUT_MBCOPY($abs_top_srcdir/testsuite/mh/mbox1,[Mail/inbox])
-mhpath new | remove_curdir
+mhpath new | cwdrepl
],
[0],
-[Mail/inbox/6
+[./Mail/inbox/6
])
m4_popdef[MH_KEYWORDS])
diff --git a/mh/tests/repl.at b/mh/tests/repl.at
index 3520c631b..bd58e9f33 100644
--- a/mh/tests/repl.at
+++ b/mh/tests/repl.at
@@ -28,19 +28,19 @@ Subject: test input
message body
])
-echo "quit" | replcmd +inbox 1 | remove_curdir
+echo "quit" | replcmd +inbox 1 | cwdrepl
echo == Mail/draft ==
cat Mail/draft
],
[0],
-[-- Editor invocation: Mail/draft
+[-- Editor invocation: ./Mail/draft
-- Input file:
To: <gray@example.com>
Subject: Re: test input
X-Mailer: MH (AT_PACKAGE_NAME AT_PACKAGE_VERSION)
--------
-- Input file end
-What now? draft left on "Mail/draft".
+What now? draft left on "./Mail/draft".
== Mail/draft ==
To: <gray@example.com>
Subject: Re: test input
@@ -58,19 +58,19 @@ Subject: test input
message body
])
-echo "quit" | replcmd -draftfolder drafts +inbox 1 | remove_curdir
+echo "quit" | replcmd -draftfolder drafts +inbox 1 | cwdrepl
echo == Mail/drafts/1 ==
cat Mail/drafts/1
],
[0],
-[-- Editor invocation: Mail/drafts/1
+[-- Editor invocation: ./Mail/drafts/1
-- Input file:
To: <gray@example.com>
Subject: Re: test input
X-Mailer: MH (AT_PACKAGE_NAME AT_PACKAGE_VERSION)
--------
-- Input file end
-What now? draft left on "Mail/drafts/1".
+What now? draft left on "./Mail/drafts/1".
== Mail/drafts/1 ==
To: <gray@example.com>
Subject: Re: test input

Return to:

Send suggestions and report system problems to the System administrator.