-
-/*
- * sortm.c -- sort messages in a folder by date/time
+/* sortm.c -- sort messages in a folder by date/time
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
* COPYRIGHT file in the root directory of the nmh distribution for
#include <h/mh.h>
#include <h/tws.h>
#include <h/utils.h>
+#include "sbr/m_maildir.h"
#define SORTM_SWITCHES \
X("datefield field", 0, DATESW) \
static struct smsg *smsgs;
int nmsgs;
-char *subjsort = (char *) 0; /* sort on subject if != 0 */
+char *subjsort; /* sort on subject if != 0 */
time_t datelimit = 0;
int submajor = 0; /* if true, sort on subject-major */
int verbose;
if (*cp == '+' || *cp == '@') {
if (folder)
adios (NULL, "only one folder at a time!");
- else
- folder = pluspath (cp);
+ folder = pluspath (cp);
} else
- app_msgarg(&msgs, cp);
+ app_msgarg(&msgs, cp);
}
if (!context_find ("path"))
read_hdrs (struct msgs *mp, char *datesw)
{
int msgnum;
- struct tws tb;
struct smsg *s;
- twscopy (&tb, dlocaltimenow ());
-
smsgs = mh_xcalloc(mp->hghsel - mp->lowsel + 2, sizeof *smsgs);
s = smsgs;
for (msgnum = mp->lowsel; msgnum <= mp->hghsel; msgnum++) {
{
int state;
int compnum;
- char *msgnam, buf[BUFSIZ], nam[NAMESZ];
+ char *msgnam, buf[NMH_BUFSIZ], nam[NAMESZ];
struct tws *tw;
char *datecomp = NULL, *subjcomp = NULL;
FILE *in;
- m_getfld_state_t gstate = 0;
+ m_getfld_state_t gstate;
if ((in = fopen (msgnam = m_name (msg), "r")) == NULL) {
admonish (msgnam, "unable to read message");
return (0);
}
+ gstate = m_getfld_state_init(in);
for (compnum = 1;;) {
int bufsz = sizeof buf;
- switch (state = m_getfld (&gstate, nam, buf, &bufsz, in)) {
+ switch (state = m_getfld2(&gstate, nam, buf, &bufsz)) {
case FLD:
case FLDPLUS:
compnum++;
datecomp = add (buf, datecomp);
while (state == FLDPLUS) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, nam, buf, &bufsz, in);
+ state = m_getfld2(&gstate, nam, buf, &bufsz);
datecomp = add (buf, datecomp);
}
if (!subjsort || subjcomp)
subjcomp = add (buf, subjcomp);
while (state == FLDPLUS) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, nam, buf, &bufsz, in);
+ state = m_getfld2(&gstate, nam, buf, &bufsz);
subjcomp = add (buf, subjcomp);
}
if (datecomp)
/* just flush this guy */
while (state == FLDPLUS) {
bufsz = sizeof buf;
- state = m_getfld (&gstate, nam, buf, &bufsz, in);
+ state = m_getfld2(&gstate, nam, buf, &bufsz);
}
}
continue;
msg, compnum);
check_failed = 1;
}
- mh_xfree(datecomp);
- mh_xfree(subjcomp);
+ free(datecomp);
+ free(subjcomp);
fclose (in);
return (0);
if (strcmp (subjsort, "subject") == 0) {
while ((c = *cp)) {
if (! isspace((unsigned char) c)) {
- if(uprf(cp, "re:"))
- cp += 2;
- else
+ if(!uprf(cp, "re:"))
break;
+ cp += 2;
}
cp++;
}
smsg->s_subj = subjcomp;
}
fclose (in);
- mh_xfree(datecomp);
+ free(datecomp);
return (1);
}
rename_msgs (struct msgs *mp, struct smsg **mlist)
{
int i, j, old, new;
- bvector_t tmpset = bvector_create (0);
+ bvector_t tmpset = bvector_create ();
char f1[BUFSIZ], tmpfil[BUFSIZ];
char newbuf[PATH_MAX + 1];
struct smsg *sp;
rename_chain (mp, mlist, j, i);
/*
- * Run the external hook to refile the temorary message number
+ * Run the external hook to refile the temporary message number
* to the real place.
*/