whatnow: Use execprog() ... one more time
[mmh] / uip / send.c
index 3c2db0e..b85963d 100644 (file)
@@ -237,8 +237,7 @@ main(int argc, char **argv)
 static int
 sendsbr(char **vec, int vecp, char *drft, struct stat *st)
 {
-       int status;
-       char buffer[BUFSIZ];
+       int status, dupfd;
        char *original_draft;
 
        /*
@@ -295,12 +294,16 @@ sendsbr(char **vec, int vecp, char *drft, struct stat *st)
                status = sendaux(vec, vecp, drft, st) ? NOTOK : OK;
                if (status == OK) {
                        /* move original draft to +trash folder */
-                       snprintf(buffer, sizeof buffer,
-                                       "</dev/null refile -file %s +trash",
-                                       original_draft);
-                       if (system(buffer) != 0) {
+                       /* temporary close stdin, for refile not to ask */
+                       dupfd = dup(0);
+                       close(0);
+                       if (execprogl("refile", "refile", "-file",
+                                       original_draft, "+trash",
+                                       (char *)NULL) != 0) {
                                advise(NULL, "unable to trash the draft");
                        }
+                       dup2(dupfd, 0);
+                       close(dupfd);
                }
                break;