X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fnew.c;h=a43a710fe6fc392d7ef6a6158add3356f96435a2;hp=a79845c000b83a574c54e4c30709f5bc9adb7757;hb=8bf8e1e29df17658c3d77629e17f88bf9159e21b;hpb=0127c00f735b9e38608676b9f7bd3c6e38a7ffb4 diff --git a/uip/new.c b/uip/new.c index a79845c..a43a710 100644 --- a/uip/new.c +++ b/uip/new.c @@ -311,7 +311,11 @@ doit(char *cur, char *folders, char *sequences[]) 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 *cp; + char buf[BUFSIZ]; if (cur == NULL || cur[0] == '\0') { cur = "inbox"; @@ -383,14 +387,15 @@ doit(char *cur, char *folders, char *sequences[]) } 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 (cp=*sequences; *cp; cp++) { + argv[argc++] = cp; + } + argv[argc] = (char *)NULL; + execprog(*argv, argv); } else { if (node->n_field == NULL) { continue;