-
-/*
- * new.c -- as new, list all folders with unseen messages
+/* new.c -- as new, list all folders with unseen messages
* -- as fnext, move to next folder with unseen messages
* -- as fprev, move to previous folder with unseen messages
* -- as unseen, scan all unseen messages
#include <h/mh.h>
#include <h/crawl_folders.h>
#include <h/utils.h>
+#include "../sbr/lock_file.h"
+#include "../sbr/m_maildir.h"
#define NEW_SWITCHES \
X("mode", 1, MODESW) \
char *seqfile = NULL;
FILE *fp;
int state;
- char name[NAMESZ], field[BUFSIZ];
+ char name[NAMESZ], field[NMH_BUFSIZ];
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;
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);
}
case BODY:
adios (NULL, "no blank lines are permitted in %s", seqfile);
- /* fall */
+ break;
case FILEEOF:
break;
if (first == NULL) {
/* No folders at all... */
return NULL;
- } else if (first->n_next == NULL) {
+ }
+ if (first->n_next == NULL) {
/* We have only one node; any desired messages in it? */
if (first->n_field == NULL) {
return NULL;
- } else {
- return first;
}
- } else if (cur_node == NULL) {
+ return first;
+ }
+ if (cur_node == NULL) {
/* Current folder is not listed in .folders, return first. */
return first;
}
if (strcmp(node->n_name, cur) == 0) {
puts(" (*: current folder)");
} else {
- puts("");
+ putchar('\n');
}
fflush(stdout);