]> granicus.if.org Git - neomutt/commitdiff
endwin: separate curses from the message
authorRichard Russon <rich@flatcap.org>
Mon, 12 Feb 2018 15:17:41 +0000 (15:17 +0000)
committerRichard Russon <rich@flatcap.org>
Thu, 15 Mar 2018 18:38:04 +0000 (18:38 +0000)
12 files changed:
attach.c
commands.c
curs_lib.c
init.c
main.c
mutt_curses.h
muttlib.c
ncrypt/crypt.c
ncrypt/pgp.c
ncrypt/smime.c
recvattach.c
remailer.c

index 6e1f46ed6d8c3f912b27e7841aee6890e2ffe2fa..5fd7b18730bb9ecb07169f889a3f008055fba3fa 100644 (file)
--- a/attach.c
+++ b/attach.c
@@ -133,7 +133,7 @@ int mutt_compose_attachment(struct Body *a)
       {
         int r;
 
-        mutt_endwin(NULL);
+        mutt_endwin();
         r = mutt_system(command);
         if (r == -1)
           mutt_error(_("Error running \"%s\"!"), command);
@@ -266,7 +266,7 @@ int mutt_edit_attachment(struct Body *a)
       }
       else
       {
-        mutt_endwin(NULL);
+        mutt_endwin();
         if (mutt_system(command) == -1)
         {
           mutt_error(_("Error running \"%s\"!"), command);
@@ -474,7 +474,7 @@ int mutt_view_attachment(FILE *fp, struct Body *a, int flag, struct Header *hdr,
     int tempfd = -1, pagerfd = -1;
 
     if (!use_pager)
-      mutt_endwin(NULL);
+      mutt_endwin();
 
     if (use_pager || use_pipe)
     {
@@ -659,7 +659,7 @@ int mutt_pipe_attachment(FILE *fp, struct Body *b, const char *path, char *outfi
     }
   }
 
-  mutt_endwin(NULL);
+  mutt_endwin();
 
   if (fp)
   {
@@ -1021,7 +1021,7 @@ int mutt_print_attachment(FILE *fp, struct Body *a)
     mutt_str_strfcpy(command, entry->printcommand, sizeof(command));
     piped = rfc1524_expand_command(a, newfile, type, command, sizeof(command));
 
-    mutt_endwin(NULL);
+    mutt_endwin();
 
     /* interactive program */
     if (piped)
@@ -1095,7 +1095,7 @@ int mutt_print_attachment(FILE *fp, struct Body *a)
 
       mutt_debug(2, "successfully opened %s read-only\n", newfile);
 
-      mutt_endwin(NULL);
+      mutt_endwin();
       thepid = mutt_create_filter(NONULL(PrintCommand), &fpout, NULL, NULL);
       if (thepid < 0)
       {
index b4cb941841cbf1393234bbcaf6be8276ff83da7a..8e3dea842829b8c4e55fa4f74aad1d0b5fdf0b2e 100644 (file)
@@ -228,7 +228,7 @@ int mutt_display_message(struct Header *cur)
   {
     int r;
 
-    mutt_endwin(NULL);
+    mutt_endwin();
     snprintf(buf, sizeof(buf), "%s %s", NONULL(Pager), tempfile);
     r = mutt_system(buf);
     if (r == -1)
@@ -401,7 +401,7 @@ static int pipe_message(struct Header *h, char *cmd, int decode, int print,
       if (h->security & ENCRYPT && !crypt_valid_passphrase(h->security))
         return 1;
     }
-    mutt_endwin(NULL);
+    mutt_endwin();
 
     thepid = mutt_create_filter(cmd, &fpout, NULL, NULL);
     if (thepid < 0)
@@ -444,7 +444,7 @@ static int pipe_message(struct Header *h, char *cmd, int decode, int print,
           continue;
 
         mutt_message_hook(Context, Context->hdrs[i], MUTT_MESSAGEHOOK);
-        mutt_endwin(NULL);
+        mutt_endwin();
         thepid = mutt_create_filter(cmd, &fpout, NULL, NULL);
         if (thepid < 0)
         {
@@ -464,7 +464,7 @@ static int pipe_message(struct Header *h, char *cmd, int decode, int print,
     }
     else
     {
-      mutt_endwin(NULL);
+      mutt_endwin();
       thepid = mutt_create_filter(cmd, &fpout, NULL, NULL);
       if (thepid < 0)
       {
@@ -613,7 +613,7 @@ void mutt_shell_escape(void)
     if (buf[0])
     {
       mutt_window_clearline(MuttMessageWindow, 0);
-      mutt_endwin(NULL);
+      mutt_endwin();
       fflush(stdout);
       int rc = mutt_system(buf);
       if (rc == -1)
index c1a3f245ea6b5b9292697f7bbb15c734494b50be..ab1b053f29daf85fdfab609430703413fe98e0e0 100644 (file)
@@ -224,7 +224,7 @@ void mutt_edit_file(const char *editor, const char *data)
 {
   char cmd[LONG_STRING];
 
-  mutt_endwin(NULL);
+  mutt_endwin();
   mutt_expand_file_fmt(cmd, sizeof(cmd), editor, data);
   if (mutt_system(cmd) != 0)
   {
@@ -802,24 +802,17 @@ void mutt_show_error(void)
   mutt_window_clrtoeol(MuttMessageWindow);
 }
 
-void mutt_endwin(const char *msg)
+void mutt_endwin(void)
 {
-  int e = errno;
+  if (OPT_NO_CURSES)
+    return;
 
-  if (!OPT_NO_CURSES)
-  {
-    /* at least in some situations (screen + xterm under SuSE11/12) endwin()
-     * doesn't properly flush the screen without an explicit call.
-     */
-    mutt_refresh();
-    endwin();
-  }
+  int e = errno;
 
-  if (msg && *msg)
-  {
-    puts(msg);
-    fflush(stdout);
-  }
+  /* at least in some situations (screen + xterm under SuSE11/12) endwin()
+   * doesn't properly flush the screen without an explicit call.  */
+  mutt_refresh();
+  endwin();
 
   errno = e;
 }
@@ -872,7 +865,7 @@ int mutt_do_pager(const char *banner, const char *tempfile, int do_color, struct
   {
     char cmd[STRING];
 
-    mutt_endwin(NULL);
+    mutt_endwin();
     mutt_expand_file_fmt(cmd, sizeof(cmd), Pager, tempfile);
     if (mutt_system(cmd) == -1)
     {
diff --git a/init.c b/init.c
index 8309fd5c018882791f29319b25d701162bb6987e..1865d4f9566a93b131dd0c7c995d77922072b6b9 100644 (file)
--- a/init.c
+++ b/init.c
@@ -1495,7 +1495,7 @@ static int parse_attachments(struct Buffer *buf, struct Buffer *s,
 
   if (op == '?')
   {
-    mutt_endwin(NULL);
+    mutt_endwin();
     fflush(stdout);
     printf(_("\nCurrent attachments settings:\n\n"));
     print_attach_list(&AttachAllow, '+', "A");
@@ -2212,7 +2212,7 @@ static int parse_setenv(struct Buffer *tmp, struct Buffer *s,
       {
         if (!found)
         {
-          mutt_endwin(NULL);
+          mutt_endwin();
           found = 1;
         }
         puts(*envp);
@@ -3834,7 +3834,7 @@ void mutt_init(int skip_sys_rc, struct ListHead *commands)
   {
     if (!HomeDir)
     {
-      mutt_endwin(NULL);
+      mutt_endwin();
       fputs(_("unable to determine home directory"), stderr);
       exit(1);
     }
@@ -3843,7 +3843,7 @@ void mutt_init(int skip_sys_rc, struct ListHead *commands)
       Username = mutt_str_strdup(p);
     else
     {
-      mutt_endwin(NULL);
+      mutt_endwin();
       fputs(_("unable to determine username"), stderr);
       exit(1);
     }
@@ -3876,7 +3876,7 @@ void mutt_init(int skip_sys_rc, struct ListHead *commands)
    */
   if ((uname(&utsname)) == -1)
   {
-    mutt_endwin(NULL);
+    mutt_endwin();
     perror(_("unable to determine nodename via uname()"));
     exit(1);
   }
@@ -4063,8 +4063,9 @@ void mutt_init(int skip_sys_rc, struct ListHead *commands)
       np->data = mutt_str_strdup(buffer);
       if (access(np->data, F_OK))
       {
+        mutt_endwin();
         snprintf(buffer, sizeof(buffer), "%s: %s", np->data, strerror(errno));
-        mutt_endwin(buffer);
+        puts(buffer);
         exit(1);
       }
     }
diff --git a/main.c b/main.c
index 3981ff0ded33fd14d95bca51841c04607cb1818d..711eff1fcf7356232cec43fd7b7c90ffc2a07540 100644 (file)
--- a/main.c
+++ b/main.c
@@ -69,7 +69,7 @@ char **envlist = NULL;
 
 void mutt_exit(int code)
 {
-  mutt_endwin(NULL);
+  mutt_endwin();
   exit(code);
 }
 
@@ -528,7 +528,7 @@ int main(int argc, char **argv, char **env)
       mutt_flushinp();
     ci_send_message(SENDPOSTPONED, NULL, NULL, NULL, NULL);
     mutt_free_windows();
-    mutt_endwin(NULL);
+    mutt_endwin();
   }
   else if (subject || msg || sendflags || draft_file || include_file ||
            !STAILQ_EMPTY(&attach) || optind < argc)
@@ -554,8 +554,7 @@ int main(int argc, char **argv, char **env)
       {
         if (url_parse_mailto(msg->env, &bodytext, argv[i]) < 0)
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           fputs(_("Failed to parse mailto: link\n"), stderr);
           exit(1);
         }
@@ -566,8 +565,7 @@ int main(int argc, char **argv, char **env)
 
     if (!draft_file && Autoedit && !msg->env->to && !msg->env->cc)
     {
-      if (!OPT_NO_CURSES)
-        mutt_endwin(NULL);
+      mutt_endwin();
       fputs(_("No recipients specified.\n"), stderr);
       exit(1);
     }
@@ -606,8 +604,7 @@ int main(int argc, char **argv, char **env)
           fin = fopen(expanded_infile, "r");
           if (!fin)
           {
-            if (!OPT_NO_CURSES)
-              mutt_endwin(NULL);
+            mutt_endwin();
             perror(expanded_infile);
             exit(1);
           }
@@ -627,8 +624,7 @@ int main(int argc, char **argv, char **env)
         fout = mutt_file_fopen(tempfile, "w");
         if (!fout)
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           perror(tempfile);
           mutt_file_fclose(&fin);
           FREE(&tempfile);
@@ -647,8 +643,7 @@ int main(int argc, char **argv, char **env)
         fin = fopen(tempfile, "r");
         if (!fin)
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           perror(tempfile);
           FREE(&tempfile);
           exit(1);
@@ -746,8 +741,7 @@ int main(int argc, char **argv, char **env)
           msg->content = a = mutt_make_file_attach(np->data);
         if (!a)
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           fprintf(stderr, _("%s: unable to attach file.\n"), np->data);
           mutt_list_free(&attach);
           exit(1);
@@ -766,16 +760,14 @@ int main(int argc, char **argv, char **env)
       {
         if (truncate(expanded_infile, 0) == -1)
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           perror(expanded_infile);
           exit(1);
         }
         fout = mutt_file_fopen(expanded_infile, "a");
         if (!fout)
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           perror(expanded_infile);
           exit(1);
         }
@@ -798,8 +790,7 @@ int main(int argc, char **argv, char **env)
         fputc('\n', fout);
         if ((mutt_write_mime_body(msg->content, fout) == -1))
         {
-          if (!OPT_NO_CURSES)
-            mutt_endwin(NULL);
+          mutt_endwin();
           mutt_file_fclose(&fout);
           exit(1);
         }
@@ -817,8 +808,7 @@ int main(int argc, char **argv, char **env)
     }
 
     mutt_free_windows();
-    if (!OPT_NO_CURSES)
-      mutt_endwin(NULL);
+    mutt_endwin();
 
     if (rv != 0)
       exit(1);
@@ -829,7 +819,8 @@ int main(int argc, char **argv, char **env)
     {
       if (!mutt_buffy_check(false))
       {
-        mutt_endwin(_("No mailbox with new mail."));
+        mutt_endwin();
+        puts(_("No mailbox with new mail."));
         exit(1);
       }
       folder[0] = '\0';
@@ -844,7 +835,8 @@ int main(int argc, char **argv, char **env)
         CurrentNewsSrv = nntp_select_server(NewsServer, false);
         if (!CurrentNewsSrv)
         {
-          mutt_endwin(ErrorBuf);
+          mutt_endwin();
+          puts(ErrorBuf);
           exit(1);
         }
       }
@@ -852,14 +844,15 @@ int main(int argc, char **argv, char **env)
 #endif
           if (!Incoming)
       {
-        mutt_endwin(_("No incoming mailboxes defined."));
+        mutt_endwin();
+        puts(_("No incoming mailboxes defined."));
         exit(1);
       }
       folder[0] = '\0';
       mutt_select_file(folder, sizeof(folder), MUTT_SEL_FOLDER | MUTT_SEL_BUFFY, NULL, NULL);
       if (folder[0] == '\0')
       {
-        mutt_endwin(NULL);
+        mutt_endwin();
         exit(0);
       }
     }
@@ -892,10 +885,12 @@ int main(int argc, char **argv, char **env)
       switch (mx_check_empty(folder))
       {
         case -1:
-          mutt_endwin(strerror(errno));
+          mutt_endwin();
+          puts(strerror(errno));
           exit(1);
         case 1:
-          mutt_endwin(_("Mailbox is empty."));
+          mutt_endwin();
+          puts(_("Mailbox is empty."));
           exit(1);
       }
     }
@@ -922,7 +917,8 @@ int main(int argc, char **argv, char **env)
 #endif
     mutt_free_opts();
     mutt_free_windows();
-    mutt_endwin(ErrorBuf);
+    mutt_endwin();
+    puts(ErrorBuf);
   }
 
   exit(0);
index b11fa1cfe7e942ac8ce9c698d61b9b4760ebd242..4556b4f725c9856bf6ed8cf2b198f82104e7573a 100644 (file)
@@ -114,7 +114,7 @@ struct Event
 
 struct Event mutt_getch(void);
 
-void mutt_endwin(const char *msg);
+void mutt_endwin(void);
 void mutt_flushinp(void);
 void mutt_refresh(void);
 void mutt_resize_screen(void);
index 2a946c55e3cff225094a024200db9acacd19a83b..eab2f929201080e0bffbdcc60a34bca223ad198e 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1264,7 +1264,7 @@ FILE *mutt_open_read(const char *path, pid_t *thepid)
     char *p = mutt_str_strdup(path);
 
     p[len - 1] = 0;
-    mutt_endwin(NULL);
+    mutt_endwin();
     *thepid = mutt_create_filter(p, NULL, &f, NULL);
     FREE(&p);
   }
index 19fda6c300930e856e771425befc25beb3a7e308..bca2b822f23e256c40f8212397b267171b0f5bb3 100644 (file)
@@ -169,7 +169,10 @@ int mutt_protect(struct Header *msg, char *keylist)
     {
       /* they really want to send it inline... go for it */
       if (!isendwin())
-        mutt_endwin(_("Invoking PGP..."));
+      {
+        mutt_endwin();
+        puts(_("Invoking PGP..."));
+      }
       pbody = crypt_pgp_traditional_encryptsign(msg->content, flags, keylist);
       if (pbody)
       {
@@ -191,7 +194,7 @@ int mutt_protect(struct Header *msg, char *keylist)
   }
 
   if (!isendwin())
-    mutt_endwin(NULL);
+    mutt_endwin();
 
   if ((WithCrypto & APPLICATION_SMIME))
     tmp_smime_pbody = msg->content;
@@ -742,7 +745,8 @@ void crypt_extract_keys_from_messages(struct Header *h)
         mutt_copy_message_ctx(fpout, Context, hi, MUTT_CM_DECODE | MUTT_CM_CHARCONV, 0);
         fflush(fpout);
 
-        mutt_endwin(_("Trying to extract PGP keys...\n"));
+        mutt_endwin();
+        puts(_("Trying to extract PGP keys...\n"));
         crypt_pgp_invoke_import(tempfname);
       }
 
@@ -763,7 +767,8 @@ void crypt_extract_keys_from_messages(struct Header *h)
         mbox = tmp ? tmp->mailbox : NULL;
         if (mbox)
         {
-          mutt_endwin(_("Trying to extract S/MIME certificates...\n"));
+          mutt_endwin();
+          puts(_("Trying to extract S/MIME certificates...\n"));
           crypt_smime_invoke_import(tempfname, mbox);
           tmp = NULL;
         }
@@ -781,7 +786,8 @@ void crypt_extract_keys_from_messages(struct Header *h)
       {
         mutt_copy_message_ctx(fpout, Context, h, MUTT_CM_DECODE | MUTT_CM_CHARCONV, 0);
         fflush(fpout);
-        mutt_endwin(_("Trying to extract PGP keys...\n"));
+        mutt_endwin();
+        puts(_("Trying to extract PGP keys...\n"));
         crypt_pgp_invoke_import(tempfname);
       }
 
index 516aae41f6bf485ffbde0f92b5f8f6887cab57dc..0336d1396d0f8a54e2994d6132976bb71a06da5f 100644 (file)
@@ -801,7 +801,7 @@ void pgp_extract_keys_from_attachment_list(FILE *fp, int tag, struct Body *top)
     return;
   }
 
-  mutt_endwin(NULL);
+  mutt_endwin();
   OPT_DONT_HANDLE_PGP_KEYS = true;
 
   for (; top; top = top->next)
index a1a058de81d5e74e9d314dcd9670464910ef56db..37e82fa800211a1b0fb87abe40012db71dc3e33b 100644 (file)
@@ -967,7 +967,7 @@ static int smime_handle_cert_email(char *certificate, char *mailbox, int copy,
 
   if (rc == -1)
   {
-    mutt_endwin(NULL);
+    mutt_endwin();
     mutt_file_copy_stream(fperr, stdout);
     mutt_any_key_to_continue(_("Error: unable to create OpenSSL subprocess!"));
     rc = 1;
@@ -1157,7 +1157,7 @@ static char *smime_extract_signer_certificate(char *infile)
   empty = (fgetc(fpout) == EOF);
   if (empty)
   {
-    mutt_endwin(NULL);
+    mutt_endwin();
     mutt_file_copy_stream(fperr, stdout);
     mutt_any_key_to_continue(NULL);
     mutt_file_fclose(&fpout);
@@ -1212,11 +1212,11 @@ void smime_invoke_import(char *infile, char *mailbox)
     }
   }
 
-  mutt_endwin(NULL);
+  mutt_endwin();
   certfile = smime_extract_certificate(infile);
   if (certfile)
   {
-    mutt_endwin(NULL);
+    mutt_endwin();
 
     thepid = smime_invoke(&smimein, NULL, NULL, -1, fileno(fpout), fileno(fperr), certfile,
                           NULL, NULL, NULL, NULL, NULL, NULL, SmimeImportCertCommand);
index 8c4c01e1c8c51d6a906327f3acd58cee74ad3add..dbb89158b2c267f6afbfa0bb957aea0ff82e72ca 100644 (file)
@@ -729,7 +729,7 @@ void mutt_pipe_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag,
 
   if (!filter && !AttachSplit)
   {
-    mutt_endwin(NULL);
+    mutt_endwin();
     thepid = mutt_create_filter(buf, &state.fpout, NULL, NULL);
     pipe_attachment_list(buf, actx, fp, tag, top, filter, &state);
     mutt_file_fclose(&state.fpout);
@@ -835,7 +835,7 @@ void mutt_print_attachment_list(struct AttachCtx *actx, FILE *fp, bool tag, stru
   {
     if (!can_print(actx, top, tag))
       return;
-    mutt_endwin(NULL);
+    mutt_endwin();
     thepid = mutt_create_filter(NONULL(PrintCommand), &state.fpout, NULL, NULL);
     print_attachment_list(actx, fp, tag, top, &state);
     mutt_file_fclose(&state.fpout);
index a63369f34ec87bc6a6134982b2bb8ef961fbde7b..45220b8c1c0e3c1e439a2f0e1a68b82234b51419 100644 (file)
@@ -757,8 +757,7 @@ int mix_send_message(struct ListHead *chain, const char *tempfile)
              (np == STAILQ_FIRST(chain)) ? " -l " : ",", cd_quoted);
   }
 
-  if (!OPT_NO_CURSES)
-    mutt_endwin(NULL);
+  mutt_endwin();
 
   i = mutt_system(cmd);
   if (i != 0)