X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=copy.c;h=b265b66f69fa6bb8cfd5b2c81546f45441a21624;hp=7dbbb97762ed8b206b0dbbb3c5ad26ae9e76a0b0;hb=eed5352e46df93f8921d2e6dfdc95b027bad6e1e;hpb=c8ceef3ed6424dcb5a6ec835e7d8d9cc00595372 diff --git a/copy.c b/copy.c index 7dbbb97..b265b66 100644 --- a/copy.c +++ b/copy.c @@ -11,8 +11,11 @@ # include "config.h" #endif +#include +#include +#include + #include "mutt.h" -#include "ascii.h" #include "handler.h" #include "mx.h" #include "copy.h" @@ -21,8 +24,6 @@ #include "mutt_crypt.h" #include "mutt_idna.h" -#include "lib/mem.h" -#include "lib/str.h" #include "lib/debug.h" #include @@ -38,7 +39,7 @@ static int copy_delete_attach (BODY * b, FILE * fpin, FILE * fpout, * below is to avoid creating a HEADER structure in message_handler(). */ int -mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, +mutt_copy_hdr (FILE* in, FILE* out, off_t off_start, off_t off_end, int flags, const char *prefix) { int from = 0; int this_is_from; @@ -126,7 +127,7 @@ mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, debug_print (1, ("WEED is %s\n", (flags & CH_WEED) ? "Set" : "Not")); - headers = mem_calloc (hdr_count, sizeof (char *)); + headers = p_new(char *, hdr_count); /* Read all the headers into the array */ while (ftello (in) < off_end) { @@ -154,10 +155,9 @@ mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, if (!headers[x]) headers[x] = this_one; else { - mem_realloc (&headers[x], str_len (headers[x]) + - str_len (this_one) + sizeof (char)); - strcat (headers[x], this_one); /* __STRCAT_CHECKED__ */ - mem_free (&this_one); + p_realloc(&headers[x], m_strlen(headers[x]) + m_strlen(this_one) + 1); + strcat(headers[x], this_one); /* __STRCAT_CHECKED__ */ + p_delete(&this_one); } this_one = NULL; @@ -206,7 +206,7 @@ mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, /* Find x -- the array entry where this header is to be saved */ if (flags & CH_REORDER) { for (t = HeaderOrderList, x = 0; (t); t = t->next, x++) { - if (!ascii_strncasecmp (buf, t->data, str_len (t->data))) { + if (!ascii_strncasecmp (buf, t->data, m_strlen(t->data))) { debug_print (2, ("Reorder: %s matches %s\n", t->data, buf)); break; } @@ -219,19 +219,17 @@ mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, if (!ignore) { debug_print (2, ("Reorder: x = %d; hdr_count = %d\n", x, hdr_count)); if (!this_one) - this_one = str_dup (buf); + this_one = m_strdup(buf); /* we do want to see all lines if this header doesn't feature * abbreviations (curline is 0), $max_display_recips is 0 and * while the number hasn't reached $max_display_recips yet */ else if (curline == 0 || MaxDispRecips == 0 || ++curline <= MaxDispRecips) { - mem_realloc (&this_one, - str_len (this_one) + str_len (buf) + - sizeof (char)); + p_realloc(&this_one, m_strlen(this_one) + m_strlen(buf) + 1); strcat (this_one, buf); /* __STRCAT_CHECKED__ */ /* only for the first line which doesn't exeeds * $max_display_recips: abbreviate it */ } else if (curline == MaxDispRecips+1) { - mem_realloc (&this_one, str_len (this_one) + 5); + p_realloc(&this_one, m_strlen(this_one) + 5); strcat (this_one, " ..."); } } @@ -247,10 +245,9 @@ mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, if (!headers[x]) headers[x] = this_one; else { - mem_realloc (&headers[x], str_len (headers[x]) + - str_len (this_one) + sizeof (char)); + p_realloc(&headers[x], m_strlen(headers[x]) + m_strlen(this_one) + 1); strcat (headers[x], this_one); /* __STRCAT_CHECKED__ */ - mem_free (&this_one); + p_delete(&this_one); } this_one = NULL; @@ -303,8 +300,8 @@ mutt_copy_hdr (FILE* in, FILE* out, LOFF_T off_start, LOFF_T off_end, /* Free in a separate loop to be sure that all headers are freed * in case of error. */ for (x = 0; x < hdr_count; x++) - mem_free (&headers[x]); - mem_free (&headers); + p_delete(&headers[x]); + p_delete(&headers); if (error) return (-1); @@ -390,7 +387,7 @@ mutt_copy_header (FILE * in, HEADER * h, FILE * out, int flags, /* Mutt stores references in reverse order, thus we create * a reordered refs list that we can put in the headers */ for (; listp; listp = listp->next, refs = t) { - t = (LIST *) mem_malloc (sizeof (LIST)); + t = p_new(LIST, 1); t->data = listp->data; t->next = refs; } @@ -401,7 +398,7 @@ mutt_copy_header (FILE * in, HEADER * h, FILE * out, int flags, /* clearing refs from memory */ for (t = refs; refs; refs = t->next, t = refs) - mem_free (&refs); + p_delete(&refs); if (fputc ('\n', out) == EOF) return (-1); @@ -445,7 +442,7 @@ mutt_copy_header (FILE * in, HEADER * h, FILE * out, int flags, } if (flags & CH_UPDATE_LEN && (flags & CH_NOLEN) == 0) { - fprintf (out, "Content-Length: " OFF_T_FMT "\n", h->content->length); + fprintf (out, "Content-Length: %zd\n", h->content->length); if (h->lines != 0 || h->content->length == 0) fprintf (out, "Lines: %d\n", h->lines); } @@ -464,7 +461,7 @@ mutt_copy_header (FILE * in, HEADER * h, FILE * out, int flags, } /* Count the number of lines and bytes to be deleted in this body*/ -static int count_delete_lines (FILE * fp, BODY * b, LOFF_T *length, +static int count_delete_lines (FILE * fp, BODY * b, off_t *length, size_t datelen) { int dellines = 0; @@ -517,7 +514,7 @@ _mutt_copy_message (FILE * fpout, FILE * fpin, HEADER * hdr, BODY * body, { char prefix[SHORT_STRING]; STATE s; - LOFF_T new_offset = -1; + off_t new_offset = -1; int rc = 0; if (flags & M_CM_PREFIX) { @@ -534,22 +531,22 @@ _mutt_copy_message (FILE * fpout, FILE * fpin, HEADER * hdr, BODY * body, else if (hdr->attach_del && (chflags & CH_UPDATE_LEN)) { int new_lines; - LOFF_T new_length = body->length; + off_t new_length = body->length; char date[SHORT_STRING]; mutt_make_date (date, sizeof (date)); - date[5] = date[str_len (date) - 1] = '\"'; + date[5] = date[m_strlen(date) - 1] = '\"'; /* Count the number of lines and bytes to be deleted */ fseeko (fpin, body->offset, SEEK_SET); new_lines = hdr->lines - - count_delete_lines (fpin, body, &new_length, str_len (date)); + count_delete_lines (fpin, body, &new_length, m_strlen(date)); /* Copy the headers */ if (mutt_copy_header (fpin, hdr, fpout, chflags | CH_NOLEN | CH_NONEWLINE, NULL)) return -1; - fprintf (fpout, "Content-Length: " OFF_T_FMT "\n", new_length); + fprintf (fpout, "Content-Length: %zd\n", new_length); if (new_lines <= 0) new_lines = 0; else @@ -565,7 +562,7 @@ _mutt_copy_message (FILE * fpout, FILE * fpin, HEADER * hdr, BODY * body, #ifdef DEBUG { - LOFF_T fail = ((ftello (fpout) - new_offset) - new_length); + off_t fail = ((ftello (fpout) - new_offset) - new_length); if (fail) { mutt_error ("The length calculation was wrong by %ld bytes", fail); @@ -606,7 +603,7 @@ _mutt_copy_message (FILE * fpout, FILE * fpin, HEADER * hdr, BODY * body, if (flags & M_CM_DECODE) { /* now make a text/plain version of the message */ - memset (&s, 0, sizeof (STATE)); + p_clear(&s, 1); s.fpin = fpin; s.fpout = fpout; if (flags & M_CM_PREFIX) @@ -778,7 +775,7 @@ static int copy_delete_attach (BODY * b, FILE * fpin, FILE * fpout, if (part->deleted) { fprintf (fpout, "Content-Type: message/external-body; access-type=x-mutt-deleted;\n" - "\texpiration=%s; length=" OFF_T_FMT "\n" + "\texpiration=%s; length=%zd\n" "\n", date + 5, part->length); if (ferror (fpout)) return -1; @@ -821,11 +818,11 @@ static void format_address_header (char **h, ADDRESS * a) int l, linelen, buflen, count; - linelen = str_len (*h); + linelen = m_strlen(*h); buflen = linelen + 3; - mem_realloc (h, buflen); + p_realloc(h, buflen); for (count = 0; a; a = a->next, count++) { ADDRESS *tmp = a->next; @@ -834,7 +831,7 @@ static void format_address_header (char **h, ADDRESS * a) rfc822_write_address (buf, sizeof (buf), a, 0); a->next = tmp; - l = str_len (buf); + l = m_strlen(buf); if (count && linelen + l > 74) { strcpy (cbuf, "\n\t"); /* __STRCPY_CHECKED__ */ linelen = l + 8; @@ -852,8 +849,8 @@ static void format_address_header (char **h, ADDRESS * a) strcpy (c2buf, ","); /* __STRCPY_CHECKED__ */ } - buflen += l + str_len (cbuf) + str_len (c2buf); - mem_realloc (h, buflen); + buflen += l + m_strlen(cbuf) + m_strlen(c2buf); + p_realloc(h, buflen); strcat (*h, cbuf); /* __STRCAT_CHECKED__ */ strcat (*h, buf); /* __STRCAT_CHECKED__ */ strcat (*h, c2buf); /* __STRCAT_CHECKED__ */ @@ -936,14 +933,12 @@ static int address_header_decode (char **h) mutt_addrlist_to_local (a); rfc2047_decode_adrlist (a); - *h = mem_calloc (1, l + 2); - - strfcpy (*h, s, l + 1); + *h = p_dupstr(s, l + 1); format_address_header (h, a); rfc822_free_address (&a); - mem_free (&s); + p_delete(&s); return 1; }