#include <h/crawl_folders.h>
#include <h/utils.h>
-static struct swit switches[] = {
-#define MODESW 0
- { "mode", 1 },
-#define FOLDERSSW 1
- { "folders", 1 },
-#define VERSIONSW 2
- { "version", 1 },
-#define HELPSW 3
- { "help", 1 },
- { NULL, 0 }
-};
+#define NEW_SWITCHES \
+ X("mode", 1, MODESW) \
+ X("folders", 1, FOLDERSSW) \
+ X("version", 1, VERSIONSW) \
+ X("help", 1, HELPSW) \
+
+#define X(sw, minchars, id) id,
+DEFINE_SWITCH_ENUM(NEW);
+#undef X
+
+#define X(sw, minchars, id) { sw, minchars, id },
+DEFINE_SWITCH_ARRAY(NEW, switches);
+#undef X
static enum { NEW, FNEXT, FPREV, UNSEEN } run_mode = NEW;
char **ap, *cp, **argp, **arguments;
char help[BUFSIZ];
char *folders = NULL;
- char *sequences[NUMATTRS + 1];
+ svector_t sequences = svector_create (0);
int i = 0;
char *unseen;
struct node *folder;
- sequences[0] = NULL;
- sequences[1] = NULL;
-
#ifdef LOCALE
setlocale(LC_ALL, "");
#endif
}
}
/* have a sequence argument */
- if (!seq_in_list(cp, sequences)) {
- sequences[i++] = cp;
- sequences[i] = NULL;
+ if (!seq_in_list(cp, svector_strs (sequences))) {
+ svector_push_back (sequences, cp);
+ ++i;
}
}
adios(NULL, "must specify sequences or set %s", usequence);
}
for (ap = brkstring(unseen, " ", "\n"); *ap; ap++) {
- sequences[i++] = *ap;
+ svector_push_back (sequences, *ap);
+ ++i;
}
}
- sequences[i] = NULL;
- folder = doit(context_find(pfolder), folders, sequences);
+ folder = doit(context_find(pfolder), folders, svector_strs (sequences));
if (folder == NULL) {
done(0);
return 1;
context_save();
+ svector_free (sequences);
done (0);
return 1;
}