[evolution-data-server] Add functions to get Evo/EDS base directories.



commit e60ee56f34745a885ab52ce1929b06cb0dbbbe4f
Author: Matthew Barnes <mbarnes redhat com>
Date:   Thu Jul 8 16:23:58 2010 -0400

    Add functions to get Evo/EDS base directories.
    
    Use these functions instead of hard-coding "$HOME/.evolution".  This
    sets the stage for complying with the XDG Base Directory Specification.
    http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
    
    e_get_user_cache_dir()   returns (for now)  "$HOME/.evolution/cache"
    e_get_user_config_dir()  returns (for now)  "$HOME/.evolution"
    e_get_user_data_dir()    returns (for now)  "$HOME/.evolution"

 .../libedataserver/libedataserver-sections.txt     |    3 +
 docs/reference/libedataserver/tmpl/e-util.sgml     |   27 ++++++++
 libedataserver/e-data-server-util.c                |   67 ++++++++++++++++++++
 libedataserver/e-data-server-util.h                |    4 +
 4 files changed, 101 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/libedataserver/libedataserver-sections.txt b/docs/reference/libedataserver/libedataserver-sections.txt
index ca57bab..50fdcc4 100644
--- a/docs/reference/libedataserver/libedataserver-sections.txt
+++ b/docs/reference/libedataserver/libedataserver-sections.txt
@@ -387,6 +387,9 @@ e_uri_to_string
 <SECTION>
 <FILE>e-util</FILE>
 tm
+e_get_user_cache_dir
+e_get_user_config_dir
+e_get_user_data_dir
 e_util_strstrcase
 e_util_unicode_get_utf8
 e_util_utf8_strstrcase
diff --git a/docs/reference/libedataserver/tmpl/e-util.sgml b/docs/reference/libedataserver/tmpl/e-util.sgml
index 95ef744..d8de18e 100644
--- a/docs/reference/libedataserver/tmpl/e-util.sgml
+++ b/docs/reference/libedataserver/tmpl/e-util.sgml
@@ -26,6 +26,33 @@ Miscellaneous utility functions for evolution-data-server.
 </para>
 
 
+<!-- ##### FUNCTION e_get_user_cache_dir ##### -->
+<para>
+
+</para>
+
+ void: 
+ Returns: 
+
+
+<!-- ##### FUNCTION e_get_user_config_dir ##### -->
+<para>
+
+</para>
+
+ void: 
+ Returns: 
+
+
+<!-- ##### FUNCTION e_get_user_data_dir ##### -->
+<para>
+
+</para>
+
+ void: 
+ Returns: 
+
+
 <!-- ##### FUNCTION e_util_strstrcase ##### -->
 <para>
 
diff --git a/libedataserver/e-data-server-util.c b/libedataserver/e-data-server-util.c
index 48cda11..a03221d 100644
--- a/libedataserver/e-data-server-util.c
+++ b/libedataserver/e-data-server-util.c
@@ -35,6 +35,73 @@
 #include "e-data-server-util.h"
 
 /**
+ * e_get_user_cache_dir:
+ *
+ * Returns a base directory in which to store user-specific,
+ * non-essential cached data for Evolution or Evolution-Data-Server.
+ *
+ * The returned string is owned by libedataserver and must not be
+ * modified or freed.
+ *
+ * Returns: base directory for user-specific, non-essential data
+ **/
+const gchar *
+e_get_user_cache_dir (void)
+{
+	static gchar *dirname = NULL;
+
+	if (G_UNLIKELY (dirname == NULL)) {
+		const gchar *data_dir = e_get_user_data_dir ();
+		dirname = g_build_filename (data_dir, "cache", NULL);
+		g_mkdir_with_parents (dirname, 0700);
+	}
+
+	return dirname;
+}
+
+/**
+ * e_get_user_config_dir:
+ *
+ * Returns a base directory in which to store user-specific configuration
+ * information for Evolution or Evolution-Data-Server.
+ *
+ * The returned string is owned by libedataserver and must not be
+ * modified or freed.
+ *
+ * Returns: base directory for user-specific configuration information
+ **/
+const gchar *
+e_get_user_config_dir (void)
+{
+	return e_get_user_data_dir ();
+}
+
+/**
+ * e_get_user_data_dir:
+ *
+ * Returns a base directory in which to store user-specific data for
+ * Evolution or Evolution-Data-Server.
+ *
+ * The returned string is owned by libedataserver and must not be
+ * modified or freed.
+ *
+ * Returns: base directory for user-specific data
+ **/
+const gchar *
+e_get_user_data_dir (void)
+{
+	static gchar *dirname = NULL;
+
+	if (G_UNLIKELY (dirname == NULL)) {
+		const gchar *home_dir = g_get_home_dir ();
+		dirname = g_build_filename (home_dir, ".evolution", NULL);
+		g_mkdir_with_parents (dirname, 0700);
+	}
+
+	return dirname;
+}
+
+/**
  * e_util_strstrcase:
  * @haystack: The string to search in.
  * @needle: The string to search for.
diff --git a/libedataserver/e-data-server-util.h b/libedataserver/e-data-server-util.h
index 0eff5c9..dd50d6b 100644
--- a/libedataserver/e-data-server-util.h
+++ b/libedataserver/e-data-server-util.h
@@ -29,6 +29,10 @@ G_BEGIN_DECLS
 
 struct tm;
 
+const gchar *	e_get_user_cache_dir		(void);
+const gchar *	e_get_user_config_dir		(void);
+const gchar *	e_get_user_data_dir		(void);
+
 gchar *		e_util_strstrcase		(const gchar *haystack,
 						 const gchar *needle);
 gchar *		e_util_unicode_get_utf8		(const gchar *text,



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