GNOME Bugzilla – Bug 323529
Duplicated files should be removed from evolution/e-util ASAP !!!(This is the cause of Evolution crashing unexpectedly on Solaris)
Last modified: 2006-02-05 09:28:09 UTC
While evolution-2.4 works fine on Linux, it is quite weird it crashes occassionally on Solaris. Sometimes, it exits unexpectedly right after startup. This is especilly the case when we build evolution with the option -BDirect on Solaris. This is, as we have investigated, because there are huge duplications between libedataserver and libeutil. A great deal of different APIs have same names. Therefore, when evolution is running, some of the wrong APIs in libeutil are used instead of their counterpars in libedataserver, because of duplications. This is generally the cause of crashes on Solaris. These carshes are harasing Solaris users of both evolution-2.4 and evolution trunk right now. BTW: A webpage has been created for discussing how to settle this problem at http://live.gnome.org/EvolutionEUtilDieDieDie. A list of overlapping files can be found there
confirming of course.
according to today's team meeting, shres and tml are looking into this. so adding shres to cc.
Created attachment 56010 [details] [review] Partial patch for evolution-exchange
Created attachment 56011 [details] [review] Partial patch for Evolution
patches have already commited to community head
whats the story with e-xml-utils.c, has anyone checked why the e-util files and the libedataserver files differ so much ?
Created attachment 56133 [details] [review] Partial patch for evolution-data-server regarding e-account.* and e-account-list.*
Comment on attachment 56133 [details] [review] Partial patch for evolution-data-server regarding e-account.* and e-account-list.* Patches is regarding the four following files. e-account.h, e-account.c e-account-list.h e-account-list.c As the copies in evolution/e-util have been developed further. Merge these changes into the copy in libedataserver and drop the copies in e-util.
Created attachment 56134 [details] [review] Partial patch for evolution regarding e-account.* and e-account-list.*
Created attachment 56135 [details] [review] Partial patch for evolution-exchange regarding e-account.* and e-account-list.*
Created attachment 56146 [details] [review] Partial patch for evolution-data-server regarding e-util.* e-util.* are very different between evolution/e-util and evolution-data-server/libedataserver. Thus, merging may not a good idea. Instead of merging, we can rename these files in evolution-data-server/libedataserver, like e-data-server-util.h, e-data-server-util.c.
Comment on attachment 56146 [details] [review] Partial patch for evolution-data-server regarding e-util.* Index: evolution-data-server/ChangeLog =================================================================== RCS file: /cvs/gnome/evolution-data-server/ChangeLog,v retrieving revision 1.350 diff -u -p -r1.350 ChangeLog --- evolution-data-server/ChangeLog 13 Dec 2005 14:07:16 -0000 1.350 +++ evolution-data-server/ChangeLog 21 Dec 2005 10:31:25 -0000 @@ -1,3 +1,15 @@ +2005-12-21 Simon.zheng <simon.zheng@sun.com> + + * libedataserver/e-util.c (e_util_mkdir_hier): Merge the change of + evolution/e-util/e-util.c (e_mkdir_hier) into this copy. + + (e_util_strstrcase): Merge the change of evolution/e-util/e-util.c + into this copy. + + Rename e-util.c as e-data-server-util.c. + + * libedataserver/e-util.h : Rename this file as e-data-server-util.h + 2005-12-13 Tor Lillqvist <tml@novell.com> * libedataserver/e-uid.c (e_uid_new): Use g_get_host_name() when Index: evolution-data-server/addressbook/backends/file/e-book-backend-file.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/file/e-book-backend-file.c,v retrieving revision 1.39 diff -u -p -r1.39 e-book-backend-file.c --- evolution-data-server/addressbook/backends/file/e-book-backend-file.c 8 Dec 2005 04:29:33 -0000 1.39 +++ evolution-data-server/addressbook/backends/file/e-book-backend-file.c 21 Dec 2005 10:31:26 -0000 @@ -42,7 +42,7 @@ #include "libedataserver/e-dbhash.h" #include "libedataserver/e-db3-utils.h" -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "libebook/e-contact.h" Index: evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c,v retrieving revision 1.70 diff -u -p -r1.70 e-book-backend-groupwise.c --- evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c 8 Dec 2005 04:34:48 -0000 1.70 +++ evolution-data-server/addressbook/backends/groupwise/e-book-backend-groupwise.c 21 Dec 2005 10:31:26 -0000 @@ -35,7 +35,7 @@ #include <glib/gi18n-lib.h> #include "libedataserver/e-sexp.h" -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "libedataserver/e-url.h" #include "libebook/e-contact.h" #include "libedata-book/e-book-backend-sexp.h" Index: evolution-data-server/addressbook/backends/vcf/e-book-backend-vcf.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/backends/vcf/e-book-backend-vcf.c,v retrieving revision 1.21 diff -u -p -r1.21 e-book-backend-vcf.c --- evolution-data-server/addressbook/backends/vcf/e-book-backend-vcf.c 8 Dec 2005 04:40:34 -0000 1.21 +++ evolution-data-server/addressbook/backends/vcf/e-book-backend-vcf.c 21 Dec 2005 10:31:26 -0000 @@ -40,7 +40,7 @@ #include <glib/gstdio.h> #include <glib/gi18n-lib.h> -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "libebook/e-contact.h" Index: evolution-data-server/addressbook/libebook/e-address-western.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/libebook/e-address-western.c,v retrieving revision 1.3 diff -u -p -r1.3 e-address-western.c --- evolution-data-server/addressbook/libebook/e-address-western.c 4 May 2005 08:46:12 -0000 1.3 +++ evolution-data-server/addressbook/libebook/e-address-western.c 21 Dec 2005 10:31:26 -0000 @@ -14,7 +14,7 @@ #include <glib.h> #include "e-address-western.h" -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" /* These are the keywords that will distinguish the start of an extended address. */ Index: evolution-data-server/addressbook/libebook/e-contact.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/libebook/e-contact.c,v retrieving revision 1.54 diff -u -p -r1.54 e-contact.c --- evolution-data-server/addressbook/libebook/e-contact.c 25 Nov 2005 03:28:51 -0000 1.54 +++ evolution-data-server/addressbook/libebook/e-contact.c 21 Dec 2005 10:31:26 -0000 @@ -33,7 +33,7 @@ #include "e-name-western.h" #ifdef G_OS_WIN32 -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #undef EVOLUTION_LOCALEDIR #define EVOLUTION_LOCALEDIR e_util_get_localedir () #endif Index: evolution-data-server/addressbook/libedata-book/e-book-backend-sexp.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/libedata-book/e-book-backend-sexp.c,v retrieving revision 1.14 diff -u -p -r1.14 e-book-backend-sexp.c --- evolution-data-server/addressbook/libedata-book/e-book-backend-sexp.c 9 Dec 2005 10:56:46 -0000 1.14 +++ evolution-data-server/addressbook/libedata-book/e-book-backend-sexp.c 21 Dec 2005 10:31:26 -0000 @@ -20,7 +20,7 @@ #include <string.h> #include <libedataserver/e-sexp.h> -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #include "e-book-backend-sexp.h" static GObjectClass *parent_class; Index: evolution-data-server/addressbook/libedata-book/e-book-backend-summary.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/addressbook/libedata-book/e-book-backend-summary.c,v retrieving revision 1.13 diff -u -p -r1.13 e-book-backend-summary.c --- evolution-data-server/addressbook/libedata-book/e-book-backend-summary.c 9 Dec 2005 10:56:46 -0000 1.13 +++ evolution-data-server/addressbook/libedata-book/e-book-backend-summary.c 21 Dec 2005 10:31:26 -0000 @@ -34,7 +34,7 @@ #include <glib/gstdio.h> #include "libedataserver/e-sexp.h" -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "libebook/e-contact.h" Index: evolution-data-server/calendar/backends/file/e-cal-backend-file.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/file/e-cal-backend-file.c,v retrieving revision 1.68 diff -u -p -r1.68 e-cal-backend-file.c --- evolution-data-server/calendar/backends/file/e-cal-backend-file.c 8 Dec 2005 06:17:19 -0000 1.68 +++ evolution-data-server/calendar/backends/file/e-cal-backend-file.c 21 Dec 2005 10:31:26 -0000 @@ -33,7 +33,7 @@ #include <glib/gstdio.h> #include <glib/gi18n-lib.h> #include <libgnomevfs/gnome-vfs.h> -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #include <libedataserver/e-xml-hash-utils.h> #include <libecal/e-cal-recur.h> #include <libecal/e-cal-time-util.h> Index: evolution-data-server/calendar/backends/weather/e-weather-source-ccf.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/backends/weather/e-weather-source-ccf.c,v retrieving revision 1.4 diff -u -p -r1.4 e-weather-source-ccf.c --- evolution-data-server/calendar/backends/weather/e-weather-source-ccf.c 9 Dec 2005 11:27:19 -0000 1.4 +++ evolution-data-server/calendar/backends/weather/e-weather-source-ccf.c 21 Dec 2005 10:31:26 -0000 @@ -39,7 +39,7 @@ #ifdef G_OS_WIN32 -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> /* The localtime_r() in <pthread.h> doesn't guard against localtime() * returning NULL Index: evolution-data-server/calendar/libecal/e-cal-util.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/libecal/e-cal-util.c,v retrieving revision 1.13 diff -u -p -r1.13 e-cal-util.c --- evolution-data-server/calendar/libecal/e-cal-util.c 9 Dec 2005 11:33:55 -0000 1.13 +++ evolution-data-server/calendar/libecal/e-cal-util.c 21 Dec 2005 10:31:27 -0000 @@ -25,7 +25,7 @@ #include <glib.h> #include <glib/gstdio.h> #include <glib/gi18n-lib.h> -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "e-cal-util.h" Index: evolution-data-server/calendar/libedata-cal/e-cal-backend-sexp.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/calendar/libedata-cal/e-cal-backend-sexp.c,v retrieving revision 1.21 diff -u -p -r1.21 e-cal-backend-sexp.c --- evolution-data-server/calendar/libedata-cal/e-cal-backend-sexp.c 6 May 2005 11:22:28 -0000 1.21 +++ evolution-data-server/calendar/libedata-cal/e-cal-backend-sexp.c 21 Dec 2005 10:31:27 -0000 @@ -24,7 +24,7 @@ #include <string.h> #include <glib/gi18n-lib.h> -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #include <libecal/e-cal-time-util.h> #include "e-cal-backend-sexp.h" Index: evolution-data-server/camel/ChangeLog =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/ChangeLog,v retrieving revision 1.2510 diff -u -p -r1.2510 ChangeLog --- evolution-data-server/camel/ChangeLog 13 Dec 2005 13:54:59 -0000 1.2510 +++ evolution-data-server/camel/ChangeLog 21 Dec 2005 10:31:27 -0000 @@ -1,3 +1,8 @@ +2005-12-21 Simon Zheng <Simon.Zheng@sun.com> + + * camel-file-utils.c : Delete camel_mkdir(), and all the callers + use e_util_mkdir_hier() instead. + 2005-12-13 Tor Lillqvist <tml@novell.com> * camel-filter-driver.c: Use gstdio wrappers. Use Index: evolution-data-server/camel/camel-data-cache.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-data-cache.c,v retrieving revision 1.19 diff -u -p -r1.19 camel-data-cache.c --- evolution-data-server/camel/camel-data-cache.c 1 Dec 2005 11:21:12 -0000 1.19 +++ evolution-data-server/camel/camel-data-cache.c 21 Dec 2005 10:31:27 -0000 @@ -35,6 +35,7 @@ #include <glib/gstdio.h> +#include <libedataserver/e-data-server-util.h> #include "camel-i18n.h" #include "camel-data-cache.h" #include "camel-exception.h" @@ -130,7 +131,7 @@ camel_data_cache_new(const char *path, g { CamelDataCache *cdc; - if (camel_mkdir (path, 0700) == -1) { + if (e_util_mkdir_hier (path, 0700) == -1) { camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Unable to create cache path")); return NULL; @@ -246,7 +247,7 @@ data_cache_path(CamelDataCache *cdc, int if (access (dir, F_OK) == -1) { #endif if (create) - camel_mkdir (dir, 0700); + e_util_mkdir_hier (dir, 0700); } else if (cdc->priv->expire_inc == hash && (cdc->expire_age != -1 || cdc->expire_access != -1)) { time_t now; Index: evolution-data-server/camel/camel-debug.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-debug.c,v retrieving revision 1.5 diff -u -p -r1.5 camel-debug.c --- evolution-data-server/camel/camel-debug.c 15 Sep 2005 12:24:59 -0000 1.5 +++ evolution-data-server/camel/camel-debug.c 21 Dec 2005 10:31:27 -0000 @@ -25,7 +25,7 @@ #include <pthread.h> -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "camel-debug.h" int camel_verbose_debug; Index: evolution-data-server/camel/camel-file-utils.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-file-utils.c,v retrieving revision 1.15 diff -u -p -r1.15 camel-file-utils.c --- evolution-data-server/camel/camel-file-utils.c 8 Dec 2005 06:41:55 -0000 1.15 +++ evolution-data-server/camel/camel-file-utils.c 21 Dec 2005 10:31:27 -0000 @@ -41,7 +41,7 @@ #define EWOULDBLOCK EAGAIN #endif -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "camel-file-utils.h" #include "camel-operation.h" @@ -316,46 +316,6 @@ camel_file_util_decode_string (FILE *in, return 0; } - -/** - * camel_mkdir: - * @path: directory path to create - * @mode: permissions - * - * Creates the directory path described in @path, creating any parent - * directories as necessary. - * - * Returns 0 on success or -1 on fail. In the case of failure, errno - * will be set appropriately. - **/ -int -camel_mkdir (const char *path, mode_t mode) -{ -#if GLIB_CHECK_VERSION(2,8,0) - g_assert(path && g_path_is_absolute (path)); - return g_mkdir_with_parents (path, mode); -#else - char *copy, *p; - - g_assert(path && path[0] == '/'); - - p = copy = g_alloca (strlen (path) + 1); - strcpy(copy, path); - do { - p = strchr(p + 1, '/'); - if (p) - *p = '\0'; - if (access(copy, F_OK) == -1) { - if (mkdir(copy, mode) == -1) - return -1; - } - if (p) - *p = '/'; - } while (p); - - return 0; -#endif -} /** * camel_file_util_safe_filename: Index: evolution-data-server/camel/camel-file-utils.h =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-file-utils.h,v retrieving revision 1.10 diff -u -p -r1.10 camel-file-utils.h --- evolution-data-server/camel/camel-file-utils.h 30 Nov 2005 09:54:54 -0000 1.10 +++ evolution-data-server/camel/camel-file-utils.h 21 Dec 2005 10:31:27 -0000 @@ -55,7 +55,6 @@ int camel_file_util_decode_size_t (FILE int camel_file_util_encode_string (FILE *out, const char *); int camel_file_util_decode_string (FILE *in, char **); -int camel_mkdir (const char *path, mode_t mode); char *camel_file_util_safe_filename (const char *name); /* Code that intends to be portable to Win32 should use camel_read() Index: evolution-data-server/camel/camel-object.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-object.c,v retrieving revision 1.57 diff -u -p -r1.57 camel-object.c --- evolution-data-server/camel/camel-object.c 13 Dec 2005 04:58:42 -0000 1.57 +++ evolution-data-server/camel/camel-object.c 21 Dec 2005 10:31:28 -0000 @@ -31,6 +31,7 @@ #include "libedataserver/e-memory.h" #include "libedataserver/e-msgport.h" +#include "libedataserver/e-data-server-util.h" #include "camel-file-utils.h" #include "camel-object.h" @@ -1844,7 +1845,7 @@ int camel_object_state_write(void *vo) savename = camel_file_util_savename(file); dirname = g_path_get_dirname(savename); - camel_mkdir(dirname, 0777); + e_util_mkdir_hier(dirname, 0777); g_free(dirname); fp = g_fopen(savename, "wb"); if (fp != NULL) { Index: evolution-data-server/camel/camel-session.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-session.c,v retrieving revision 1.114 diff -u -p -r1.114 camel-session.c --- evolution-data-server/camel/camel-session.c 14 Dec 2005 13:15:22 -0000 1.114 +++ evolution-data-server/camel/camel-session.c 21 Dec 2005 10:31:28 -0000 @@ -36,6 +36,7 @@ #include <glib/gstdio.h> +#include "libedataserver/e-data-server-util.h" #include "camel-exception.h" #include "camel-file-utils.h" #include "camel-i18n.h" @@ -285,7 +286,7 @@ get_storage_path (CamelSession *session, #endif return path; - if (camel_mkdir (path, S_IRWXU) == -1) { + if (e_util_mkdir_hier (path, S_IRWXU) == -1) { camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create directory %s:\n%s"), path, g_strerror (errno)); Index: evolution-data-server/camel/camel-uid-cache.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-uid-cache.c,v retrieving revision 1.16 diff -u -p -r1.16 camel-uid-cache.c --- evolution-data-server/camel/camel-uid-cache.c 30 Nov 2005 09:54:54 -0000 1.16 +++ evolution-data-server/camel/camel-uid-cache.c 21 Dec 2005 10:31:28 -0000 @@ -34,6 +34,7 @@ #include <glib/gstdio.h> +#include "libedataserver/e-data-server-util.h" #include "camel-file-utils.h" #include "camel-private.h" #include "camel-uid-cache.h" @@ -63,7 +64,7 @@ camel_uid_cache_new (const char *filenam int fd, i; dirname = g_path_get_dirname (filename); - if (camel_mkdir (dirname, 0777) == -1) { + if (e_util_mkdir_hier (dirname, 0777) == -1) { g_free (dirname); return NULL; } Index: evolution-data-server/camel/camel-win32.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/camel-win32.c,v retrieving revision 1.4 diff -u -p -r1.4 camel-win32.c --- evolution-data-server/camel/camel-win32.c 1 Dec 2005 10:32:30 -0000 1.4 +++ evolution-data-server/camel/camel-win32.c 21 Dec 2005 10:31:28 -0000 @@ -31,7 +31,7 @@ #include <glib.h> #include <glib/gstdio.h> -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #include "camel.h" Index: evolution-data-server/camel/providers/imap/camel-imap-folder.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap/camel-imap-folder.c,v retrieving revision 1.357 diff -u -p -r1.357 camel-imap-folder.c --- evolution-data-server/camel/providers/imap/camel-imap-folder.c 8 Dec 2005 11:04:40 -0000 1.357 +++ evolution-data-server/camel/providers/imap/camel-imap-folder.c 21 Dec 2005 10:31:28 -0000 @@ -36,6 +36,7 @@ /*#include "libedataserver/e-path.h"*/ #include "libedataserver/e-time-utils.h" +#include "libedataserver/e-data-server-util.h" #include "camel-imap-folder.h" #include "camel-imap-command.h" @@ -227,7 +228,7 @@ camel_imap_folder_new (CamelStore *paren const char *short_name; char *summary_file, *state_file; - if (camel_mkdir (folder_dir, S_IRWXU) != 0) { + if (e_util_mkdir_hier (folder_dir, S_IRWXU) != 0) { camel_exception_setv (ex, CAMEL_EXCEPTION_SYSTEM, _("Could not create directory %s: %s"), folder_dir, g_strerror (errno)); Index: evolution-data-server/camel/providers/imap4/camel-imap4-folder.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/imap4/camel-imap4-folder.c,v retrieving revision 1.46 diff -u -p -r1.46 camel-imap4-folder.c --- evolution-data-server/camel/providers/imap4/camel-imap4-folder.c 31 Aug 2005 04:26:05 -0000 1.46 +++ evolution-data-server/camel/providers/imap4/camel-imap4-folder.c 21 Dec 2005 10:31:28 -0000 @@ -35,6 +35,7 @@ #include <errno.h> #include <time.h> +#include <libedataserver/e-data-server-util.h> #include <camel/camel-utf8.h> #include <camel/camel-private.h> #include <camel/camel-file-utils.h> @@ -345,7 +346,7 @@ camel_imap4_folder_new (CamelStore *stor folder->summary = camel_imap4_summary_new (folder); imap4_folder->cachedir = imap4_store_build_filename (store, folder->full_name); - camel_mkdir (imap4_folder->cachedir, 0777); + e_util_mkdir_hier (imap4_folder->cachedir, 0777); imap4_folder->cache = camel_data_cache_new (imap4_folder->cachedir, 0, NULL); Index: evolution-data-server/camel/providers/imapp/camel-imapp-folder.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/imapp/camel-imapp-folder.c,v retrieving revision 1.6 diff -u -p -r1.6 camel-imapp-folder.c --- evolution-data-server/camel/providers/imapp/camel-imapp-folder.c 31 Aug 2005 04:26:05 -0000 1.6 +++ evolution-data-server/camel/providers/imapp/camel-imapp-folder.c 21 Dec 2005 10:31:30 -0000 @@ -42,6 +42,7 @@ #include "camel-imapp-exception.h" #include <libedataserver/md5-utils.h> +#include <libedataserver/e-data-server-util.h> #include <stdlib.h> #include <string.h> @@ -134,7 +135,7 @@ camel_imapp_folder_new(CamelStore *store char *base = g_build_filename(root, path, NULL); char *file = g_build_filename(base, ".ev-summary", NULL); - camel_mkdir(base, 0777); + e_util_mkdir_hier(base, 0777); g_free(base); camel_folder_summary_set_filename(folder->summary, file); Index: evolution-data-server/camel/providers/local/camel-local-store.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-local-store.c,v retrieving revision 1.40 diff -u -p -r1.40 camel-local-store.c --- evolution-data-server/camel/providers/local/camel-local-store.c 8 Dec 2005 11:28:47 -0000 1.40 +++ evolution-data-server/camel/providers/local/camel-local-store.c 21 Dec 2005 10:31:30 -0000 @@ -32,6 +32,7 @@ #include <glib.h> #include <glib/gstdio.h> +#include <libedataserver/e-data-server-util.h> #include "camel/camel-exception.h" #include "camel/camel-file-utils.h" #include "camel/camel-i18n.h" @@ -174,7 +175,7 @@ get_folder(CamelStore * store, const cha } /* need to create the dir heirarchy */ - if (camel_mkdir (path, 0777) == -1 && errno != EEXIST) { + if (e_util_mkdir_hier (path, 0777) == -1 && errno != EEXIST) { camel_exception_setv (ex, CAMEL_EXCEPTION_STORE_NO_FOLDER, _("Cannot get folder: %s: %s"), path, g_strerror (errno)); Index: evolution-data-server/camel/providers/local/camel-mbox-store.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-mbox-store.c,v retrieving revision 1.43 diff -u -p -r1.43 camel-mbox-store.c --- evolution-data-server/camel/providers/local/camel-mbox-store.c 8 Dec 2005 11:28:47 -0000 1.43 +++ evolution-data-server/camel/providers/local/camel-mbox-store.c 21 Dec 2005 10:31:30 -0000 @@ -32,6 +32,7 @@ #include <glib.h> #include <glib/gstdio.h> +#include <libedataserver/e-data-server-util.h> #include "camel/camel-exception.h" #include "camel/camel-file-utils.h" #include "camel/camel-i18n.h" @@ -168,7 +169,7 @@ get_folder(CamelStore *store, const char g_free (basename); dirname = g_path_get_dirname(name); - if (camel_mkdir(dirname, 0777) == -1 && errno != EEXIST) { + if (e_util_mkdir_hier(dirname, 0777) == -1 && errno != EEXIST) { camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot create folder `%s': %s"), folder_name, g_strerror (errno)); @@ -359,7 +360,7 @@ create_folder(CamelStore *store, const c path = camel_local_store_get_full_path(store, name); dir = g_path_get_dirname(path); - if (camel_mkdir(dir, 0777) == -1 && errno != EEXIST) { + if (e_util_mkdir_hier(dir, 0777) == -1 && errno != EEXIST) { camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Cannot create directory `%s': %s."), dir, g_strerror(errno)); @@ -477,7 +478,7 @@ rename_folder(CamelStore *store, const c newibex = camel_local_store_get_meta_path(store, new, ".ibex"); newdir = g_path_get_dirname(newibex); - if (camel_mkdir(newdir, 0777) == -1) { + if (e_util_mkdir_hier(newdir, 0777) == -1) { if (errno != EEXIST) { camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM, _("Could not rename `%s': `%s': %s"), Index: evolution-data-server/camel/providers/local/camel-spool-store.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/local/camel-spool-store.c,v retrieving revision 1.26 diff -u -p -r1.26 camel-spool-store.c --- evolution-data-server/camel/providers/local/camel-spool-store.c 31 Aug 2005 04:26:06 -0000 1.26 +++ evolution-data-server/camel/providers/local/camel-spool-store.c 21 Dec 2005 10:31:30 -0000 @@ -36,6 +36,7 @@ #include <stdio.h> #include <dirent.h> +#include <libedataserver/e-data-server-util.h> #include "camel-spool-store.h" #include "camel-spool-folder.h" #include "camel-exception.h" @@ -492,7 +493,7 @@ spool_get_meta_path(CamelLocalStore *ls, if (root == NULL) return NULL; - camel_mkdir(root, 0777); + e_util_mkdir_hier(root, 0777); key = camel_file_util_safe_filename(full_name); path = g_strdup_printf("%s/%s%s", root, key, ext); g_free(key); Index: evolution-data-server/camel/providers/nntp/camel-nntp-folder.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/camel/providers/nntp/camel-nntp-folder.c,v retrieving revision 1.53 diff -u -p -r1.53 camel-nntp-folder.c --- evolution-data-server/camel/providers/nntp/camel-nntp-folder.c 30 Nov 2005 16:04:02 -0000 1.53 +++ evolution-data-server/camel/providers/nntp/camel-nntp-folder.c 21 Dec 2005 10:31:30 -0000 @@ -31,6 +31,7 @@ #include <unistd.h> #include <errno.h> +#include <libedataserver/e-data-server-util.h> #include "camel/camel-file-utils.h" #include "camel/camel-stream-mem.h" #include "camel/camel-data-wrapper.h" @@ -491,7 +492,7 @@ camel_nntp_folder_new (CamelStore *paren return NULL; /* If this doesn't work, stuff wont save, but let it continue anyway */ - camel_mkdir (root, 0777); + e_util_mkdir_hier (root, 0777); folder = (CamelFolder *) camel_object_new (CAMEL_NNTP_FOLDER_TYPE); nntp_folder = (CamelNNTPFolder *)folder; Index: evolution-data-server/docs/reference/camel/camel-sections.txt =================================================================== RCS file: /cvs/gnome/evolution-data-server/docs/reference/camel/camel-sections.txt,v retrieving revision 1.11 diff -u -p -r1.11 camel-sections.txt --- evolution-data-server/docs/reference/camel/camel-sections.txt 13 May 2005 20:34:32 -0000 1.11 +++ evolution-data-server/docs/reference/camel/camel-sections.txt 21 Dec 2005 10:31:30 -0000 @@ -2913,7 +2913,6 @@ camel_file_util_encode_size_t camel_file_util_decode_size_t camel_file_util_encode_string camel_file_util_decode_string -camel_mkdir camel_file_util_safe_filename camel_read camel_write Index: evolution-data-server/docs/reference/camel/tmpl/camel-file-utils.sgml =================================================================== RCS file: /cvs/gnome/evolution-data-server/docs/reference/camel/tmpl/camel-file-utils.sgml,v retrieving revision 1.1 diff -u -p -r1.1 camel-file-utils.sgml --- evolution-data-server/docs/reference/camel/tmpl/camel-file-utils.sgml 18 May 2005 14:00:52 -0000 1.1 +++ evolution-data-server/docs/reference/camel/tmpl/camel-file-utils.sgml 21 Dec 2005 10:31:30 -0000 @@ -134,16 +134,6 @@ camel-file-utils @Returns: -<!-- ##### FUNCTION camel_mkdir ##### --> -<para> - -</para> - -@path: -@mode: -@Returns: - - <!-- ##### FUNCTION camel_file_util_safe_filename ##### --> <para> Index: evolution-data-server/libedataserver/Makefile.am =================================================================== RCS file: /cvs/gnome/evolution-data-server/libedataserver/Makefile.am,v retrieving revision 1.27 diff -u -p -r1.27 Makefile.am --- evolution-data-server/libedataserver/Makefile.am 8 Dec 2005 07:43:36 -0000 1.27 +++ evolution-data-server/libedataserver/Makefile.am 21 Dec 2005 10:31:31 -0000 @@ -39,7 +39,7 @@ libedataserver_1_2_la_SOURCES = \ e-time-utils.c \ e-uid.c \ e-url.c \ - e-util.c \ + e-data-server-util.c \ e-trie.c \ e-xml-utils.c \ e-xml-hash-utils.c \ @@ -80,7 +80,7 @@ libedataserverinclude_HEADERS = \ e-trie.h \ e-uid.h \ e-url.h \ - e-util.h \ + e-data-server-util.h \ e-xml-utils.h \ e-xml-hash-utils.h \ md5-utils.h Index: evolution-data-server/libedataserver/e-file-cache.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-file-cache.c,v retrieving revision 1.15 diff -u -p -r1.15 e-file-cache.c --- evolution-data-server/libedataserver/e-file-cache.c 8 Dec 2005 07:50:28 -0000 1.15 +++ evolution-data-server/libedataserver/e-file-cache.c 21 Dec 2005 10:31:31 -0000 @@ -27,7 +27,7 @@ #include <glib/gstdio.h> #include "e-file-cache.h" -#include "e-util.h" +#include "e-data-server-util.h" #include "e-xml-hash-utils.h" struct _EFileCachePrivate { Index: evolution-data-server/libedataserver/e-msgport.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-msgport.c,v retrieving revision 1.5 diff -u -p -r1.5 e-msgport.c --- evolution-data-server/libedataserver/e-msgport.c 9 Dec 2005 10:14:14 -0000 1.5 +++ evolution-data-server/libedataserver/e-msgport.c 21 Dec 2005 10:31:31 -0000 @@ -44,7 +44,7 @@ #endif #include "e-msgport.h" -#include "e-util.h" +#include "e-data-server-util.h" #define m(x) /* msgport debug */ #define t(x) /* thread debug */ Index: evolution-data-server/libedataserver/e-time-utils.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-time-utils.c,v retrieving revision 1.5 diff -u -p -r1.5 e-time-utils.c --- evolution-data-server/libedataserver/e-time-utils.c 25 Nov 2005 01:48:30 -0000 1.5 +++ evolution-data-server/libedataserver/e-time-utils.c 21 Dec 2005 10:31:31 -0000 @@ -27,7 +27,7 @@ #include <glib.h> #include <glib/gi18n-lib.h> #include "e-time-utils.h" -#include "e-util.h" +#include "e-data-server-util.h" #ifdef G_OS_WIN32 /* The localtime_r() definition in pthreads-win32's pthread.h doesn't guard Index: evolution-data-server/libedataserver/e-util.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/libedataserver/e-util.c,v retrieving revision 1.14 diff -u -p -r1.14 e-util.c --- evolution-data-server/libedataserver/e-util.c 9 Dec 2005 10:31:38 -0000 1.14 +++ evolution-data-server/libedataserver/e-util.c 21 Dec 2005 10:31:31 -0000 @@ -28,7 +28,7 @@ #include <glib.h> -#include "e-util.h" +#include "e-data-server-util.h" /** * e_util_mkdir_hier: @@ -50,7 +50,7 @@ e_util_mkdir_hier (const char *path, mod #else char *copy, *p; - if (path[0] == '/') { + if (g_path_is_absolute (path)) { p = copy = g_strdup (path); } else { gchar *current_dir = g_get_current_dir(); @@ -58,18 +58,29 @@ e_util_mkdir_hier (const char *path, mod g_free (current_dir); } + p = (char *)g_path_skip_root (p); do { - p = strchr (p + 1, '/'); - if (p) - *p = '\0'; - if (access (copy, F_OK) == -1) { - if (mkdir (copy, mode) == -1) { - g_free (copy); - return -1; - } - } - if (p) - *p = '/'; + char *p1 = strchr (p, '/'); +#ifdef G_OS_WIN32 + { + char *p2 = strchr (p, '\\'); + if (p1 == NULL || + (p2 != NULL && p2 < p1)) + p1 = p2; + } +#endif + p = p1; + if (p) + *p = '\0'; + if (!g_file_test (copy, G_FILE_TEST_IS_DIR)) { + if (g_mkdir (copy, mode) == -1) { + g_free (copy); + return -1; + } + } + if (p) { + *p++ = '/'; + } } while (p); g_free (copy); @@ -337,7 +348,7 @@ size_t e_strftime(char *s, size_t max, c ff = c; } - ff = fmt; + ff = ffmt; while ((c = strstr(ff, "%k")) != NULL) { c[1] = 'H'; ff = c; Index: evolution-data-server/servers/exchange/lib/e2k-autoconfig.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/servers/exchange/lib/e2k-autoconfig.c,v retrieving revision 1.10 diff -u -p -r1.10 e2k-autoconfig.c --- evolution-data-server/servers/exchange/lib/e2k-autoconfig.c 19 Dec 2005 13:27:49 -0000 1.10 +++ evolution-data-server/servers/exchange/lib/e2k-autoconfig.c 21 Dec 2005 10:31:31 -0000 @@ -63,7 +63,7 @@ #include "e2k-xml-utils.h" #include "xntlm.h" -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #include <libedataserverui/e-passwords.h> #include <gconf/gconf-client.h> #include <libxml/tree.h> Index: evolution-data-server/servers/exchange/storage/e-folder-exchange.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/e-folder-exchange.c,v retrieving revision 1.8 diff -u -p -r1.8 e-folder-exchange.c --- evolution-data-server/servers/exchange/storage/e-folder-exchange.c 13 Dec 2005 03:54:29 -0000 1.8 +++ evolution-data-server/servers/exchange/storage/e-folder-exchange.c 21 Dec 2005 10:31:32 -0000 @@ -36,7 +36,7 @@ #include <glib/gstdio.h> #include "libedataserver/e-source-list.h" -#include "libedataserver/e-util.h" +#include "libedataserver/e-data-server-util.h" #include "libedataserver/e-xml-utils.h" #include "e-folder-exchange.h" Index: evolution-data-server/servers/exchange/storage/e-folder.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/e-folder.c,v retrieving revision 1.4 diff -u -p -r1.4 e-folder.c --- evolution-data-server/servers/exchange/storage/e-folder.c 31 Aug 2005 04:26:09 -0000 1.4 +++ evolution-data-server/servers/exchange/storage/e-folder.c 21 Dec 2005 10:31:32 -0000 @@ -29,7 +29,7 @@ #include <string.h> #include <glib.h> -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #define PARENT_TYPE G_TYPE_OBJECT static GObjectClass *parent_class = NULL; Index: evolution-data-server/servers/exchange/storage/e-storage.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/servers/exchange/storage/e-storage.c,v retrieving revision 1.4 diff -u -p -r1.4 e-storage.c --- evolution-data-server/servers/exchange/storage/e-storage.c 31 Aug 2005 04:26:09 -0000 1.4 +++ evolution-data-server/servers/exchange/storage/e-storage.c 21 Dec 2005 10:31:32 -0000 @@ -30,7 +30,7 @@ #include "e-shell-marshal.h" #include <glib/gi18n-lib.h> -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #include <string.h> Index: evolution-data-server/src/server.c =================================================================== RCS file: /cvs/gnome/evolution-data-server/src/server.c,v retrieving revision 1.29 diff -u -p -r1.29 server.c --- evolution-data-server/src/server.c 25 Nov 2005 03:53:43 -0000 1.29 +++ evolution-data-server/src/server.c 21 Dec 2005 10:31:32 -0000 @@ -48,7 +48,7 @@ #include <libedata-cal/e-data-cal-factory.h> #ifdef G_OS_WIN32 -#include <libedataserver/e-util.h> +#include <libedataserver/e-data-server-util.h> #endif #include "server-interface-check.h"
Created attachment 56324 [details] [review] Partial patch for evolution regarding e-util.*
Created attachment 56325 [details] [review] Partial patch for evolution-exchange regarding e-util.*
Created attachment 56327 [details] [review] Partial patch for evolution-data-server regarding e-util.* updated the new patch
Three patches for e-account.[ch] and e-accout-list.[ch] have been committed. BTW, the other three patches for e-util.[ch] need to be reviewed or commented.
Shres, could you test this out if it goes fine on Mac ?
Looks good to commit. As a result of all these patches i can now build Evolution-Exchange on MAC OS X. Thanks a lot for fixing all those issues.
Patches for e-util.[ch] has been committed to cvs HEAD.
Er...My review was confined to Linux and I wanted to ensure Mac and Win builds go w/o symbol resolution problems too. Still awaiting a positive vote from Srinivasa Ragavan. Since, it is already committed - please wait on resolving this bug till Srini gives us a yes too.
Created attachment 57095 [details] [review] Remove duplicate e-util-marshal.list in evolution/widgets/misc There's two copies of e-util-marshal.list in and evo/e-util and evo/widgets/misc. They're 100% identical. What's more, I notice the other modules, such as evo/widgets/table and wevolution/widgets/text, use the copy in evo/e-util rather than their own built-in copies. I think the one in evo/widgets/misc should be droped.
Simon, additionally note e-util-marshal.list and e-marshal.list are identical too in evolution/e-util. BTW, the previous commit still had one reference to e-util.h in e-menus.c which borked fresh builds. Chen has committed a fix for the same. Shreyas, pl. ensure you use a fresh checkout (or at least a careful make uninstall and a make clean) while testing patches that rename or remove files/libraries.
Sorry for breaking builds. It's my mistake.:-(
Ummm... This one is fixed right?
Yes, it has been fixed completely. Please close it. Thanks.