Here's a patch that should give mutt complete large file support. I'm not really in a position to test it out very much, so I'm asking whoever can to try it out and report back. It's probably a good idea to back up the mailbox you manipulate with it first. Thanks! -b
? .pc ? cscope.out ? quilt Index: attach.c =================================================================== RCS file: /home/roessler/cvs/mutt/attach.c,v retrieving revision 3.19 diff -u -p -r3.19 attach.c --- attach.c 17 Sep 2005 20:46:09 -0000 3.19 +++ attach.c 12 Oct 2005 03:25:17 -0000 @@ -168,7 +168,7 @@ int mutt_compose_attachment (BODY *a) /* Remove headers by copying out data to another file, then * copying the file back */ - fseek (fp, b->offset, 0); + fseeko (fp, b->offset, 0); mutt_mktemp (tempfile); if ((tfp = safe_fopen (tempfile, "w")) == NULL) { @@ -771,7 +771,7 @@ int mutt_save_attachment (FILE *fp, BODY hn->msgno = hdr->msgno; /* required for MH/maildir */ hn->read = 1; - fseek (fp, m->offset, 0); + fseeko (fp, m->offset, 0); if (fgets (buf, sizeof (buf), fp) == NULL) return -1; if (mx_open_mailbox(path, M_APPEND | M_QUIET, &ctx) == NULL) @@ -806,7 +806,7 @@ int mutt_save_attachment (FILE *fp, BODY mutt_perror ("fopen"); return (-1); } - fseek ((s.fpin = fp), m->offset, 0); + fseeko ((s.fpin = fp), m->offset, 0); mutt_decode_attachment (m, &s); if (fclose (s.fpout) != 0) Index: buffy.c =================================================================== RCS file: /home/roessler/cvs/mutt/buffy.c,v retrieving revision 3.13 diff -u -p -r3.13 buffy.c --- buffy.c 17 Sep 2005 20:46:10 -0000 3.13 +++ buffy.c 12 Oct 2005 03:25:18 -0000 @@ -52,14 +52,14 @@ static short BuffyNotify = 0; /* # of un int fseek_last_message (FILE * f) { - long int pos; + LOFF_T pos; char buffer[BUFSIZ + 9]; /* 7 for "\n\nFrom " */ int bytes_read; int i; /* Index into `buffer' for scanning. */ memset (buffer, 0, sizeof(buffer)); fseek (f, 0, SEEK_END); - pos = ftell (f); + pos = ftello (f); /* Set `bytes_read' to the size of the last, probably partial, buffer; 0 < * `bytes_read' <= `BUFSIZ'. */ @@ -72,14 +72,14 @@ int fseek_last_message (FILE * f) { /* we save in the buffer at the end the first 7 chars from the last read */ strncpy (buffer + BUFSIZ, buffer, 5+2); /* 2 == 2 * mutt_strlen(CRLF) */ - fseek (f, pos, SEEK_SET); + fseeko (f, pos, SEEK_SET); bytes_read = fread (buffer, sizeof (char), bytes_read, f); if (bytes_read == -1) return -1; for (i = bytes_read; --i >= 0;) if (!mutt_strncmp (buffer + i, "\n\nFrom ", mutt_strlen ("\n\nFrom "))) { /* found it - go to the beginning of the From */ - fseek (f, pos + i + 2, SEEK_SET); + fseeko (f, pos + i + 2, SEEK_SET); return 0; } bytes_read = BUFSIZ; Index: copy.c =================================================================== RCS file: /home/roessler/cvs/mutt/copy.c,v retrieving revision 3.26 diff -u -p -r3.26 copy.c --- copy.c 29 Sep 2005 23:02:49 -0000 3.26 +++ copy.c 12 Oct 2005 03:25:18 -0000 @@ -41,7 +41,7 @@ static int copy_delete_attach (BODY *b, * below is to avoid creating a HEADER structure in message_handler(). */ int -mutt_copy_hdr (FILE *in, FILE *out, long off_start, long off_end, int flags, +mutt_copy_hdr (FILE *in, FILE *out, LOFF_T off_start, LOFF_T off_end, int flags, const char *prefix) { int from = 0; @@ -56,8 +56,8 @@ mutt_copy_hdr (FILE *in, FILE *out, long char *this_one = NULL; int error; - if (ftell (in) != off_start) - fseek (in, off_start, 0); + if (ftello (in) != off_start) + fseeko (in, off_start, 0); buf[0] = '\n'; buf[1] = 0; @@ -67,7 +67,7 @@ mutt_copy_hdr (FILE *in, FILE *out, long /* Without these flags to complicate things * we can do a more efficient line to line copying */ - while (ftell (in) < off_end) + while (ftello (in) < off_end) { nl = strchr (buf, '\n'); @@ -136,7 +136,7 @@ mutt_copy_hdr (FILE *in, FILE *out, long headers = safe_calloc (hdr_count, sizeof (char *)); /* Read all the headers into the array */ - while (ftell (in) < off_end) + while (ftello (in) < off_end) { nl = strchr (buf, '\n'); @@ -165,10 +165,10 @@ mutt_copy_hdr (FILE *in, FILE *out, long strcat (headers[x], this_one); /* __STRCAT_CHECKED__ */ FREE (&this_one); } - + this_one = NULL; } - + ignore = 1; this_is_from = 0; if (!from && mutt_strncmp ("From ", buf, 5) == 0) @@ -222,7 +222,7 @@ mutt_copy_hdr (FILE *in, FILE *out, long } } } - + ignore = 0; } /* If beginning of header */ @@ -238,7 +238,7 @@ mutt_copy_hdr (FILE *in, FILE *out, long strcat (this_one, buf); /* __STRCAT_CHECKED__ */ } } - } /* while (ftell (in) < off_end) */ + } /* while (ftello (in) < off_end) */ /* Do we have anything pending? -- XXX, same code as in above in the loop. */ if (this_one) @@ -258,7 +258,7 @@ mutt_copy_hdr (FILE *in, FILE *out, long strcat (headers[x], this_one); /* __STRCAT_CHECKED__ */ FREE (&this_one); } - + this_one = NULL; } @@ -571,7 +571,7 @@ _mutt_copy_message (FILE *fpout, FILE *f date[5] = date[mutt_strlen (date) - 1] = '\"'; /* Count the number of lines and bytes to be deleted */ - fseek (fpin, body->offset, SEEK_SET); + fseeko (fpin, body->offset, SEEK_SET); new_lines = hdr->lines - count_delete_lines (fpin, body, &new_length, mutt_strlen (date)); @@ -586,10 +586,10 @@ _mutt_copy_message (FILE *fpout, FILE *f fprintf (fpout, "Lines: %d\n\n", new_lines); if (ferror (fpout) || feof (fpout)) return -1; - new_offset = ftell (fpout); + new_offset = ftello (fpout); /* Copy the body */ - fseek (fpin, body->offset, SEEK_SET); + fseeko (fpin, body->offset, SEEK_SET); if (copy_delete_attach (body, fpin, fpout, date)) return -1; @@ -686,7 +686,7 @@ _mutt_copy_message (FILE *fpout, FILE *f mutt_write_mime_header (cur, fpout); fputc ('\n', fpout); - fseek (fp, cur->offset, 0); + fseeko (fp, cur->offset, 0); if (mutt_copy_bytes (fp, fpout, cur->length) == -1) { fclose (fp); @@ -698,7 +698,7 @@ _mutt_copy_message (FILE *fpout, FILE *f } else { - fseek (fpin, body->offset, 0); + fseeko (fpin, body->offset, 0); if (flags & M_CM_PREFIX) { int c; @@ -767,7 +767,7 @@ _mutt_append_message (CONTEXT *dest, FIL MESSAGE *msg; int r; - fseek(fpin, hdr->offset, 0); + fseeko (fpin, hdr->offset, 0); if (fgets (buf, sizeof (buf), fpin) == NULL) return -1; @@ -814,7 +814,7 @@ static int copy_delete_attach (BODY *b, if (part->deleted || part->parts) { /* Copy till start of this part */ - if (mutt_copy_bytes (fpin, fpout, part->hdr_offset - ftell (fpin))) + if (mutt_copy_bytes (fpin, fpout, part->hdr_offset - ftello (fpin))) return -1; if (part->deleted) @@ -827,11 +827,11 @@ static int copy_delete_attach (BODY *b, return -1; /* Copy the original mime headers */ - if (mutt_copy_bytes (fpin, fpout, part->offset - ftell (fpin))) + if (mutt_copy_bytes (fpin, fpout, part->offset - ftello (fpin))) return -1; /* Skip the deleted body */ - fseek (fpin, part->offset + part->length, SEEK_SET); + fseeko (fpin, part->offset + part->length, SEEK_SET); } else { @@ -842,7 +842,7 @@ static int copy_delete_attach (BODY *b, } /* Copy the last parts */ - if (mutt_copy_bytes (fpin, fpout, b->offset + b->length - ftell (fpin))) + if (mutt_copy_bytes (fpin, fpout, b->offset + b->length - ftello (fpin))) return -1; return 0; Index: copy.h =================================================================== RCS file: /home/roessler/cvs/mutt/copy.h,v retrieving revision 3.9 diff -u -p -r3.9 copy.h --- copy.h 17 Sep 2005 20:46:10 -0000 3.9 +++ copy.h 12 Oct 2005 03:25:18 -0000 @@ -37,7 +37,7 @@ -int mutt_copy_hdr (FILE *, FILE *, long, long, int, const char *); +int mutt_copy_hdr (FILE *, FILE *, LOFF_T, LOFF_T, int, const char *); int mutt_copy_header (FILE *, HEADER *, FILE *, int, const char *); Index: crypt-gpgme.c =================================================================== RCS file: /home/roessler/cvs/mutt/crypt-gpgme.c,v retrieving revision 3.9 diff -u -p -r3.9 crypt-gpgme.c --- crypt-gpgme.c 17 Sep 2005 20:46:10 -0000 3.9 +++ crypt-gpgme.c 12 Oct 2005 03:25:20 -0000 @@ -1621,7 +1621,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin STATE s; FILE *tmpfp=NULL; int is_signed; - long saved_b_offset; + LOFF_T saved_b_offset; size_t saved_b_length; int saved_b_type; @@ -1640,7 +1640,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin saved_b_length = b->length; memset (&s, 0, sizeof (s)); s.fpin = fpin; - fseek (s.fpin, b->offset, 0); + fseeko (s.fpin, b->offset, 0); mutt_mktemp (tempfile); if (!(tmpfp = safe_fopen (tempfile, "w+"))) { @@ -1652,7 +1652,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin s.fpout = tmpfp; mutt_decode_attachment (b, &s); fflush (tmpfp); - b->length = ftell (s.fpout); + b->length = ftello (s.fpout); b->offset = 0; rewind (tmpfp); @@ -1694,7 +1694,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin saved_b_length = bb->length; memset (&s, 0, sizeof (s)); s.fpin = *fpout; - fseek (s.fpin, bb->offset, 0); + fseeko (s.fpin, bb->offset, 0); mutt_mktemp (tempfile); if (!(tmpfp = safe_fopen (tempfile, "w+"))) { @@ -1706,7 +1706,7 @@ int smime_gpgme_decrypt_mime (FILE *fpin s.fpout = tmpfp; mutt_decode_attachment (bb, &s); fflush (tmpfp); - bb->length = ftell (s.fpout); + bb->length = ftello (s.fpout); bb->offset = 0; rewind (tmpfp); fclose (*fpout); @@ -1887,7 +1887,8 @@ int pgp_gpgme_application_handler (BODY int needpass = -1, pgp_keyblock = 0; int clearsign = 0; long start_pos = 0; - long bytes, last_pos, offset; + long bytes; + LOFF_T last_pos, offset; char buf[HUGE_STRING]; FILE *pgpout = NULL; @@ -1907,7 +1908,7 @@ int pgp_gpgme_application_handler (BODY if (!mutt_get_body_charset (body_charset, sizeof (body_charset), m)) strfcpy (body_charset, "iso-8859-1", sizeof body_charset); - fseek (s->fpin, m->offset, 0); + fseeko (s->fpin, m->offset, 0); last_pos = m->offset; for (bytes = m->length; bytes > 0;) @@ -1915,7 +1916,7 @@ int pgp_gpgme_application_handler (BODY if (fgets (buf, sizeof (buf), s->fpin) == NULL) break; - offset = ftell (s->fpin); + offset = ftello (s->fpin); bytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf) */ last_pos = offset; @@ -1954,7 +1955,7 @@ int pgp_gpgme_application_handler (BODY gpgme_data_write (armored_data, buf, strlen (buf)); while (bytes > 0 && fgets (buf, sizeof (buf) - 1, s->fpin) != NULL) { - offset = ftell (s->fpin); + offset = ftello (s->fpin); bytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf)*/ last_pos = offset; Index: crypt.c =================================================================== RCS file: /home/roessler/cvs/mutt/crypt.c,v retrieving revision 3.31 diff -u -p -r3.31 crypt.c --- crypt.c 17 Sep 2005 20:46:10 -0000 3.31 +++ crypt.c 12 Oct 2005 03:25:20 -0000 @@ -504,7 +504,7 @@ int crypt_write_signed(BODY *a, STATE *s return -1; } - fseek (s->fpin, a->hdr_offset, 0); + fseeko (s->fpin, a->hdr_offset, 0); bytes = a->length + a->offset - a->hdr_offset; hadcr = 0; while (bytes > 0) Index: edit.c =================================================================== RCS file: /home/roessler/cvs/mutt/edit.c,v retrieving revision 3.8 diff -u -p -r3.8 edit.c --- edit.c 24 Sep 2005 20:03:04 -0000 3.8 +++ edit.c 12 Oct 2005 03:25:20 -0000 @@ -61,7 +61,7 @@ static char* EditorHelp2 = N_("\ . on a line by itself ends input\n"); static char ** -be_snarf_data (FILE *f, char **buf, int *bufmax, int *buflen, int offset, +be_snarf_data (FILE *f, char **buf, int *bufmax, int *buflen, LOFF_T offset, int bytes, int prefix) { char tmp[HUGE_STRING]; @@ -77,7 +77,7 @@ be_snarf_data (FILE *f, char **buf, int tmplen = sizeof (tmp) - tmplen; } - fseek (f, offset, 0); + fseeko (f, offset, 0); while (bytes > 0) { if (fgets (p, tmplen - 1, f) == NULL) break; Index: handler.c =================================================================== RCS file: /home/roessler/cvs/mutt/handler.c,v retrieving revision 3.22 diff -u -p -r3.22 handler.c --- handler.c 17 Sep 2005 20:46:10 -0000 3.22 +++ handler.c 12 Oct 2005 03:25:21 -0000 @@ -1340,7 +1340,7 @@ static int alternative_handler (BODY *a, { if (s->flags & M_DISPLAY && !option (OPTWEED)) { - fseek (s->fpin, choice->hdr_offset, 0); + fseeko (s->fpin, choice->hdr_offset, 0); mutt_copy_bytes(s->fpin, s->fpout, choice->offset-choice->hdr_offset); } mutt_body_handler (choice, s); @@ -1364,16 +1364,16 @@ int message_handler (BODY *a, STATE *s) { struct stat st; BODY *b; - long off_start; + LOFF_T off_start; int rc = 0; - off_start = ftell (s->fpin); + off_start = ftello (s->fpin); if (a->encoding == ENCBASE64 || a->encoding == ENCQUOTEDPRINTABLE || a->encoding == ENCUUENCODED) { fstat (fileno (s->fpin), &st); b = mutt_new_body (); - b->length = (long) st.st_size; + b->length = (LOFF_T) st.st_size; b->parts = mutt_parse_messageRFC822 (s->fpin, b); } else @@ -1482,7 +1482,7 @@ int multipart_handler (BODY *a, STATE *s TYPE (p), p->subtype, ENCODING (p->encoding), length); if (!option (OPTWEED)) { - fseek (s->fpin, p->hdr_offset, 0); + fseeko (s->fpin, p->hdr_offset, 0); mutt_copy_bytes(s->fpin, s->fpout, p->offset-p->hdr_offset); } else @@ -1697,7 +1697,7 @@ static int external_body_handler (BODY * state_printf (s, _("[-- name: %s --]\n"), b->parts->filename); } - mutt_copy_hdr (s->fpin, s->fpout, ftell (s->fpin), b->parts->offset, + mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset, (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) | CH_DECODE , NULL); } @@ -1712,7 +1712,7 @@ static int external_body_handler (BODY * state_attach_puts (_("[-- and the indicated external source has --]\n" "[-- expired. --]\n"), s); - mutt_copy_hdr(s->fpin, s->fpout, ftell (s->fpin), b->parts->offset, + mutt_copy_hdr(s->fpin, s->fpout, ftello (s->fpin), b->parts->offset, (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) | CH_DECODE, NULL); } @@ -1729,7 +1729,7 @@ static int external_body_handler (BODY * state_printf (s, _("[-- and the indicated access-type %s is unsupported --]\n"), access_type); - mutt_copy_hdr (s->fpin, s->fpout, ftell (s->fpin), b->parts->offset, + mutt_copy_hdr (s->fpin, s->fpout, ftello (s->fpin), b->parts->offset, (option (OPTWEED) ? (CH_WEED | CH_REORDER) : 0) | CH_DECODE , NULL); } @@ -1750,7 +1750,7 @@ void mutt_decode_attachment (BODY *b, ST cd = mutt_iconv_open (Charset, charset, M_ICONV_HOOK_FROM); } - fseek (s->fpin, b->offset, 0); + fseeko (s->fpin, b->offset, 0); switch (b->encoding) { case ENCQUOTEDPRINTABLE: @@ -1867,7 +1867,7 @@ int mutt_body_handler (BODY *b, STATE *s if (plaintext || handler) { - fseek (s->fpin, b->offset, 0); + fseeko (s->fpin, b->offset, 0); /* see if we need to decode this part before processing it */ if (b->encoding == ENCBASE64 || b->encoding == ENCQUOTEDPRINTABLE || @@ -1912,7 +1912,7 @@ int mutt_body_handler (BODY *b, STATE *s if (decode) { - b->length = ftell (s->fpout); + b->length = ftello (s->fpout); b->offset = 0; fclose (s->fpout); Index: mbox.c =================================================================== RCS file: /home/roessler/cvs/mutt/mbox.c,v retrieving revision 3.10 diff -u -p -r3.10 mbox.c --- mbox.c 24 Sep 2005 19:45:23 -0000 3.10 +++ mbox.c 12 Oct 2005 03:25:22 -0000 @@ -41,10 +41,10 @@ struct m_update_t { short valid; - long hdr; - long body; + LOFF_T hdr; + LOFF_T body; long lines; - long length; + LOFF_T length; }; /* parameters: @@ -147,7 +147,7 @@ int mmdf_parse_mailbox (CONTEXT *ctx) if (!is_from (buf, return_path, sizeof (return_path), &t)) { - if (fseek (ctx->fp, loc, SEEK_SET) != 0) + if (fseeko (ctx->fp, loc, SEEK_SET) != 0) { dprint (1, (debugfile, "mmdf_parse_mailbox: fseek() failed\n")); mutt_error _("Mailbox is corrupt!"); @@ -167,11 +167,11 @@ int mmdf_parse_mailbox (CONTEXT *ctx) if (0 < tmploc && tmploc < ctx->size) { - if (fseek (ctx->fp, tmploc, SEEK_SET) != 0 || + if (fseeko (ctx->fp, tmploc, SEEK_SET) != 0 || fgets (buf, sizeof (buf) - 1, ctx->fp) == NULL || mutt_strcmp (MMDF_SEP, buf) != 0) { - if (fseek (ctx->fp, loc, SEEK_SET) != 0) + if (fseeko (ctx->fp, loc, SEEK_SET) != 0) dprint (1, (debugfile, "mmdf_parse_mailbox: fseek() failed\n")); hdr->content->length = -1; } @@ -319,7 +319,7 @@ int mbox_parse_mailbox (CONTEXT *ctx) fgets (buf, sizeof (buf), ctx->fp) == NULL || mutt_strncmp ("From ", buf, 5) != 0) { - dprint (1, (debugfile, "mbox_parse_mailbox: bad content-length in message %d (cl=%ld)\n", curhdr->index, curhdr->content->length)); + dprint (1, (debugfile, "mbox_parse_mailbox: bad content-length in message %d (cl=" OFF_T_FMT ")\n", curhdr->index, curhdr->content->length)); dprint (1, (debugfile, "\tLINE: %s", buf)); if (fseeko (ctx->fp, loc, SEEK_SET) != 0) /* nope, return the previous position */ { @@ -601,14 +601,14 @@ int mbox_check_mailbox (CONTEXT *ctx, in * see the message separator at *exactly* what used to be the end of the * folder. */ - if (fseek (ctx->fp, ctx->size, SEEK_SET) != 0) + if (fseeko (ctx->fp, ctx->size, SEEK_SET) != 0) dprint (1, (debugfile, "mbox_check_mailbox: fseek() failed\n")); if (fgets (buffer, sizeof (buffer), ctx->fp) != NULL) { if ((ctx->magic == M_MBOX && mutt_strncmp ("From ", buffer, 5) == 0) || (ctx->magic == M_MMDF && mutt_strcmp (MMDF_SEP, buffer) == 0)) { - if (fseek (ctx->fp, ctx->size, SEEK_SET) != 0) + if (fseeko (ctx->fp, ctx->size, SEEK_SET) != 0) dprint (1, (debugfile, "mbox_check_mailbox: fseek() failed\n")); if (ctx->magic == M_MBOX) mbox_parse_mailbox (ctx); @@ -675,7 +675,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int int rc = -1; int need_sort = 0; /* flag to resort mailbox if new mail arrives */ int first = -1; /* first message to be written */ - long offset; /* location in mailbox to write changed messages */ + LOFF_T offset; /* location in mailbox to write changed messages */ struct stat statbuf; struct utimbuf utimebuf; struct m_update_t *newOffset = NULL; @@ -808,7 +808,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int * temporary file only contains saved message which are located after * `offset' in the real mailbox */ - newOffset[i - first].hdr = ftell (fp) + offset; + newOffset[i - first].hdr = ftello (fp) + offset; if (mutt_copy_message (fp, ctx, ctx->hdrs[i], M_CM_UPDATE, CH_FROM | CH_UPDATE | CH_UPDATE_LEN) == -1) { @@ -824,7 +824,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int * we just flush the in memory cache so that the message will be reparsed * if the user accesses it later. */ - newOffset[i - first].body = ftell (fp) - ctx->hdrs[i]->content->length + offset; + newOffset[i - first].body = ftello (fp) - ctx->hdrs[i]->content->length + offset; mutt_free_body (&ctx->hdrs[i]->content->parts); switch(ctx->magic) @@ -880,7 +880,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int return (-1); } - if (fseek (ctx->fp, offset, SEEK_SET) != 0 || /* seek the append location */ + if (fseeko (ctx->fp, offset, SEEK_SET) != 0 || /* seek the append location */ /* do a sanity check to make sure the mailbox looks ok */ fgets (buf, sizeof (buf), ctx->fp) == NULL || (ctx->magic == M_MBOX && mutt_strncmp ("From ", buf, 5) != 0) || @@ -892,7 +892,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int } else { - if (fseek (ctx->fp, offset, SEEK_SET) != 0) /* return to proper offset */ + if (fseeko (ctx->fp, offset, SEEK_SET) != 0) /* return to proper offset */ { i = -1; dprint (1, (debugfile, "mbox_sync_mailbox: fseek() failed\n")); @@ -910,7 +910,7 @@ int mbox_sync_mailbox (CONTEXT *ctx, int } if (i == 0) { - ctx->size = ftell (ctx->fp); /* update the size of the mailbox */ + ctx->size = ftello (ctx->fp); /* update the size of the mailbox */ ftruncate (fileno (ctx->fp), ctx->size); } } Index: mutt.h =================================================================== RCS file: /home/roessler/cvs/mutt/mutt.h,v retrieving revision 3.60 diff -u -p -r3.60 mutt.h --- mutt.h 4 Oct 2005 06:05:39 -0000 3.60 +++ mutt.h 12 Oct 2005 03:25:22 -0000 @@ -627,8 +627,8 @@ typedef struct body * where we need to send the headers of the * attachment */ - long offset; /* offset where the actual data begins */ - LOFF_T length; /* length (in bytes) of attachment */ + LOFF_T offset; /* offset where the actual data begins */ + LOFF_T length; /* length (in bytes) of attachment */ char *filename; /* when sending a message, this is the file * to which this structure refers */ @@ -740,7 +740,7 @@ typedef struct header time_t date_sent; /* time when the message was sent (UTC) */ time_t received; /* time when the message was placed in the mailbox */ - long offset; /* where in the stream does this message begin? */ + LOFF_T offset; /* where in the stream does this message begin? */ int lines; /* how many lines in the body of this message? */ int index; /* the absolute (unsorted) message number */ int msgno; /* number displayed to the user */ Index: pager.c =================================================================== RCS file: /home/roessler/cvs/mutt/pager.c,v retrieving revision 3.29 diff -u -p -r3.29 pager.c --- pager.c 4 Oct 2005 05:24:00 -0000 3.29 +++ pager.c 12 Oct 2005 03:25:23 -0000 @@ -113,7 +113,7 @@ struct syntax_t struct line_t { - long offset; + LOFF_T offset; short type; short continuation; short chunks; @@ -999,7 +999,7 @@ trim_incomplete_mbyte(unsigned char *buf } static int -fill_buffer (FILE *f, long *last_pos, long offset, unsigned char *buf, +fill_buffer (FILE *f, LOFF_T *last_pos, LOFF_T offset, unsigned char *buf, unsigned char *fmt, size_t blen, int *buf_ready) { unsigned char *p; @@ -1009,13 +1009,13 @@ fill_buffer (FILE *f, long *last_pos, lo { buf[blen - 1] = 0; if (offset != *last_pos) - fseek (f, offset, 0); + fseeko (f, offset, 0); if (fgets ((char *) buf, blen - 1, f) == NULL) { fmt[0] = 0; return (-1); } - *last_pos = ftell (f); + *last_pos = ftello (f); b_read = (int) (*last_pos - offset); *buf_ready = 1; @@ -1232,7 +1232,7 @@ static int format_line (struct line_t ** */ static int -display_line (FILE *f, long *last_pos, struct line_t **lineInfo, int n, +display_line (FILE *f, LOFF_T *last_pos, struct line_t **lineInfo, int n, int *last, int *max, int flags, struct q_class_t **QuoteList, int *q_level, int *force_redraw, regex_t *SearchRE) { @@ -1519,7 +1519,7 @@ mutt_pager (const char *banner, const ch int r = -1; int redraw = REDRAW_FULL; FILE *fp = NULL; - long last_pos = 0, last_offset = 0; + LOFF_T last_pos = 0, last_offset = 0; int old_smart_wrap, old_markers; struct stat sb; regex_t SearchRE; Index: parse.c =================================================================== RCS file: /home/roessler/cvs/mutt/parse.c,v retrieving revision 3.20 diff -u -p -r3.20 parse.c --- parse.c 4 Oct 2005 06:05:39 -0000 3.20 +++ parse.c 12 Oct 2005 03:25:24 -0000 @@ -431,7 +431,7 @@ BODY *mutt_read_mime_header (FILE *fp, i char *line = safe_malloc (LONG_STRING); size_t linelen = LONG_STRING; - p->hdr_offset = ftell(fp); + p->hdr_offset = ftello (fp); p->encoding = ENC7BIT; /* default from RFC1521 */ p->type = digest ? TYPEMESSAGE : TYPETEXT; @@ -488,7 +488,7 @@ BODY *mutt_read_mime_header (FILE *fp, i } #endif } - p->offset = ftell (fp); /* Mark the start of the real data */ + p->offset = ftello (fp); /* Mark the start of the real data */ if (p->type == TYPETEXT && !p->subtype) p->subtype = safe_strdup ("plain"); else if (p->type == TYPEMESSAGE && !p->subtype) @@ -513,7 +513,7 @@ void mutt_parse_part (FILE *fp, BODY *b) #endif bound = mutt_get_parameter ("boundary", b->parameter); - fseek (fp, b->offset, SEEK_SET); + fseeko (fp, b->offset, SEEK_SET); b->parts = mutt_parse_multipart (fp, bound, b->offset + b->length, ascii_strcasecmp ("digest", b->subtype) == 0); @@ -522,7 +522,7 @@ void mutt_parse_part (FILE *fp, BODY *b) case TYPEMESSAGE: if (b->subtype) { - fseek (fp, b->offset, SEEK_SET); + fseeko (fp, b->offset, SEEK_SET); if (mutt_is_message_type(b->type, b->subtype)) b->parts = mutt_parse_messageRFC822 (fp, b); else if (ascii_strcasecmp (b->subtype, "external-body") == 0) @@ -560,7 +560,7 @@ BODY *mutt_parse_messageRFC822 (FILE *fp BODY *msg; parent->hdr = mutt_new_header (); - parent->hdr->offset = ftell (fp); + parent->hdr->offset = ftello (fp); parent->hdr->env = mutt_read_rfc822_header (fp, parent->hdr, 0, 0); msg = parent->hdr->content; @@ -590,7 +590,7 @@ BODY *mutt_parse_messageRFC822 (FILE *fp * digest 1 if reading a multipart/digest, 0 otherwise */ -BODY *mutt_parse_multipart (FILE *fp, const char *boundary, long end_off, int digest) +BODY *mutt_parse_multipart (FILE *fp, const char *boundary, LOFF_T end_off, int digest) { #ifdef SUN_ATTACHMENT int lines; @@ -608,7 +608,7 @@ BODY *mutt_parse_multipart (FILE *fp, co } blen = mutt_strlen (boundary); - while (ftell (fp) < end_off && fgets (buffer, LONG_STRING, fp) != NULL) + while (ftello (fp) < end_off && fgets (buffer, LONG_STRING, fp) != NULL) { len = mutt_strlen (buffer); @@ -619,9 +619,9 @@ BODY *mutt_parse_multipart (FILE *fp, co { if (last) { - last->length = ftell (fp) - last->offset - len - 1 - crlf; + last->length = ftello (fp) - last->offset - len - 1 - crlf; if (last->parts && last->parts->length == 0) - last->parts->length = ftell (fp) - last->parts->offset - len - 1 - crlf; + last->parts->length = ftello (fp) - last->parts->offset - len - 1 - crlf; /* if the body is empty, we can end up with a -1 length */ if (last->length < 0) last->length = 0; @@ -645,7 +645,7 @@ BODY *mutt_parse_multipart (FILE *fp, co if (mutt_get_parameter ("content-lines", new->parameter)) { for (lines = atoi(mutt_get_parameter ("content-lines", new->parameter)); lines; lines-- ) - if (ftell (fp) >= end_off || fgets (buffer, LONG_STRING, fp) == NULL) + if (ftello (fp) >= end_off || fgets (buffer, LONG_STRING, fp) == NULL) break; } #endif @@ -1304,7 +1304,7 @@ ENVELOPE *mutt_read_rfc822_header (FILE LIST *last = NULL; char *line = safe_malloc (LONG_STRING); char *p; - long loc; + LOFF_T loc; int matched; size_t linelen = LONG_STRING; char buf[LONG_STRING+1]; @@ -1326,7 +1326,7 @@ ENVELOPE *mutt_read_rfc822_header (FILE } } - while ((loc = ftell (f)), + while ((loc = ftello (f)), *(line = mutt_read_rfc822_line (f, line, &linelen)) != 0) { matched = 0; @@ -1347,7 +1347,7 @@ ENVELOPE *mutt_read_rfc822_header (FILE continue; } - fseek (f, loc, 0); + fseeko (f, loc, 0); break; /* end of header */ } @@ -1409,7 +1409,7 @@ ENVELOPE *mutt_read_rfc822_header (FILE if (hdr) { hdr->content->hdr_offset = hdr->offset; - hdr->content->offset = ftell (f); + hdr->content->offset = ftello (f); /* do RFC2047 decoding */ rfc2047_decode_adrlist (e->from); Index: pattern.c =================================================================== RCS file: /home/roessler/cvs/mutt/pattern.c,v retrieving revision 3.25 diff -u -p -r3.25 pattern.c --- pattern.c 4 Oct 2005 06:05:39 -0000 3.25 +++ pattern.c 12 Oct 2005 03:25:25 -0000 @@ -190,7 +190,7 @@ msg_search (CONTEXT *ctx, pattern_t* pat return (0); } - fseek (msg->fp, h->offset, 0); + fseeko (msg->fp, h->offset, 0); mutt_body_handler (h->content, &s); } @@ -206,13 +206,13 @@ msg_search (CONTEXT *ctx, pattern_t* pat fp = msg->fp; if (pat->op != M_BODY) { - fseek (fp, h->offset, 0); + fseeko (fp, h->offset, 0); lng = h->content->offset - h->offset; } if (pat->op != M_HEADER) { if (pat->op == M_BODY) - fseek (fp, h->content->offset, 0); + fseeko (fp, h->content->offset, 0); lng += h->content->length; } } Index: pgp.c =================================================================== RCS file: /home/roessler/cvs/mutt/pgp.c,v retrieving revision 3.59 diff -u -p -r3.59 pgp.c --- pgp.c 10 Oct 2005 18:26:31 -0000 3.59 +++ pgp.c 12 Oct 2005 03:25:25 -0000 @@ -247,7 +247,8 @@ int pgp_application_pgp_handler (BODY *m int clearsign = 0, rv, rc; int c = 1; /* silence GCC warning */ long start_pos = 0; - long bytes, last_pos, offset; + long bytes; + LOFF_T last_pos, offset; char buf[HUGE_STRING]; char outfile[_POSIX_PATH_MAX]; char tmpfname[_POSIX_PATH_MAX]; @@ -263,7 +264,7 @@ int pgp_application_pgp_handler (BODY *m rc = 0; /* silence false compiler warning if (s->flags & M_DISPLAY) */ - fseek (s->fpin, m->offset, 0); + fseeko (s->fpin, m->offset, 0); last_pos = m->offset; for (bytes = m->length; bytes > 0;) @@ -271,7 +272,7 @@ int pgp_application_pgp_handler (BODY *m if (fgets (buf, sizeof (buf), s->fpin) == NULL) break; - offset = ftell (s->fpin); + offset = ftello (s->fpin); bytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf) */ last_pos = offset; @@ -315,7 +316,7 @@ int pgp_application_pgp_handler (BODY *m fputs (buf, tmpfp); while (bytes > 0 && fgets (buf, sizeof (buf) - 1, s->fpin) != NULL) { - offset = ftell (s->fpin); + offset = ftello (s->fpin); bytes -= (offset - last_pos); /* don't rely on mutt_strlen(buf) */ last_pos = offset; @@ -591,7 +592,7 @@ int pgp_verify_one (BODY *sigbdy, STATE return -1; } - fseek (s->fpin, sigbdy->offset, 0); + fseeko (s->fpin, sigbdy->offset, 0); mutt_copy_bytes (s->fpin, fp, sigbdy->length); fclose (fp); @@ -787,7 +788,7 @@ BODY *pgp_decrypt_part (BODY *a, STATE * * the temporary file. */ - fseek (s->fpin, a->offset, 0); + fseeko (s->fpin, a->offset, 0); mutt_copy_bytes (s->fpin, pgptmp, a->length); fclose (pgptmp); Index: pgpmicalg.c =================================================================== RCS file: /home/roessler/cvs/mutt/pgpmicalg.c,v retrieving revision 3.4 diff -u -p -r3.4 pgpmicalg.c --- pgpmicalg.c 17 Sep 2005 20:46:11 -0000 3.4 +++ pgpmicalg.c 12 Oct 2005 03:25:25 -0000 @@ -68,8 +68,8 @@ static const char *pgp_hash_to_micalg (s static void pgp_dearmor (FILE *in, FILE *out) { char line[HUGE_STRING]; - long start; - long end; + LOFF_T start; + LOFF_T end; char *r; STATE state; @@ -105,7 +105,7 @@ static void pgp_dearmor (FILE *in, FILE } /* actual data starts here */ - start = ftell (in); + start = ftello (in); /* find the checksum */ @@ -120,13 +120,13 @@ static void pgp_dearmor (FILE *in, FILE return; } - if ((end = ftell (in) - strlen (line)) < start) + if ((end = ftello (in) - strlen (line)) < start) { dprint (1, (debugfile, "pgp_dearmor: end < start???\n")); return; } - if (fseek (in, start, SEEK_SET) == -1) + if (fseeko (in, start, SEEK_SET) == -1) { dprint (1, (debugfile, "pgp_dearmor: Can't seekto start.\n")); return; Index: pgppacket.c =================================================================== RCS file: /home/roessler/cvs/mutt/pgppacket.c,v retrieving revision 3.4 diff -u -p -r3.4 pgppacket.c --- pgppacket.c 17 Sep 2005 20:46:11 -0000 3.4 +++ pgppacket.c 12 Oct 2005 03:25:25 -0000 @@ -68,12 +68,12 @@ static int read_material (size_t materia unsigned char *pgp_read_packet (FILE * fp, size_t * len) { size_t used = 0; - long startpos; + LOFF_T startpos; unsigned char ctb; unsigned char b; size_t material; - startpos = ftell (fp); + startpos = ftello (fp); if (!plen) { @@ -216,7 +216,7 @@ unsigned char *pgp_read_packet (FILE * f bail: - fseek (fp, startpos, SEEK_SET); + fseeko (fp, startpos, SEEK_SET); return NULL; } Index: pgppubring.c =================================================================== RCS file: /home/roessler/cvs/mutt/pgppubring.c,v retrieving revision 3.13 diff -u -p -r3.13 pgppubring.c --- pgppubring.c 17 Sep 2005 20:46:11 -0000 3.13 +++ pgppubring.c 12 Oct 2005 03:25:26 -0000 @@ -63,8 +63,8 @@ extern int optind; #define FGETPOS(fp,pos) fgetpos((fp),&(pos)) #define FSETPOS(fp,pos) fsetpos((fp),&(pos)) #else -#define FGETPOS(fp,pos) pos=ftell((fp)); -#define FSETPOS(fp,pos) fseek((fp),(pos),SEEK_SET) +#define FGETPOS(fp,pos) pos=ftello((fp)); +#define FSETPOS(fp,pos) fseeko((fp),(pos),SEEK_SET) #endif @@ -595,7 +595,7 @@ static pgp_key_t pgp_parse_keyblock (FIL #ifdef HAVE_FGETPOS fpos_t pos; #else - long pos; + LOFF_T pos; #endif pgp_key_t root = NULL; @@ -752,7 +752,7 @@ static void pgpring_find_candidates (cha #ifdef HAVE_FGETPOS fpos_t pos, keypos; #else - long pos, keypos; + LOFF_T pos, keypos; #endif unsigned char *buff = NULL; Index: pop.c =================================================================== RCS file: /home/roessler/cvs/mutt/pop.c,v retrieving revision 3.8 diff -u -p -r3.8 pop.c --- pop.c 17 Sep 2005 20:46:11 -0000 3.8 +++ pop.c 12 Oct 2005 03:25:26 -0000 @@ -439,7 +439,7 @@ int pop_fetch_message (MESSAGE* msg, CON fgets (buf, sizeof (buf), msg->fp); } - h->content->length = ftell (msg->fp) - h->content->offset; + h->content->length = ftello (msg->fp) - h->content->offset; /* This needs to be done in case this is a multipart message */ if (!WithCrypto) Index: postpone.c =================================================================== RCS file: /home/roessler/cvs/mutt/postpone.c,v retrieving revision 3.14 diff -u -p -r3.14 postpone.c --- postpone.c 17 Sep 2005 20:46:11 -0000 3.14 +++ postpone.c 12 Oct 2005 03:25:26 -0000 @@ -534,7 +534,7 @@ int mutt_prepare_template (FILE *fp, CON /* parse the message header and MIME structure */ - fseek (fp, hdr->offset, 0); + fseeko (fp, hdr->offset, 0); newhdr->offset = hdr->offset; newhdr->env = mutt_read_rfc822_header (fp, newhdr, 1, weed); newhdr->content->length = hdr->content->length; Index: protos.h =================================================================== RCS file: /home/roessler/cvs/mutt/protos.h,v retrieving revision 3.39 diff -u -p -r3.39 protos.h --- protos.h 4 Oct 2005 06:05:39 -0000 3.39 +++ protos.h 12 Oct 2005 03:25:26 -0000 @@ -93,7 +93,7 @@ BODY *mutt_make_message_attach (CONTEXT BODY *mutt_remove_multipart (BODY *); BODY *mutt_make_multipart (BODY *); BODY *mutt_new_body (void); -BODY *mutt_parse_multipart (FILE *, const char *, long, int); +BODY *mutt_parse_multipart (FILE *, const char *, LOFF_T, int); BODY *mutt_parse_messageRFC822 (FILE *, BODY *); BODY *mutt_read_mime_header (FILE *, int); Index: sendlib.c =================================================================== RCS file: /home/roessler/cvs/mutt/sendlib.c,v retrieving revision 3.36 diff -u -p -r3.36 sendlib.c --- sendlib.c 29 Sep 2005 23:02:49 -0000 3.36 +++ sendlib.c 12 Oct 2005 03:25:27 -0000 @@ -1049,7 +1049,7 @@ void mutt_message_to_7bit (BODY *a, FILE goto cleanup; } - fseek (fpin, a->offset, 0); + fseeko (fpin, a->offset, 0); a->parts = mutt_parse_messageRFC822 (fpin, a); transform_to_7bit (a->parts, fpin); @@ -2167,7 +2167,7 @@ static int _mutt_bounce_message (FILE *f if (!option (OPTBOUNCEDELIVERED)) ch_flags |= CH_WEED_DELIVERED; - fseek (fp, h->offset, 0); + fseeko (fp, h->offset, 0); fprintf (f, "Resent-From: %s", resent_from); fprintf (f, "\nResent-%s", mutt_make_date (date, sizeof(date))); fprintf (f, "Resent-Message-ID: %s\n", mutt_gen_msgid()); @@ -2428,7 +2428,7 @@ int mutt_write_fcc (const char *path, HE rewind (tempfp); while (fgets (sasha, sizeof (sasha), tempfp) != NULL) lines++; - fprintf (msg->fp, "Content-Length: " OFF_T_FMT "\n", (LOFF_T) ftell (tempfp)); + fprintf (msg->fp, "Content-Length: " OFF_T_FMT "\n", ftello (tempfp)); fprintf (msg->fp, "Lines: %d\n\n", lines); /* copy the body and clean up */ Index: smime.c =================================================================== RCS file: /home/roessler/cvs/mutt/smime.c,v retrieving revision 3.45 diff -u -p -r3.45 smime.c --- smime.c 6 Oct 2005 05:13:55 -0000 3.45 +++ smime.c 12 Oct 2005 03:25:28 -0000 @@ -1577,7 +1577,7 @@ int smime_verify_one (BODY *sigbdy, STAT mutt_decode_attachment (sigbdy, s); - sigbdy->length = ftell (s->fpout); + sigbdy->length = ftello (s->fpout); sigbdy->offset = 0; fclose (s->fpout); @@ -1702,7 +1702,7 @@ static BODY *smime_handle_entity (BODY * return NULL; } - fseek (s->fpin, m->offset, 0); + fseeko (s->fpin, m->offset, 0); last_pos = m->offset; mutt_copy_bytes (s->fpin, tmpfp, m->length); @@ -1880,7 +1880,7 @@ int smime_decrypt_mime (FILE *fpin, FILE memset (&s, 0, sizeof (s)); s.fpin = fpin; - fseek (s.fpin, b->offset, 0); + fseeko (s.fpin, b->offset, 0); mutt_mktemp (tempfile); if ((tmpfp = safe_fopen (tempfile, "w+")) == NULL) @@ -1893,7 +1893,7 @@ int smime_decrypt_mime (FILE *fpin, FILE s.fpout = tmpfp; mutt_decode_attachment (b, &s); fflush (tmpfp); - b->length = ftell (s.fpout); + b->length = ftello (s.fpout); b->offset = 0; rewind (tmpfp); s.fpin = tmpfp;
Attachment:
pgpq7qfJePPEo.pgp
Description: PGP signature