#include <sys/types.h>
-#include <h/mh.h>
-#include <h/crawl_folders.h>
-#include <h/utils.h>
-#include "../sbr/lock_file.h"
-#include "../sbr/m_maildir.h"
+#include "h/mh.h"
+#include "sbr/r1bindex.h"
+#include "sbr/trimcpy.h"
+#include "sbr/vfgets.h"
+#include "sbr/getcpy.h"
+#include "sbr/m_atoi.h"
+#include "sbr/context_save.h"
+#include "sbr/context_replace.h"
+#include "sbr/context_find.h"
+#include "sbr/brkstring.h"
+#include "sbr/ambigsw.h"
+#include "sbr/print_version.h"
+#include "sbr/print_help.h"
+#include "sbr/error.h"
+#include "h/crawl_folders.h"
+#include "h/done.h"
+#include "h/utils.h"
+#include "sbr/lock_file.h"
+#include "sbr/m_maildir.h"
#define NEW_SWITCHES \
X("mode", 1, MODESW) \
return total;
}
-/* Return TRUE if the sequence 'name' is in 'sequences'. */
-static boolean
+/* Return true if the sequence 'name' is in 'sequences'. */
+static bool
seq_in_list(char *name, char *sequences[])
{
int i;
for (i = 0; sequences[i] != NULL; i++) {
if (strcmp(name, sequences[i]) == 0) {
- return TRUE;
+ return true;
}
}
- return FALSE;
+ return false;
}
/* Return the string list of message numbers from the sequences file, or NULL
char *cp;
char *msgnums = NULL, *this_msgnums, *old_msgnums;
int failed_to_lock = 0;
- m_getfld_state_t gstate = 0;
+ m_getfld_state_t gstate;
/* copied from seq_read.c:seq_public */
/*
return NULL;
/* get filename of sequence file */
- seqfile = concat(m_maildir(folder), "/", mh_seq, (void *)NULL);
+ seqfile = concat(m_maildir(folder), "/", mh_seq, NULL);
if (seqfile == NULL)
return NULL;
if ((fp = lkfopendata (seqfile, "r", & failed_to_lock)) == NULL) {
-
- if (failed_to_lock) {
+ if (failed_to_lock)
adios (seqfile, "failed to lock");
- } else {
- free(seqfile);
- return NULL;
- }
+ free(seqfile);
+ return NULL;
}
- /* Use m_getfld to scan sequence file */
+ /* Use m_getfld2 to scan sequence file */
+ gstate = m_getfld_state_init(fp);
for (;;) {
int fieldsz = sizeof field;
- switch (state = m_getfld (&gstate, name, field, &fieldsz, fp)) {
+ switch (state = m_getfld2(&gstate, name, field, &fieldsz)) {
case FLD:
case FLDPLUS:
if (state == FLDPLUS) {
cp = getcpy (field);
while (state == FLDPLUS) {
fieldsz = sizeof field;
- state = m_getfld (&gstate, name, field, &fieldsz, fp);
+ state = m_getfld2(&gstate, name, field, &fieldsz);
cp = add (field, cp);
}
} else {
old_msgnums = msgnums;
msgnums = concat(old_msgnums, " ",
- this_msgnums, (void *)NULL);
+ this_msgnums, NULL);
free(old_msgnums);
free(this_msgnums);
}
} else {
old_msgnums = msgnums;
msgnums = concat(old_msgnums, " ",
- this_msgnums, (void *)NULL);
+ this_msgnums, NULL);
free(old_msgnums);
free(this_msgnums);
}
continue;
case BODY:
- adios (NULL, "no blank lines are permitted in %s", seqfile);
- /* FALLTHRU */
+ die("no blank lines are permitted in %s", seqfile);
+ break;
case FILEEOF:
break;
default:
- adios (NULL, "%s is poorly formatted", seqfile);
+ die("%s is poorly formatted", seqfile);
}
break; /* break from for loop */
}
}
}
-static boolean
+static bool
crawl_callback(char *folder, void *baton)
{
check_folder(folder, strlen(folder), baton);
- return TRUE;
+ return true;
}
/* Scan folders, returning:
} else {
fp = fopen(folders, "r");
if (fp == NULL) {
- adios(NULL, "failed to read %s", folders);
+ die("failed to read %s", folders);
}
while (vfgets(fp, &line) == OK) {
len = strlen(line) - 1;
/* Found current folder in fprev mode; if we have a
* previous node in the list, return it; else return
* the last node. */
- if (prev == NULL) {
- return last;
- }
- return prev;
+ if (prev)
+ return prev;
+ return last;
}
} else if (run_mode == RM_UNSEEN) {
int status;
/* TODO: Split enough of scan.c out so that we can call it here. */
command = concat("scan +", node->n_name, " ", sequences_s,
- (void *)NULL);
+ NULL);
status = system(command);
if (! WIFEXITED (status)) {
adios (command, "system");
char *unseen;
struct node *folder;
- if (nmh_init(argv[0], 1)) { return 1; }
+ if (nmh_init(argv[0], true, true)) { return 1; }
arguments = getarguments (invo_name, argc, argv, 1);
argp = arguments;
ambigsw (cp, switches);
done (1);
case UNKWNSW:
- adios (NULL, "-%s unknown", cp);
+ die("-%s unknown", cp);
case HELPSW:
snprintf (help, sizeof(help), "%s [switches] [sequences]",
case FOLDERSSW:
if (!(folders = *argp++) || *folders == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
+ die("missing argument to %s", argp[-2]);
continue;
case MODESW:
if (!(invo_name = *argp++) || *invo_name == '-')
- adios(NULL, "missing argument to %s", argp[-2]);
+ die("missing argument to %s", argp[-2]);
invo_name = r1bindex(invo_name, '/');
continue;
}
/* no sequence arguments; use unseen */
unseen = context_find(usequence);
if (unseen == NULL || unseen[0] == '\0') {
- adios(NULL, "must specify sequences or set %s", usequence);
+ die("must specify sequences or set %s", usequence);
}
for (ap = brkstring(unseen, " ", "\n"); *ap; ap++) {
svector_push_back (sequences, *ap);