diff options
-rw-r--r-- | camel/ChangeLog | 12 | ||||
-rw-r--r-- | camel/camel-object.c | 8 | ||||
-rw-r--r-- | camel/camel-object.h | 11 | ||||
-rw-r--r-- | camel/camel-tcp-stream-openssl.c | 1 | ||||
-rw-r--r-- | camel/camel-uid-cache.c | 31 | ||||
-rw-r--r-- | camel/providers/imap/camel-imap-store.c | 2 |
6 files changed, 60 insertions, 5 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 5fa452537c..915b355a74 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,3 +1,15 @@ +2001-10-16 Jeffrey Stedfast <fejj@ximian.com> + + * camel-object.[c,h]: If CAMEL_DEBUG is defined, print some useful + ref/unref info. + + * providers/imap/camel-imap-store.c (delete_folder): Fixed an + assignment warning. + + * camel-uid-cache.c (camel_uid_cache_new): Make sure that the + parent directory exists before trying to open the filename, if it + doesn't, create it. + 2001-10-16 <NotZed@Ximian.com> * camel-mime-utils.c (header_address_decode): If no content, dont diff --git a/camel/camel-object.c b/camel/camel-object.c index 68b9278d8f..c04415cce9 100644 --- a/camel/camel-object.c +++ b/camel/camel-object.c @@ -478,6 +478,10 @@ camel_object_new (CamelType type) return instance; } +#ifdef camel_object_ref +#undef camel_object_ref +#endif + void camel_object_ref (CamelObject * obj) { @@ -488,6 +492,10 @@ camel_object_ref (CamelObject * obj) G_UNLOCK (refcount); } +#ifdef camel_object_unref +#undef camel_object_unref +#endif + void camel_object_unref (CamelObject * obj) { diff --git a/camel/camel-object.h b/camel/camel-object.h index ec0416d4f4..613f05dcc8 100644 --- a/camel/camel-object.h +++ b/camel/camel-object.h @@ -116,8 +116,15 @@ const gchar *camel_type_to_name (CamelType type); CamelType camel_object_get_type (void); CamelObject *camel_object_new (CamelType type); -void camel_object_ref (CamelObject * obj); -void camel_object_unref (CamelObject * obj); + +void camel_object_ref (CamelObject *obj); +void camel_object_unref (CamelObject *obj); + +#ifdef CAMEL_DEBUG +#define camel_object_ref(o) (printf("%s (%s:%d):ref (%p)\n", __FUNCTION__, __FILE__, __LINE__, o), camel_object_ref(o)) +#define camel_object_unref(o) (printf("%s (%s:%d):unref (%p)\n", __FUNCTION__, __FILE__, __LINE__, o), camel_object_unref (o)) +#endif + CamelObject *camel_object_check_cast (CamelObject * obj, CamelType ctype); CamelObjectClass *camel_object_class_check_cast (CamelObjectClass * diff --git a/camel/camel-tcp-stream-openssl.c b/camel/camel-tcp-stream-openssl.c index 6dedeadab7..17c379aa67 100644 --- a/camel/camel-tcp-stream-openssl.c +++ b/camel/camel-tcp-stream-openssl.c @@ -500,7 +500,6 @@ ssl_cert_is_saved (const char *certid) { char *filename; struct stat st; - int ret; filename = g_strdup_printf ("%s/.camel_certs/%s", getenv ("HOME"), certid); diff --git a/camel/camel-uid-cache.c b/camel/camel-uid-cache.c index 15e463c157..5f88fd624b 100644 --- a/camel/camel-uid-cache.c +++ b/camel/camel-uid-cache.c @@ -43,6 +43,31 @@ struct _uid_state { static void free_uid (gpointer key, gpointer value, gpointer data); static void maybe_write_uid (gpointer key, gpointer value, gpointer data); + +static int +mkdir_heir (const char *path, mode_t mode) +{ + char *copy, *p; + + p = copy = g_strdup (path); + 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 = '/'; + } while (p); + + g_free (copy); + return 0; +} + /** * camel_uid_cache_new: * @filename: path to load the cache from @@ -58,9 +83,13 @@ camel_uid_cache_new (const char *filename) { CamelUIDCache *cache; struct stat st; - char *buf, **uids; + char *dirname, *buf, **uids; int fd, i; + dirname = g_dirname (filename); + mkdir_heir (dirname, 0700); + g_free (dirname); + fd = open (filename, O_RDWR | O_CREAT, 0700); if (fd == -1) return NULL; diff --git a/camel/providers/imap/camel-imap-store.c b/camel/providers/imap/camel-imap-store.c index c46cee1b29..4ad2021c64 100644 --- a/camel/providers/imap/camel-imap-store.c +++ b/camel/providers/imap/camel-imap-store.c @@ -1046,7 +1046,7 @@ delete_folder (CamelStore *store, const char *folder_name, CamelException *ex) char *journal_file; char *folder_dir; CamelFolderInfo *fi; - char *name; + const char *name; folder_dir = e_path_to_physical (imap_store->storage_path, folder_name); if (access (folder_dir, F_OK) != 0) { |