From f1c39bad859ddb6be46f4aad0b762bcd9614c18d Mon Sep 17 00:00:00 2001 From: hiro Date: Mon, 25 Oct 2010 09:36:19 +0000 Subject: libsylph/procmime.[ch]: added procmime_get_part_fp_fp(). git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2692 ee746299-78ed-0310-b773-934348b2243d --- libsylph/procmime.c | 22 ++++++++++++++++++++++ libsylph/procmime.h | 3 +++ 2 files changed, 25 insertions(+) (limited to 'libsylph') diff --git a/libsylph/procmime.c b/libsylph/procmime.c index dfbda477..6815baa5 100644 --- a/libsylph/procmime.c +++ b/libsylph/procmime.c @@ -1152,6 +1152,28 @@ gint procmime_get_part_fp(const gchar *outfile, FILE *infp, MimeInfo *mimeinfo) return 0; } +FILE *procmime_get_part_fp_fp(FILE *outfp, FILE *infp, MimeInfo *mimeinfo) +{ + gchar buf[BUFFSIZE]; + + g_return_val_if_fail(infp != NULL, -1); + g_return_val_if_fail(mimeinfo != NULL, -1); + + if (fseek(infp, mimeinfo->fpos, SEEK_SET) < 0) { + FILE_OP_ERROR("procmime_get_part_fp()", "fseek"); + return -1; + } + + while (fgets(buf, sizeof(buf), infp) != NULL) + if (buf[0] == '\r' || buf[0] == '\n') break; + + if ((outfp = procmime_decode_content(outfp, infp, mimeinfo)) == NULL) { + return -1; + } + + return outfp; +} + gint procmime_get_all_parts(const gchar *dir, const gchar *infile, MimeInfo *mimeinfo) { diff --git a/libsylph/procmime.h b/libsylph/procmime.h index 4970f7c7..a439ed1e 100644 --- a/libsylph/procmime.h +++ b/libsylph/procmime.h @@ -173,6 +173,9 @@ gint procmime_get_part (const gchar *outfile, gint procmime_get_part_fp (const gchar *outfile, FILE *infp, MimeInfo *mimeinfo); +FILE *procmime_get_part_fp_fp (FILE *outfp, + FILE *infp, + MimeInfo *mimeinfo); gint procmime_get_all_parts (const gchar *dir, const gchar *infile, MimeInfo *mimeinfo); -- cgit v1.2.3