X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/a259594cc41e41bfbb90562d3977b8194d1446f5..939f1fee996a43fbbf4074874c3be5467592efe1:/sbr/folder_pack.c diff --git a/sbr/folder_pack.c b/sbr/folder_pack.c index bebc145b..22c02079 100644 --- a/sbr/folder_pack.c +++ b/sbr/folder_pack.c @@ -1,10 +1,6 @@ - -/* - * folder_pack.c -- pack (renumber) the messages in a folder +/* 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. @@ -37,12 +33,11 @@ folder_pack (struct msgs **mpp, int verbose) * 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"); + if (!(mp = folder_realloc(mp, 1, mp->hghmsg))) { + inform("unable to allocate folder storage"); return -1; } + *mpp = mp; } for (msgnum = mp->lowmsg, hole = 1; msgnum <= mp->hghmsg; msgnum++) { @@ -53,20 +48,22 @@ folder_pack (struct msgs **mpp, int verbose) 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;