X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=commands.c;h=edc09da13f866a4a308d9df6b9a6803b20296fd7;hp=3bf5de5a8f7e07d8c452b6d8c12e5e12c2b35901;hb=5e6273c09929249ee7a850934bf12fd03439d923;hpb=bbc4fd52516a8afefbd14c77e34f8389d6f0a6ed diff --git a/commands.c b/commands.c index 3bf5de5..edc09da 100644 --- a/commands.c +++ b/commands.c @@ -12,10 +12,14 @@ # include "config.h" #endif +#include +#include +#include +#include + #include "mutt.h" #include "enter.h" #include "recvattach.h" -#include "ascii.h" #include "mutt_curses.h" #include "mutt_menu.h" #include "mime.h" @@ -38,9 +42,6 @@ #include "buffy.h" #endif -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" #include "lib/debug.h" #include @@ -52,8 +53,6 @@ #include #include -extern char *ReleaseDate; - /* The folder the user last saved to. Used by ci_save_message() */ static char LastSaveFolder[_POSIX_PATH_MAX] = ""; @@ -95,7 +94,7 @@ int mutt_display_message (HEADER * cur) } } - if (!Pager || str_cmp (Pager, "builtin") == 0) + if (!Pager || m_strcmp(Pager, "builtin") == 0) builtin = 1; else { mutt_make_string (buf, sizeof (buf), NONULL (PagerFmt), Context, cur); @@ -155,8 +154,16 @@ int mutt_display_message (HEADER * cur) mutt_wait_filter (filterpid); safe_fclose (&fpfilterout); } +#if 0 + /* this is maybe just plain wrong but it makes the pager display + * what we have; i.e. for the crypto stuff we only get + * 'Could not copy message' for invalid passphrases, no PGP output + * not nothing; so just display what we have... + * - pdmef + */ mutt_unlink (tempfile); return 0; +#endif } if (fpfilterout != NULL && mutt_wait_filter (filterpid) != 0) @@ -205,7 +212,7 @@ int mutt_display_message (HEADER * cur) } /* Invoke the builtin pager */ - memset (&info, 0, sizeof (pager_t)); + p_clear(&info, 1); info.hdr = cur; info.ctx = Context; rc = mutt_pager (NULL, tempfile, M_PAGER_MESSAGE, &info); @@ -241,9 +248,9 @@ void ci_bounce_message (HEADER * h, int *redraw) int rc; if (h) - strfcpy (prompt, _("Bounce message to: "), sizeof (prompt)); + m_strcpy(prompt, sizeof(prompt), _("Bounce message to: ")); else - strfcpy (prompt, _("Bounce tagged messages to: "), sizeof (prompt)); + m_strcpy(prompt, sizeof(prompt), _("Bounce tagged messages to: ")); rc = mutt_get_field (prompt, buf, sizeof (buf), M_ALIAS); @@ -265,7 +272,7 @@ void ci_bounce_message (HEADER * h, int *redraw) if (mutt_addrlist_to_idna (adr, &err) < 0) { mutt_error (_("Bad IDN: '%s'"), err); - mem_free (&err); + p_delete(&err); rfc822_free_address (&adr); return; } @@ -279,13 +286,12 @@ void ci_bounce_message (HEADER * h, int *redraw) buf); if (mutt_strwidth (prompt) > COLS - extra_space) { - mutt_format_string (prompt, sizeof (prompt), - 0, COLS - extra_space, 0, 0, - prompt, sizeof (prompt), 0); - str_cat (prompt, sizeof (prompt), "...?"); + mutt_format_string(prompt, sizeof(prompt), 0, COLS - extra_space, 0, 0, + prompt, sizeof(prompt), 0); + m_strcat(prompt, sizeof(prompt), "...?"); + } else { + m_strcat(prompt, sizeof(prompt), "?"); } - else - str_cat (prompt, sizeof (prompt), "?"); if (query_quadoption (OPT_BOUNCE, prompt) != M_YES) { rfc822_free_address (&adr); @@ -342,8 +348,8 @@ static void pipe_msg (HEADER * h, FILE * fp, int decode, int print) /* the following code is shared between printing and piping */ -static int _mutt_pipe_message (HEADER * h, char *cmd, - int decode, int print, int split, char *sep) +static int _mutt_pipe_message(HEADER * h, char *cmd, int decode, int print, + int split, const char *sep) { int i, rc = 0; @@ -547,7 +553,7 @@ void mutt_shell_escape (void) buf[0] = 0; if (mutt_get_field (_("Shell command: "), buf, sizeof (buf), M_CMD) == 0) { if (!buf[0] && Shell) - strfcpy (buf, Shell, sizeof (buf)); + m_strcpy(buf, sizeof(buf), Shell); if (buf[0]) { CLEARLINE (LINES - 1); mutt_endwin (NULL); @@ -571,9 +577,9 @@ void mutt_enter_command (void) return; err.data = errbuf; err.dsize = sizeof (errbuf); - memset (&token, 0, sizeof (token)); + p_clear(&token, 1); r = mutt_parse_rc_line (buffer, &token, &err); - mem_free (&token.data); + p_delete(&token.data); if (errbuf[0]) { /* since errbuf could potentially contain printf() sequences in it, we must call mutt_error() in this fashion so that vsprintf() @@ -587,11 +593,11 @@ void mutt_enter_command (void) void mutt_display_address (ENVELOPE * env) { - char *pfx = NULL; + const char *pfx = NULL; char buf[SHORT_STRING]; ADDRESS *adr = NULL; - adr = mutt_get_address (env, &pfx); + adr = mutt_get_address(env, &pfx); if (!adr) return; @@ -741,10 +747,10 @@ int mutt_save_message (HEADER * h, int delete, /* This is an undocumented feature of ELM pointed out to me by Felix von * Leitner */ - if (str_cmp (buf, ".") == 0) - strfcpy (buf, LastSaveFolder, sizeof (buf)); + if (m_strcmp(buf, ".") == 0) + m_strcpy(buf, sizeof(buf), LastSaveFolder); else - strfcpy (LastSaveFolder, buf, sizeof (LastSaveFolder)); + m_strcpy(LastSaveFolder, sizeof(LastSaveFolder), buf); mutt_expand_path (buf, sizeof (buf)); @@ -823,129 +829,9 @@ int mutt_save_message (HEADER * h, int delete, return -1; } -int mutt_update_list_file (char *filename, char *section, char *key, - char *line) -{ - FILE *ifp; - FILE *ofp; - char buf[HUGE_STRING]; - char oldfile[_POSIX_PATH_MAX]; - char *c; - int ext = 0, done = 0, r = 0; - - snprintf (oldfile, sizeof (oldfile), "%s.bak", filename); - debug_print (1, ("Renaming %s to %s\n", filename, oldfile)); - - /* if file not exist, create it */ - if ((ifp = safe_fopen (filename, "a"))) - fclose (ifp); - if (_mutt_rename_file (filename, oldfile, 1)) { - mutt_perror (_("Unable to create backup file")); - - return (-1); - } - debug_print (1, ("Opening %s\n", oldfile)); - if (!(ifp = safe_fopen (oldfile, "r"))) { - mutt_perror (_("Unable to open backup file for reading")); - - return (-1); - } - debug_print (1, ("Opening %s\n", filename)); - if (!(ofp = safe_fopen (filename, "w"))) { - fclose (ifp); - mutt_perror (_("Unable to open new file for writing")); - - return (-1); - } - if (mx_lock_file (filename, fileno (ofp), 1, 0, 1)) { - fclose (ofp); - fclose (ifp); - mutt_error (_("Unable to lock %s, old file saved as %s"), filename, - oldfile); - return (-1); - } - - if (section) { - while (r != EOF && !done && fgets (buf, sizeof (buf), ifp)) { - r = fputs (buf, ofp); - c = buf; - while (*c && *c != '\n') - c++; - c[0] = 0; /* strip EOL */ - if (!strncmp (buf, "#: ", 3) && !str_casecmp (buf + 3, section)) - done++; - } - if (r != EOF && !done) { - snprintf (buf, sizeof (buf), "#: %s\n", section); - r = fputs (buf, ofp); - } - done = 0; - } - - while (r != EOF && fgets (buf, sizeof (buf), ifp)) { - if (ext) { - c = buf; - while (*c && (*c != '\r') && (*c != '\n')) - c++; - c--; - if (*c != '\\') - ext = 0; - } - else if ((section && !strncmp (buf, "#: ", 3))) { - if (!done && line) { - fputs (line, ofp); - fputc ('\n', ofp); - } - r = fputs (buf, ofp); - done++; - break; - } - else if (key && !strncmp (buf, key, str_len (key)) && - (!*key || buf[str_len (key)] == ' ')) { - c = buf; - ext = 0; - while (*c && (*c != '\r') && (*c != '\n')) - c++; - c--; - if (*c == '\\') - ext = 1; - if (!done && line) { - r = fputs (line, ofp); - if (*key) - r = fputc ('\n', ofp); - done++; - } - } - else { - r = fputs (buf, ofp); - } - } - - while (r != EOF && fgets (buf, sizeof (buf), ifp)) - r = fputs (buf, ofp); - - /* If there wasn't a line to replace, put it on the end of the file */ - if (r != EOF && !done && line) { - fputs (line, ofp); - r = fputc ('\n', ofp); - } - mx_unlock_file (filename, fileno (ofp), 0); - fclose (ofp); - fclose (ifp); - if (r != EOF) { - unlink (oldfile); - return 0; - } - unlink (filename); - mutt_error (_("Cannot write new %s, old file saved as %s"), filename, - oldfile); - return (-1); -} - - void mutt_version (void) { - mutt_message ("Mutt-ng %s (%s) based on Mutt 1.5.9", MUTT_VERSION, ReleaseDate); + mutt_message (mutt_make_version (1)); } void mutt_edit_content_type (HEADER * h, BODY * b, FILE * fp) @@ -962,15 +848,15 @@ void mutt_edit_content_type (HEADER * h, BODY * b, FILE * fp) short type_changed = 0; cp = mutt_get_parameter ("charset", b->parameter); - strfcpy (charset, NONULL (cp), sizeof (charset)); + m_strcpy(charset, sizeof(charset), NONULL(cp)); snprintf (buf, sizeof (buf), "%s/%s", TYPE (b), b->subtype); - strfcpy (obuf, buf, sizeof (obuf)); + m_strcpy(obuf, sizeof(obuf), buf); if (b->parameter) { size_t l; for (p = b->parameter; p; p = p->next) { - l = str_len (buf); + l = m_strlen(buf); rfc822_cat (tmp, sizeof (tmp), p->value, MimeSpecials); snprintf (buf + l, sizeof (buf) - l, "; %s=%s", p->attribute, tmp); @@ -983,7 +869,7 @@ void mutt_edit_content_type (HEADER * h, BODY * b, FILE * fp) /* clean up previous junk */ mutt_free_parameter (&b->parameter); - mem_free (&b->subtype); + p_delete(&b->subtype); mutt_parse_content_type (buf, b);