[evolution-data-server] Add functions to get Evo/EDS base directories.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Add functions to get Evo/EDS base directories.
- Date: Thu, 8 Jul 2010 21:04:26 +0000 (UTC)
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]