X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=rfc3676.c;h=51b64508c5f0265ef3341afa4050b633087d1b00;hp=650fc5001903456135f982e7aaa02b01cdb8d64c;hb=23e6291cb5d5b4cd2008403d8b628007fd75ff23;hpb=2f15afad1abb96ced1cb433fed38c90d686ffa0e diff --git a/rfc3676.c b/rfc3676.c index 650fc50..51b6450 100644 --- a/rfc3676.c +++ b/rfc3676.c @@ -20,18 +20,19 @@ #include #include +#include +#include +#include +#include +#include + +#include + #include "mutt.h" -#include "mutt_curses.h" -#include "ascii.h" #include "handler.h" #include "state.h" #include "lib.h" -#include "lib/mem.h" -#include "lib/intl.h" -#include "lib/str.h" -#include "lib/debug.h" - #define FLOWED_MAX 77 static int get_quote_level (char *line) @@ -45,7 +46,7 @@ static int get_quote_level (char *line) static void print_flowed_line (char *line, STATE * s, int ql) { int width; char *pos, *oldpos; - int len = str_len (line); + int len = m_strlen(line); int i; if (MaxLineLength > 0) { @@ -67,7 +68,7 @@ static void print_flowed_line (char *line, STATE * s, int ql) { width = COLS; } - if (str_len (line) == 0) { + if (m_strlen(line) == 0) { if (!(s->flags & M_REPLYING) || option (OPTQUOTEEMPTY)) { if (s->prefix) state_puts(s->prefix,s); @@ -87,35 +88,26 @@ static void print_flowed_line (char *line, STATE * s, int ql) { * the end of the string w/ pos */ if (pos < line + len) { if (*pos == ' ') { - debug_print (4, ("f=f: found space directly at width\n")); *pos = '\0'; ++pos; } else { char *save = pos; - debug_print (4, ("f=f: need to search for space\n")); while (pos >= oldpos && *pos != ' ') { --pos; } if (pos < oldpos) { - debug_print (4, ("f=f: no space found while searching " - "to left; going right\n")); pos = save; while (pos < line + len && *pos && *pos != ' ') { ++pos; } - debug_print (4, ("f=f: found space at pos %d\n", pos-line)); - } else { - debug_print (4, ("f=f: found space while searching to left\n")); } *pos = '\0'; ++pos; } } - else { - debug_print (4, ("f=f: line completely fits on screen\n")); - } + if (s->prefix) state_puts (s->prefix, s); @@ -136,24 +128,25 @@ static void print_flowed_line (char *line, STATE * s, int ql) { int rfc3676_handler (BODY * a, STATE * s) { int bytes = a->length; char buf[LONG_STRING]; - char *curline = str_dup (""); + char *curline = p_new(char, 1); char *t = NULL; unsigned int curline_len = 1, quotelevel = 0, newql = 0; int buf_off, buf_len; int delsp = 0, fixed = 0; + *curline='\0'; + /* respect DelSP of RfC3676 only with f=f parts */ if ((t = (char*) mutt_get_parameter ("delsp", a->parameter))) { - delsp = str_len (t) == 3 && ascii_strncasecmp (t, "yes", 3) == 0; + delsp = m_strlen(t) == 3 && ascii_strncasecmp (t, "yes", 3) == 0; t = NULL; } - debug_print (2, ("f=f: DelSp: %s\n", delsp ? "yes" : "no")); while (bytes > 0 && fgets (buf, sizeof (buf), s->fpin)) { - buf_len = str_len (buf); + buf_len = m_strlen(buf); bytes -= buf_len; newql = get_quote_level (buf); @@ -173,7 +166,7 @@ int rfc3676_handler (BODY * a, STATE * s) { * possibly a change in quoting level. But that's better than not * displaying it at all. */ - if ((t = strrchr (buf, '\n')) || (t = strrchr (buf, '\r'))) { + if ((t = strrchr (buf, '\r')) || (t = strrchr (buf, '\n'))) { *t = '\0'; buf_len = t - buf; } @@ -208,7 +201,7 @@ int rfc3676_handler (BODY * a, STATE * s) { curline_len = 1; } - mem_realloc (&curline, curline_len + buf_len - buf_off); + p_realloc(&curline, curline_len + buf_len - buf_off); strcpy (curline + curline_len - 1, buf + buf_off); curline_len += buf_len - buf_off; @@ -220,16 +213,11 @@ int rfc3676_handler (BODY * a, STATE * s) { } } - mem_free (&curline); + p_delete(&curline); return (0); } void rfc3676_space_stuff (HEADER* hdr) { -#if DEBUG - int lc = 0; - size_t len = 0; - unsigned char c = '\0'; -#endif FILE* in = NULL, *out = NULL; char buf[LONG_STRING]; char tmpfile[_POSIX_PATH_MAX]; @@ -237,7 +225,6 @@ void rfc3676_space_stuff (HEADER* hdr) { if (!hdr || !hdr->content || !hdr->content->filename) return; - debug_print (2, ("f=f: postprocess %s\n", hdr->content->filename)); if ((in = safe_fopen (hdr->content->filename, "r")) == NULL) return; mutt_mktemp (tmpfile); @@ -249,18 +236,6 @@ void rfc3676_space_stuff (HEADER* hdr) { while (fgets (buf, sizeof (buf), in)) { if (ascii_strncmp ("From ", buf, 4) == 0 || buf[0] == ' ') { fputc (' ', out); -#if DEBUG - lc++; - len = str_len (buf); - if (len > 0) { - c = buf[len-1]; - buf[len-1] = '\0'; - } - debug_print (4, ("f=f: line %d needs space-stuffing: '%s'\n", - lc, buf)); - if (len > 0) - buf[len-1] = c; -#endif } fputs (buf, out); } @@ -268,5 +243,5 @@ void rfc3676_space_stuff (HEADER* hdr) { fclose (out); mutt_set_mtime (hdr->content->filename, tmpfile); unlink (hdr->content->filename); - str_replace (&hdr->content->filename, tmpfile); + m_strreplace(&hdr->content->filename, tmpfile); }