( cvs diff -u -r 1.382.2.55 -r 1.382.2.56 src/compose.c; cvs diff -u -r 1.96.2.23 -r 1.96.2.24 src/textview.c; ) > 0.9.12cvs133.patchset
( cvs diff -u -r 1.52.2.7 -r 1.52.2.8 src/prefs_folder_item.c; ) > 0.9.12cvs132.2.patchset
( cvs diff -u -r 1.61.2.13 -r 1.61.2.14 src/account.c; cvs diff -u -r 1.60.2.12 -r 1.60.2.13 src/addressbook.c; cvs diff -u -r 1.5.10.4 -r 1.5.10.5 src/addrgather.c; cvs diff -u -r 1.6 -r 1.7 src/addrharvest.c; cvs diff -u -r 1.65.2.16 -r 1.65.2.17 src/codeconv.c; cvs diff -u -r 1.382.2.56 -r 1.382.2.57 src/compose.c; cvs diff -u -r 1.5.2.3 -r 1.5.2.4 src/customheader.c; cvs diff -u -r 1.14.2.3 -r 1.14.2.4 src/editaddress.c; cvs diff -u -r 1.11.2.3 -r 1.11.2.4 src/editgroup.c; cvs diff -u -r 1.3.2.1 -r 1.3.2.2 src/enriched.c; cvs diff -u -r 1.1.4.4 -r 1.1.4.5 src/expldifdlg.c; cvs diff -u -r 1.5.2.1 -r 1.5.2.2 src/exporthtml.c; cvs diff -u -r 1.1.4.1 -r 1.1.4.2 src/exportldif.c; cvs diff -u -r 1.213.2.18 -r 1.213.2.19 src/folder.c; cvs diff -u -r 1.26.2.5 -r 1.26.2.6 src/foldersel.c; cvs diff -u -r 1.207.2.19 -r 1.207.2.20 src/folderview.c; cvs diff -u -r 1.14.2.5 -r 1.14.2.6 src/grouplistdialog.c; cvs diff -u -r 1.12.2.2 -r 1.12.2.3 src/html.c; cvs diff -u -r 1.179.2.9 -r 1.179.2.10 src/imap.c; cvs diff -u -r 1.18.2.3 -r 1.18.2.4 src/jpilot.c; cvs diff -u -r 1.4.2.2 -r 1.4.2.3 src/ldapserver.c; cvs diff -u -r 1.12 -r 1.13 src/ldif.c; cvs diff -u -r 1.83.2.22 -r 1.83.2.23 src/mimeview.c; cvs diff -u -r 1.101.2.6 -r 1.101.2.7 src/news.c; cvs diff -u -r 1.2.2.1 -r 1.2.2.2 src/news_gtk.c; cvs diff -u -r 1.56.2.26 -r 1.56.2.27 src/pop.c; cvs diff -u -r 1.16.2.4 -r 1.16.2.5 src/prefs_display_header.c; cvs diff -u -r 1.10.2.7 -r 1.10.2.8 src/prefs_gtk.c; cvs diff -u -r 1.1.2.5 -r 1.1.2.6 src/prefs_msg_colors.c; cvs diff -u -r 1.30.2.4 -r 1.30.2.5 src/prefs_toolbar.c; cvs diff -u -r 1.47.2.10 -r 1.47.2.11 src/procheader.c; cvs diff -u -r 1.49.2.11 -r 1.49.2.12 src/procmime.c; cvs diff -u -r 1.395.2.36 -r 1.395.2.37 src/summaryview.c; cvs diff -u -r 1.96.2.24 -r 1.96.2.25 src/textview.c; cvs diff -u -r 1.43.2.10 -r 1.43.2.11 src/toolbar.c; cvs diff -u -r 1.14.2.1 -r 1.14.2.2 src/vcard.c; cvs diff -u -r 1.1 -r 1.2 src/common/mgutils.c; cvs diff -u -r 1.6.2.3 -r 1.6.2.4 src/common/nntp.c; cvs diff -u -r 1.11.2.4 -r 1.11.2.5 src/common/smtp.c; cvs diff -u -r 1.2.4.1 -r 1.2.4.2 src/common/template.c; cvs diff -u -r 1.36.2.10 -r 1.36.2.11 src/common/utils.c; cvs diff -u -r 1.1 -r 1.2 src/common/xmlprops.c; cvs diff -u -r 1.1.2.6 -r 1.1.2.7 src/plugins/pgpmime/pgpmime.c; cvs diff -u -r 1.1.2.2 -r 1.1.2.3 src/plugins/pgpmime/select-keys.c; cvs diff -u -r 1.1.2.4 -r 1.1.2.5 src/plugins/pgpmime/sgpgme.c; ) > 0.9.12cvs132.3.patchset
+( cvs diff -u -r 1.654.2.243 -r 1.654.2.244 configure.ac; cvs diff -u -r 1.115.2.21 -r 1.115.2.22 src/main.c; cvs diff -u -r 1.49.2.12 -r 1.49.2.13 src/procmime.c; cvs diff -u -r 1.1.2.7 -r 1.1.2.8 src/plugins/pgpmime/pgpmime.c; ) > 0.9.12cvs134.1.patchset
if (!getenv("GPG_AGENT_INFO")) {
info.c = ctx;
gpgme_set_passphrase_cb (ctx, gpgmegtk_passphrase_cb, &info);
- }
+ }
if (gpgme_op_sign(ctx, gpgtext, gpgsig, GPGME_SIG_MODE_DETACH) != GPGME_No_Error)
return FALSE;
return mimeinfo;
}
+typedef enum {
+ ENC_AS_TOKEN,
+ ENC_AS_QUOTED_STRING,
+ ENC_AS_ENCODED_WORD,
+} EncodeAs;
+
static void write_parameters(gpointer key, gpointer value, gpointer user_data)
{
gchar *param = key;
- gchar *val = value;
+ gchar *val = value, *valpos;
FILE *fp = user_data;
+ EncodeAs encas = ENC_AS_TOKEN;
- /* FIXME: better encoding of parameters */
fprintf(fp, "; %s=", param);
- if (strchr(val, ' ') != NULL)
+
+ for (valpos = val; *valpos != 0; valpos++) {
+ if (!IS_ASCII(*valpos)) {
+ encas = ENC_AS_ENCODED_WORD;
+ break;
+ }
+
+ /* CTLs */
+ if (((*valpos >= 0) && (*valpos < 037)) || (*valpos == 0177)) {
+ encas = ENC_AS_QUOTED_STRING;
+ continue;
+ }
+
+ /* tspecials + SPACE */
+ switch (*valpos) {
+ case ' ':
+ case '(':
+ case ')':
+ case '<':
+ case '>':
+ case '@':
+ case ',':
+ case ';':
+ case ':':
+ case '\\':
+ case '"':
+ case '/':
+ case '[':
+ case ']':
+ case '?':
+ case '=':
+ encas = ENC_AS_QUOTED_STRING;
+ continue;
+ }
+ }
+
+ switch (encas) {
+ case ENC_AS_TOKEN:
+ fprintf(fp, "%s", val);
+ break;
+
+ case ENC_AS_QUOTED_STRING:
fprintf(fp, "\"%s\"", val);
- else
+ break;
+
+ case ENC_AS_ENCODED_WORD:
+ /* FIXME: not yet handled */
fprintf(fp, "%s", val);
+ break;
+ }
}
void procmime_write_mime_header(MimeInfo *mimeinfo, FILE *fp)