X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fsortm.c;h=d2486eef5d06d7ff4a9f30897eabc24b6053849e;hb=a6f717992d5588898c37711aa1895dbb11016e1c;hp=5faec79aeb2851329c664e27eb5f9dafda8ac4f4;hpb=174d375bb4b9bcaa0c3f28c422216f68703494a8;p=mmh diff --git a/uip/sortm.c b/uip/sortm.c index 5faec79..d2486ee 100644 --- a/uip/sortm.c +++ b/uip/sortm.c @@ -2,8 +2,6 @@ /* * 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. @@ -30,9 +28,13 @@ static struct swit switches[] = { { "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 } }; @@ -47,9 +49,10 @@ static struct smsg *smsgs; 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 *); @@ -70,7 +73,8 @@ int main (int argc, char **argv) { int i, msgnum; - char *cp, *maildir, *datesw = NULL; + unsigned char *cp; + char *maildir, *datesw = NULL; char *folder = NULL, buf[BUFSIZ], **argp; char **arguments; struct msgs_array msgs = { 0, 0, NULL }; @@ -104,10 +108,10 @@ main (int argc, char **argv) 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) @@ -154,21 +158,33 @@ main (int argc, char **argv) case NVERBSW: verbose = 0; continue; + + case ALLMSGS: + allmsgs = 1; + continue; + case NALLMSGS: + allmsgs = 0; + continue; } } if (*cp == '+' || *cp == '@') { if (folder) adios (NULL, "only one folder at a time!"); else - folder = path (cp + 1, *cp == '+' ? TFOLDER : TSUBCWF); + folder = pluspath (cp); } else app_msgarg(&msgs, 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) @@ -284,7 +300,8 @@ main (int argc, char **argv) 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 @@ -408,7 +425,8 @@ get_fields (char *datesw, int msg, struct smsg *smsg) * leading "re:", everything but letters & smash * letters to lower case. */ - register char *cp, *cp2, c; + register char *cp, *cp2; + register unsigned char c; cp = subjcomp; cp2 = subjcomp; @@ -491,7 +509,7 @@ rename_chain (struct msgs *mp, struct smsg **mlist, int msg, int endmsg) { 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 */ @@ -529,7 +547,7 @@ rename_msgs (struct msgs *mp, struct smsg **mlist) 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));