From 8d094ef96a89957d353beaa66f0cbaa04cfbfedd Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 6 Nov 2015 22:38:40 +0100 Subject: [Maildir] Change flag separator in file name for Win32 The ':' is not allowed in the file name, use '!' instead. --- camel/providers/local/camel-maildir-folder.c | 2 +- camel/providers/local/camel-maildir-summary.c | 16 ++++++++-------- camel/providers/local/camel-maildir-summary.h | 8 ++++++++ 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/camel/providers/local/camel-maildir-folder.c b/camel/providers/local/camel-maildir-folder.c index 14580ae29..31ca0d0f5 100644 --- a/camel/providers/local/camel-maildir-folder.c +++ b/camel/providers/local/camel-maildir-folder.c @@ -132,7 +132,7 @@ maildir_folder_get_filename (CamelFolder *folder, gint uid_len = strlen (uid); while (filename = g_dir_read_name (dir), filename) { - if (g_str_has_prefix (filename, uid) && (filename[uid_len] == '\0' || filename[uid_len] == ':')) { + if (g_str_has_prefix (filename, uid) && (filename[uid_len] == '\0' || filename[uid_len] == CAMEL_MAILDIR_FLAG_SEP)) { camel_maildir_info_set_filename (mdi, g_strdup (filename)); break; } diff --git a/camel/providers/local/camel-maildir-summary.c b/camel/providers/local/camel-maildir-summary.c index 8e977e5aa..b93a65dea 100644 --- a/camel/providers/local/camel-maildir-summary.c +++ b/camel/providers/local/camel-maildir-summary.c @@ -217,8 +217,8 @@ gchar *camel_maildir_summary_info_to_name (const CamelMaildirMessageInfo *info) gint i; uid = camel_message_info_uid (info); - buf = g_alloca (strlen (uid) + strlen (":2,") + G_N_ELEMENTS (flagbits) + 1); - p = buf + sprintf (buf, "%s:2,", uid); + buf = g_alloca (strlen (uid) + strlen (CAMEL_MAILDIR_FLAG_SEP_S "2,") + G_N_ELEMENTS (flagbits) + 1); + p = buf + sprintf (buf, "%s" CAMEL_MAILDIR_FLAG_SEP_S "2,", uid); for (i = 0; i < G_N_ELEMENTS (flagbits); i++) { if (info->info.info.flags & flagbits[i].flagbit) *p++ = flagbits[i].flag; @@ -237,7 +237,7 @@ gint camel_maildir_summary_name_to_info (CamelMaildirMessageInfo *info, const gc /*guint32 all = 0;*/ /* all flags */ gint i; - p = strstr (name, ":2,"); + p = strstr (name, CAMEL_MAILDIR_FLAG_SEP_S "2,"); if (p) { p+=3; @@ -414,7 +414,7 @@ static gchar *maildir_summary_next_uid_string (CamelFolderSummary *s) if (mds->priv->current_file) { gchar *cln; - cln = strchr (mds->priv->current_file, ':'); + cln = strchr (mds->priv->current_file, CAMEL_MAILDIR_FLAG_SEP); if (cln) return g_strndup (mds->priv->current_file, cln - mds->priv->current_file); else @@ -487,7 +487,7 @@ maildir_summary_load (CamelLocalSummary *cls, continue; /* map the filename -> uid */ - uid = strchr (d->d_name, ':'); + uid = strchr (d->d_name, CAMEL_MAILDIR_FLAG_SEP); if (uid) { gint len = uid - d->d_name; uid = camel_mempool_alloc (pool, len + 1); @@ -660,7 +660,7 @@ maildir_summary_check (CamelLocalSummary *cls, continue; /* map the filename -> uid */ - uid = strchr (d->d_name, ':'); + uid = strchr (d->d_name, CAMEL_MAILDIR_FLAG_SEP); if (uid) uid = g_strndup (d->d_name, uid - d->d_name); else @@ -741,7 +741,7 @@ maildir_summary_check (CamelLocalSummary *cls, } else { gchar *nm; newname = g_strdup (name); - nm =strrchr (newname, ':'); + nm =strrchr (newname, CAMEL_MAILDIR_FLAG_SEP); if (nm) *nm = '\0'; destname = newname; @@ -749,7 +749,7 @@ maildir_summary_check (CamelLocalSummary *cls, /* copy this to the destination folder, use 'standard' semantics for maildir info field */ src = g_strdup_printf ("%s/%s", new, name); - destfilename = g_strdup_printf ("%s:2,", destname); + destfilename = g_strdup_printf ("%s" CAMEL_MAILDIR_FLAG_SEP_S "2,", destname); dest = g_strdup_printf ("%s/%s", cur, destfilename); /* FIXME: This should probably use link/unlink */ diff --git a/camel/providers/local/camel-maildir-summary.h b/camel/providers/local/camel-maildir-summary.h index a20a04ee7..77cbdd390 100644 --- a/camel/providers/local/camel-maildir-summary.h +++ b/camel/providers/local/camel-maildir-summary.h @@ -40,6 +40,14 @@ (G_TYPE_INSTANCE_GET_CLASS \ ((obj), CAMEL_TYPE_MAILDIR_SUMMARY, CamelMaildirSummaryClass)) +#ifdef G_OS_WIN32 +#define CAMEL_MAILDIR_FLAG_SEP '!' +#define CAMEL_MAILDIR_FLAG_SEP_S "!" +#else +#define CAMEL_MAILDIR_FLAG_SEP ':' +#define CAMEL_MAILDIR_FLAG_SEP_S ":" +#endif + G_BEGIN_DECLS typedef struct _CamelMaildirSummary CamelMaildirSummary; -- cgit v1.2.1