X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;ds=sidebyside;f=sbr%2Ffolder_pack.c;fp=sbr%2Ffolder_pack.c;h=0000000000000000000000000000000000000000;hb=69b07982861716d278845f962c2f2c1365a3153f;hp=c2b59116fcfacc2dc7f4130422b1d69713300a7f;hpb=d4f5f9d551c05931478fcdfb5cd4ac06b419eeda;p=mmh diff --git a/sbr/folder_pack.c b/sbr/folder_pack.c deleted file mode 100644 index c2b5911..0000000 --- a/sbr/folder_pack.c +++ /dev/null @@ -1,102 +0,0 @@ -/* -** folder_pack.c -- pack (renumber) the messages in a folder -** -- into a contiguous range from 1 to n. -** -** 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. -*/ - -#include - -/* -** Pack the message in a folder. -** Return -1 if error, else return 0. -*/ - -int -folder_pack(struct msgs **mpp, int verbose) -{ - 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. - */ - - snprintf(oldmsg, sizeof (oldmsg), "%s/%d", - mp->foldpath, msgnum); - 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; - - /* copy the attribute flags for this message */ - copy_msg_flags(mp, hole, msgnum); - - if (msgnum == mp->lowsel) - mp->lowsel = hole; - if (msgnum == mp->hghsel) - mp->hghsel = hole; - - /* - ** mark that sequence information has - ** been modified - */ - mp->msgflags |= SEQMOD; - } - hole++; - } - } - - /* record the new number for the high/low message */ - mp->lowmsg = 1; - mp->hghmsg = hole - 1; - - if (newcurrent) - seq_setcur(mp, newcurrent); - - return 0; -}