/* FIXME: This code needs rework! Rewrite as a parser? */
#include <h/mh.h>
+#include <ctype.h>
/*
** error codes for sequence
static int m_conv(struct msgs *, char *, int);
static int attr(struct msgs *, char *);
-
-static void
-addtosel(struct msgs *mp, int msg)
-{
- if (is_selected(mp, msg)) {
- return; /* dont select twice */
- }
- set_selected(mp, msg);
- mp->numsel++;
- if (mp->lowsel == 0 || msg < mp->lowsel) {
- mp->lowsel = msg;
- }
- if (msg > mp->hghsel) {
- mp->hghsel = msg;
- }
-}
-
int
m_convert(struct msgs *mp, char *name)
{
** ALLOW_BEYOND is set, and can appear only on its own.
** Also, it is available in any folder.
*/
- if ((mp->msgflags & ALLOW_BEYOND) && !strcmp(cp, seq_beyond)) {
- addtosel(mp, getbeyond(mp));
+ if ((mp->msgflags & ALLOW_BEYOND) && strcmp(cp, seq_beyond)==0) {
+ set_selected(mp, getbeyond(mp));
return 1;
}
/*
** Handle the special all sequence: replace `a' with `f-l'
*/
- if (!strcmp(cp, seq_all)) {
+ if (strcmp(cp, seq_all)==0) {
cp = concat(seq_first, "-", seq_last, NULL);
}
*/
if (first > mp->hghmsg || first < mp->lowmsg ||
!does_exist(mp, first)) {
- if (!strcmp(name, seq_cur))
+ if (strcmp(name, seq_cur)==0)
advise(NULL, "no current message");
else
/* this case seems to never be reached */
/* Cycle through the range and select the messages that exist. */
for (found=0; first <= last; first++) {
if (does_exist(mp, first)) {
- addtosel(mp, first);
+ set_selected(mp, first);
found++;
}
}
static int
m_conv(struct msgs *mp, char *str, int call)
{
- register int i;
- register unsigned char *cp, *bp;
+ int i;
+ unsigned char *cp, *bp;
unsigned char buf[16]; /* for reserved sequence name */
convdir = 1;
return BADNUM;
}
- for (bp = buf; isalpha(*cp) && (bp - buf < sizeof(buf) - 1); ) {
+ for (bp = buf; isalpha(*cp) && (bp - buf < (int)sizeof(buf) - 1); ) {
*bp++ = *cp++;
}
*bp++ = '\0';
static int
attr(struct msgs *mp, char *cp)
{
- register unsigned char *dp;
+ unsigned char *dp;
char *bp = NULL;
- register int i, j;
+ int i, j;
int found;
int inverted = 0;
int range = 0; /* no range */
int first = 0;
/* hack for "c-..." */
- if (!strcmp(cp, seq_cur))
+ if (strcmp(cp, seq_cur)==0)
return 0;
/* "c:..." -- this code need to be rewritten... */
if (strncmp(seq_cur, cp, strlen(seq_cur))==0 &&
if (!(dp = context_find(nsequence))) {
dp = seq_neg; /* use default */
}
- if (dp && *dp && isprefix(dp, cp)) {
+ if (*dp && strncmp(cp, dp, strlen(dp))==0) {
inverted = 1;
cp += strlen(dp);
}
** seq:l
*/
if (isalpha(*dp)) {
- if (!strcmp(dp, seq_prev)) {
+ if (strcmp(dp, seq_prev)==0) {
convdir = -1;
first = (mp->curmsg > 0) && (mp->curmsg <= mp->hghmsg)
? mp->curmsg - 1 : mp->hghmsg;
- } else if (!strcmp(dp, seq_next)) {
+ } else if (strcmp(dp, seq_next)==0) {
convdir = 1;
first = (mp->curmsg >= mp->lowmsg)
? mp->curmsg + 1 : mp->lowmsg;
- } else if (!strcmp(dp, seq_first)) {
+ } else if (strcmp(dp, seq_first)==0) {
convdir = 1;
- } else if (!strcmp(dp, seq_last)) {
+ } else if (strcmp(dp, seq_last)==0) {
convdir = -1;
} else
return BADLST;
if (does_exist(mp, j)
&& inverted ? !in_sequence(mp, i, j) :
in_sequence(mp, i, j)) {
- addtosel(mp, j);
+ set_selected(mp, j);
found++;
/*