/*
* Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2007 Colin Leroy <colin@colino.net> and
+ * Copyright (C) 1999-2009 Colin Leroy <colin@colino.net> and
* the Claws Mail team
*
* This program is free software; you can redistribute it and/or modify
static gchar *get_part_as_string(MimeInfo *mimeinfo)
{
gchar *textdata = NULL;
- gchar *real_data = NULL;
+ gchar *filename = NULL;
+ FILE *fp;
+
g_return_val_if_fail(mimeinfo != NULL, 0);
procmime_decode_content(mimeinfo);
+
if (mimeinfo->content == MIMECONTENT_MEM)
textdata = g_strdup(mimeinfo->data.mem);
else {
- /* equals file_read_to_str but without conversion */
- FILE *fp = fopen(mimeinfo->data.filename, "r");
- if (!fp)
+ filename = procmime_get_tmp_file_name(mimeinfo);
+ if (procmime_get_part(filename, mimeinfo) < 0) {
+ printf("error dumping file\n");
+ return NULL;
+ }
+ fp = g_fopen(filename,"rb");
+ if (!fp) {
+ printf("error reading file\n");
return NULL;
+ }
textdata = fp_read_noconv(fp);
fclose(fp);
+ g_unlink(filename);
+ g_free(filename);
}
if (!g_utf8_validate(textdata, -1, NULL)) {
}
}
- if (textdata && mimeinfo->offset &&
- mimeinfo->offset+ mimeinfo->length <= g_utf8_strlen(textdata, -1)) {
- real_data = g_strdup(textdata + mimeinfo->offset);
- g_free(textdata);
- textdata = real_data;
- } else if (textdata && mimeinfo->offset &&
- mimeinfo->offset+ mimeinfo->length <= strlen(textdata)) {
- real_data = g_strdup(textdata + mimeinfo->offset);
- real_data[mimeinfo->length] = '\0';
- g_free(textdata);
- textdata = real_data;
- } else if (textdata && mimeinfo->offset) {
- debug_print("got data shorter than what it should be\n");
- }
return textdata;
}
return decinfo;
}
-static gboolean pgpinline_sign(MimeInfo *mimeinfo, PrefsAccount *account)
+static gboolean pgpinline_sign(MimeInfo *mimeinfo, PrefsAccount *account, const gchar *from_addr)
{
MimeInfo *msgcontent;
gchar *textstr, *tmp;
gpgme_set_textmode(ctx, 1);
gpgme_set_armor(ctx, 1);
- if (!sgpgme_setup_signers(ctx, account)) {
+ if (!sgpgme_setup_signers(ctx, account, from_addr)) {
gpgme_release(ctx);
return FALSE;
}