static struct swit switches[] = {
#define MODESW 0
- { "mode", 1 },
+ { "mode", 0 },
#define FOLDERSSW 1
- { "folders", 1 },
+ { "folders", 0 },
#define VERSIONSW 2
- { "version", 1 },
+ { "Version", 0 },
#define HELPSW 3
- { "help", 1 },
+ { "help", 0 },
{ NULL, 0 }
};
struct node *first, *cur_node, *node, *last = NULL, *prev;
size_t folder_len;
int count, total = 0;
- char *command = NULL, *sequences_s = NULL;
+ char *sequences_s = NULL;
+ int argc = 0;
+ char *argv[MAXARGS];
+ char **seqp;
+ char buf[BUFSIZ];
if (cur == NULL || cur[0] == '\0') {
cur = "inbox";
}
fflush(stdout);
- /*
- ** TODO: Split enough of scan.c out so that we can
- ** call it here.
- */
- command = concat("scan +", node->n_name, " ",
- sequences_s, (void *)NULL);
- system(command);
- free(command);
+ argc = 0;
+ argv[argc++] = "scan";
+ snprintf(buf, sizeof buf, "+%s", node->n_name);
+ argv[argc++] = buf;
+ for (seqp=sequences; *seqp; seqp++) {
+ argv[argc++] = *seqp;
+ }
+ argv[argc] = (char *)NULL;
+ execprog(*argv, argv);
} else {
if (node->n_field == NULL) {
continue;
sequences[0] = NULL;
sequences[1] = NULL;
-#ifdef LOCALE
setlocale(LC_ALL, "");
-#endif
invo_name = mhbasename(argv[0]);
/* read user profile/context */
switch (smatch(++cp, switches)) {
case AMBIGSW:
ambigsw(cp, switches);
- done(1);
+ exit(1);
case UNKWNSW:
adios(NULL, "-%s unknown", cp);
"%s [switches] [sequences]",
invo_name);
print_help(help, switches, 1);
- done(1);
+ exit(0);
case VERSIONSW:
print_version(invo_name);
- done(1);
+ exit(0);
case FOLDERSSW:
if (!(folders = *argp++) || *folders == '-')
folder = doit(context_find(curfolder), folders, sequences);
if (folder == NULL) {
- done(0);
+ exit(0);
return 1;
}
context_save();
- done(0);
- return 1;
+ return 0;
}