* folder_pack.c -- pack (renumber) the messages in a folder
* -- into a contiguous range from 1 to n.
*
- * $Id$
- *
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
* complete copyright information.
if (verbose)
printf ("message %s becomes %s\n", oldmsg, newmsg);
- /* move the message file */
- if (rename (oldmsg, newmsg) == -1) {
- advise (newmsg, "unable to rename %s to", oldmsg);
- return -1;
- }
-
/*
* Invoke the external refile hook for each message being renamed.
+ * This is done before the file is renamed so that the old message
+ * file is around for the hook.
*/
(void)snprintf(oldmsg, sizeof (oldmsg), "%s/%d", mp->foldpath, msgnum);
(void)snprintf(newmsg, sizeof (newmsg), "%s/%d", mp->foldpath, hole);
ext_hook("ref-hook", oldmsg, newmsg);
+ /* move the message file */
+ if (rename (oldmsg, newmsg) == -1) {
+ advise (newmsg, "unable to rename %s to", oldmsg);
+ return -1;
+ }
+
/* check if this is the current message */
if (msgnum == mp->curmsg)
newcurrent = hole;