[evolution-ews] Function for embedding the attachment id in the attachment uri (move file to a new location)



commit 7cb787acd4a063564c4e5be9487d86abbb6edaa5
Author: Or Goshen <orx goshen intel com>
Date:   Sun Jul 17 11:07:41 2011 +0300

    Function for embedding the attachment id in the attachment uri (move file to a new location)

 src/server/e-ews-item.c |   25 +++++++++++++++++++++++++
 src/server/e-ews-item.h |    1 +
 2 files changed, 26 insertions(+), 0 deletions(-)
---
diff --git a/src/server/e-ews-item.c b/src/server/e-ews-item.c
index b3295ee..48d0ed6 100644
--- a/src/server/e-ews-item.c
+++ b/src/server/e-ews-item.c
@@ -1273,6 +1273,31 @@ e_ews_item_get_attachments_ids(EEwsItem *item)
 }
 
 gchar *
+e_ews_embed_attachment_id_in_uri (const gchar *olduri, const char *attach_id)
+{
+	gchar *tmpdir, *tmpfilename, filename[350], dirname[350], *name;
+
+	tmpfilename = g_filename_from_uri (olduri, NULL, NULL);
+
+	name = g_strrstr (tmpfilename, "/")+1;
+	tmpdir = g_strndup(tmpfilename, g_strrstr (tmpfilename, "/") - tmpfilename);
+
+	snprintf (dirname, 350, "%s/%s", tmpdir, attach_id);
+	if (g_mkdir (dirname, 0775) == -1) {
+		g_warning("Failed create directory to place file in [%s]: %s\n", dirname, strerror (errno));
+	}
+
+	snprintf(filename, 350, "%s/%s", dirname, name);
+	if (g_rename (tmpfilename, filename) != 0) {
+		g_warning("Failed to move attachment cache file [%s -> %s]: %s\n", tmpfilename, filename, strerror (errno));
+	}
+
+	g_free(tmpdir);
+
+	return g_filename_to_uri(filename, NULL, NULL);
+}
+
+gchar *
 e_ews_dump_file_attachment_from_soap_parameter (ESoapParameter *param, const gchar *cache)
 {
 	ESoapParameter *subparam;
diff --git a/src/server/e-ews-item.h b/src/server/e-ews-item.h
index cf3be10..aefc17f 100644
--- a/src/server/e-ews-item.h
+++ b/src/server/e-ews-item.h
@@ -149,6 +149,7 @@ EwsMailbox *
 
 const GSList *	e_ews_item_get_modified_occurrences
 						(EEwsItem *item);
+gchar *		e_ews_embed_attachment_id_in_uri (const gchar *olduri, const char *attach_id);
 GSList *	e_ews_item_get_attachments_ids
 						(EEwsItem *item);
 gchar *



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]