summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2015-11-06 22:38:40 +0100
committerMilan Crha <mcrha@redhat.com>2015-11-06 22:40:46 +0100
commit8d094ef96a89957d353beaa66f0cbaa04cfbfedd (patch)
treea47a8c46b6b45f7888b89467da502c5dea4e8bde
parent06df660a08f1cb456ed92a8ce963aaf6fbf9c942 (diff)
downloadevolution-data-server-8d094ef96a89957d353beaa66f0cbaa04cfbfedd.tar.gz
[Maildir] Change flag separator in file name for Win32
The ':' is not allowed in the file name, use '!' instead.
-rw-r--r--camel/providers/local/camel-maildir-folder.c2
-rw-r--r--camel/providers/local/camel-maildir-summary.c16
-rw-r--r--camel/providers/local/camel-maildir-summary.h8
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;