- int hole, msgnum, newcurrent = 0;
- char newmsg[BUFSIZ], oldmsg[BUFSIZ];
- struct msgs *mp;
-
- mp = *mpp;
-
- /*
- * Just return if folder is empty.
- */
- if (mp->nummsg == 0)
- return 0;
-
- /*
- * Make sure we have message status space allocated
- * for all numbers from 1 to current high message.
- */
- if (mp->lowoff > 1) {
- if ((mp = folder_realloc (mp, 1, mp->hghmsg)))
- *mpp = mp;
- else {
- advise (NULL, "unable to allocate folder storage");
- return -1;
- }
- }
-
- for (msgnum = mp->lowmsg, hole = 1; msgnum <= mp->hghmsg; msgnum++) {
- if (does_exist (mp, msgnum)) {
- if (msgnum != hole) {
- strncpy (newmsg, m_name (hole), sizeof(newmsg));
- strncpy (oldmsg, m_name (msgnum), sizeof(oldmsg));
- if (verbose)
- printf ("message %s becomes %s\n", oldmsg, newmsg);
-
- /*
- * 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;
+ int hole, msgnum, newcurrent = 0;
+ char newmsg[BUFSIZ], oldmsg[BUFSIZ];
+ struct msgs *mp;
+
+ mp = *mpp;
+
+ /*
+ ** Just return if folder is empty.
+ */
+ if (mp->nummsg == 0)
+ return 0;
+
+ /*
+ ** Make sure we have message status space allocated
+ ** for all numbers from 1 to current high message.
+ */
+ if (mp->lowoff > 1) {
+ if ((mp = folder_realloc(mp, 1, mp->hghmsg)))
+ *mpp = mp;
+ else {
+ advise(NULL, "unable to allocate folder storage");
+ return -1;