/*
* sortm.c -- sort messages in a folder by date/time
*
- * $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.
{ "verbose", 0 },
#define NVERBSW 7
{ "noverbose", 0 },
-#define VERSIONSW 8
+#define ALLMSGS 8
+ { "all", 0 },
+#define NALLMSGS 9
+ { "noall", 0 },
+#define VERSIONSW 10
{ "version", 0 },
-#define HELPSW 9
+#define HELPSW 11
{ "help", 0 },
{ NULL, 0 }
};
int nmsgs;
char *subjsort = (char *) 0; /* sort on subject if != 0 */
-unsigned long datelimit = 0;
+time_t datelimit = 0;
int submajor = 0; /* if true, sort on subject-major */
int verbose;
+int allmsgs = 1;
/* This keeps compiler happy on calls to qsort */
typedef int (*qsort_comp) (const void *, const void *);
snprintf(buf, sizeof(buf), "%s [+folder] [msgs] [switches]",
invo_name);
print_help (buf, switches, 1);
- done (1);
+ done (0);
case VERSIONSW:
print_version(invo_name);
- done (1);
+ done (0);
case DATESW:
if (datesw)
case NVERBSW:
verbose = 0;
continue;
+
+ case ALLMSGS:
+ allmsgs = 1;
+ continue;
+ case NALLMSGS:
+ allmsgs = 0;
+ continue;
}
}
if (*cp == '+' || *cp == '@') {
if (!context_find ("path"))
free (path ("./", TFOLDER));
- if (!msgs.size)
- app_msgarg(&msgs, "all");
+ if (!msgs.size) {
+ if (allmsgs) {
+ app_msgarg(&msgs, "all");
+ } else {
+ adios (NULL, "must specify messages to sort with -noall");
+ }
+ }
if (!datesw)
datesw = "date";
if (!folder)
if (verbose) { /* announce what we're doing */
if (subjsort)
- printf ("sorting by %s-major %s-minor\n",
- submajor ? subjsort : datesw,
- submajor ? datesw : subjsort);
+ if (submajor)
+ printf ("sorting by %s\n", subjsort);
+ else
+ printf ("sorting by %s-major %s-minor\n", subjsort, datesw);
else
printf ("sorting by datefield %s\n", datesw);
}
seq_save (mp); /* synchronize message sequences */
context_save (); /* save the context file */
folder_free (mp); /* free folder/message structure */
- return done (0);
+ done (0);
+ return 1;
}
static int
{
int nxt, old, new;
char *newname, oldname[BUFSIZ];
- char newbuf[MAXPATHLEN + 1];
+ char newbuf[PATH_MAX + 1];
for (;;) {
nxt = mlist[msg] - smsgs; /* mlist[msg] is a ptr into smsgs */
int i, j, old, new;
seqset_t tmpset;
char f1[BUFSIZ], tmpfil[BUFSIZ];
- char newbuf[MAXPATHLEN + 1];
+ char newbuf[PATH_MAX + 1];
struct smsg *sp;
strncpy (tmpfil, m_name (mp->hghmsg + 1), sizeof(tmpfil));