#include <h/mh.h>
#include <h/tws.h>
+#include <h/utils.h>
/*
* We allocate space for messages (msgs array)
*/
nummsgs = 0;
maxmsgs = MAXMSGS;
- if (!(msgs = (char **) malloc ((size_t) (maxmsgs * sizeof(*msgs)))))
- adios (NULL, "unable to allocate storage");
+ msgs = (char **) mh_xmalloc ((size_t) (maxmsgs * sizeof(*msgs)));
/*
* Parse arguments
*/
if (nummsgs >= maxmsgs) {
maxmsgs += MAXMSGS;
- if (!(msgs = (char **) realloc (msgs,
- (size_t) (maxmsgs * sizeof(*msgs)))))
- adios (NULL, "unable to reallocate msgs storage");
+ msgs = (char **) mh_xrealloc (msgs,
+ (size_t) (maxmsgs * sizeof(*msgs)));
}
msgs[nummsgs++] = cp;
}
/*
* sort a list of pointers to our "messages to be sorted".
*/
- dlist = (struct smsg **) malloc ((nmsgs+1) * sizeof(*dlist));
- if (! dlist)
- adios (NULL, "couldn't allocate sort memory");
+ dlist = (struct smsg **) mh_xmalloc ((nmsgs+1) * sizeof(*dlist));
for (i = 0; i < nmsgs; i++)
dlist[i] = &smsgs[i];
dlist[nmsgs] = 0;
struct smsg **slist, **flist;
register struct smsg ***il, **fp, **dp;
- slist = (struct smsg **) malloc ((nmsgs+1) * sizeof(*slist));
- if (! slist)
- adios (NULL, "couldn't allocate sort memory");
+ slist = (struct smsg **) mh_xmalloc ((nmsgs+1) * sizeof(*slist));
memcpy((char *)slist, (char *)dlist, (nmsgs+1)*sizeof(*slist));
qsort((char *)slist, nmsgs, sizeof(*slist), (qsort_comp) subsort);
* make up the final list, chronological but with
* all the same subjects grouped together.
*/
- flist = (struct smsg **) malloc ((nmsgs+1) * sizeof(*flist));
- if (! flist)
- adios (NULL, "couldn't allocate msg list");
+ flist = (struct smsg **) mh_xmalloc ((nmsgs+1) * sizeof(*flist));
fp = flist;
for (dp = dlist; *dp;) {
register struct smsg **s = il[(*dp++)->s_msg];
case FLDEOF:
case FLDPLUS:
compnum++;
- if (!strcasecmp (nam, datesw)) {
+ if (!mh_strcasecmp (nam, datesw)) {
datecomp = add (buf, datecomp);
while (state == FLDPLUS) {
state = m_getfld (state, nam, buf, sizeof(buf), in);
}
if (!subjsort || subjcomp)
break;
- } else if (subjsort && !strcasecmp (nam, subjsort)) {
+ } else if (subjsort && !mh_strcasecmp (nam, subjsort)) {
subjcomp = add (buf, subjcomp);
while (state == FLDPLUS) {
state = m_getfld (state, nam, buf, sizeof(buf), in);
if (verbose)
printf ("message %d becomes message %d\n", old, new);
- if (rename (oldname, newname) == NOTOK)
- adios (newname, "unable to rename %s to", oldname);
-
(void)snprintf(oldname, sizeof (oldname), "%s/%d", mp->foldpath, old);
(void)snprintf(newbuf, sizeof (newbuf), "%s/%d", mp->foldpath, new);
ext_hook("ref-hook", oldname, newbuf);
+ if (rename (oldname, newname) == NOTOK)
+ adios (newname, "unable to rename %s to", oldname);
+
copy_msg_flags (mp, new, old);
if (mp->curmsg == old)
seq_setcur (mp, new);
if (verbose)
printf ("renaming message chain from %d to %d\n", old, new);
- if (rename (f1, tmpfil) == NOTOK)
- adios (tmpfil, "unable to rename %s to ", f1);
-
/*
- * Run the external hook to refile the old message as message
- * number 2147483647. This is our way of making a temporary
- * message number. I don't really like this.
+ * Run the external hook to refile the old message as the
+ * temporary message number that is off of the end of the
+ * messages in the folder.
*/
(void)snprintf(f1, sizeof (f1), "%s/%d", mp->foldpath, old);
- (void)snprintf(newbuf, sizeof (newbuf), "%s/2147483647", mp->foldpath);
+ (void)snprintf(newbuf, sizeof (newbuf), "%s/%d", mp->foldpath, mp->hghmsg + 1);
ext_hook("ref-hook", f1, newbuf);
+ if (rename (f1, tmpfil) == NOTOK)
+ adios (tmpfil, "unable to rename %s to ", f1);
+
get_msg_flags (mp, &tmpset, old);
rename_chain (mp, mlist, j, i);
- if (rename (tmpfil, m_name(new)) == NOTOK)
- adios (m_name(new), "unable to rename %s to", tmpfil);
/*
* Run the external hook to refile the temorary message number
(void)snprintf(f1, sizeof (f1), "%s/%d", mp->foldpath, new);
ext_hook("ref-hook", newbuf, f1);
+ if (rename (tmpfil, m_name(new)) == NOTOK)
+ adios (m_name(new), "unable to rename %s to", tmpfil);
+
set_msg_flags (mp, &tmpset, new);
mp->msgflags |= SEQMOD;
}