X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=blobdiff_plain;f=src%2Fcompose.c;h=91a3e6973f3e467280bf368158fd9cc4b209262b;hp=4d239cd382ada011333aa373133ed58609bd3da9;hb=ca911d56dad2f727a3260cd8b60d66a28f438e51;hpb=b3e37c095a19018f36db94d2f47982a0d429ca7f diff --git a/src/compose.c b/src/compose.c index 4d239cd38..91a3e6973 100644 --- a/src/compose.c +++ b/src/compose.c @@ -3509,6 +3509,36 @@ static void compose_write_attach(Compose *compose, FILE *fp) fprintf(fp, "\n--%s--\n", compose->boundary); } +#define QUOTE_IF_REQUIRED(out, str) \ +{ \ + if (*str != '"' && strchr(str, ',')) { \ + gchar *__tmp; \ + gint len; \ + \ + len = strlen(str) + 3; \ + Xalloca(__tmp, len, return -1); \ + g_snprintf(__tmp, len, "\"%s\"", str); \ + out = __tmp; \ + } else { \ + Xstrdup_a(out, str, return -1); \ + } \ +} + +#define PUT_RECIPIENT_HEADER(header, str) \ +{ \ + if (*str != '\0') { \ + Xstrdup_a(str, str, return -1); \ + g_strstrip(str); \ + if (*str != '\0') { \ + compose->to_list = address_list_append \ + (compose->to_list, str); \ + compose_convert_header \ + (buf, sizeof(buf), str, strlen(header) + 2); \ + fprintf(fp, "%s: %s\n", header, buf); \ + } \ + } \ +} + #define IS_IN_CUSTOM_HEADER(header) \ (compose->account->add_customhdr && \ custom_header_find(compose->account->customhdr_list, header) != NULL) @@ -3571,6 +3601,7 @@ static gint compose_write_headers(Compose *compose, FILE *fp, { gchar buf[BUFFSIZE]; gchar *str; + gchar *name; /* struct utsname utsbuf; */ g_return_val_if_fail(fp != NULL, -1); @@ -3590,8 +3621,9 @@ static gint compose_write_headers(Compose *compose, FILE *fp, compose_convert_header (buf, sizeof(buf), compose->account->name, strlen("From: ")); + QUOTE_IF_REQUIRED(name, buf); fprintf(fp, "From: %s <%s>\n", - buf, compose->account->address); + name, compose->account->address); } else fprintf(fp, "From: %s\n", compose->account->address); } @@ -3601,20 +3633,7 @@ static gint compose_write_headers(Compose *compose, FILE *fp, #if 0 /* NEW COMPOSE GUI */ if (compose->use_to) { str = gtk_entry_get_text(GTK_ENTRY(compose->to_entry)); - if (*str != '\0') { - Xstrdup_a(str, str, return -1); - g_strstrip(str); - if (*str != '\0') { - compose->to_list = address_list_append - (compose->to_list, str); - if (!IS_IN_CUSTOM_HEADER("To")) { - compose_convert_header - (buf, sizeof(buf), str, - strlen("To: ")); - fprintf(fp, "To: %s\n", buf); - } - } - } + PUT_RECIPIENT_HEADER("To", str); } #endif @@ -3630,11 +3649,9 @@ static gint compose_write_headers(Compose *compose, FILE *fp, compose->newsgroup_list = newsgroup_list_append(compose->newsgroup_list, str); - if (!IS_IN_CUSTOM_HEADER("Newsgroups")) { - compose_convert_header(buf, sizeof(buf), str, - strlen("Newsgroups: ")); - fprintf(fp, "Newsgroups: %s\n", buf); - } + compose_convert_header(buf, sizeof(buf), str, + strlen("Newsgroups: ")); + fprintf(fp, "Newsgroups: %s\n", buf); } } #endif @@ -3643,20 +3660,7 @@ static gint compose_write_headers(Compose *compose, FILE *fp, #if 0 /* NEW COMPOSE GUI */ if (compose->use_cc) { str = gtk_entry_get_text(GTK_ENTRY(compose->cc_entry)); - if (*str != '\0') { - Xstrdup_a(str, str, return -1); - g_strstrip(str); - if (*str != '\0') { - compose->to_list = address_list_append - (compose->to_list, str); - if (!IS_IN_CUSTOM_HEADER("Cc")) { - compose_convert_header - (buf, sizeof(buf), str, - strlen("Cc: ")); - fprintf(fp, "Cc: %s\n", buf); - } - } - } + PUT_RECIPIENT_HEADER("Cc", str); } #endif /* Bcc */ @@ -3664,17 +3668,7 @@ static gint compose_write_headers(Compose *compose, FILE *fp, #if 0 /* NEW COMPOSE GUI */ if (compose->use_bcc) { str = gtk_entry_get_text(GTK_ENTRY(compose->bcc_entry)); - if (*str != '\0') { - Xstrdup_a(str, str, return -1); - g_strstrip(str); - if (*str != '\0') { - compose->to_list = address_list_append - (compose->to_list, str); - compose_convert_header(buf, sizeof(buf), str, - strlen("Bcc: ")); - fprintf(fp, "Bcc: %s\n", buf); - } - } + PUT_RECIPIENT_HEADER("Bcc", str); } #endif