aboutsummaryrefslogtreecommitdiffstats
path: root/embed/ephy-favicon-cache.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2004-02-13 03:13:54 +0800
committerChristian Persch <chpe@src.gnome.org>2004-02-13 03:13:54 +0800
commit4c401b884b4e4529e470346dd9d0e834661b3823 (patch)
treeb2d9cf9be755c67c29d2fed9e4d4d40d6c3a3975 /embed/ephy-favicon-cache.c
parent11559ecfcb6420b24b537d9c7b61f60ec20a8cfb (diff)
downloadgsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.tar
gsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.tar.gz
gsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.tar.bz2
gsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.tar.lz
gsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.tar.xz
gsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.tar.zst
gsoc2013-epiphany-4c401b884b4e4529e470346dd9d0e834661b3823.zip
Fix numerous places where we weren't properly converting between UTF-8 and
2004-02-12 Christian Persch <chpe@cvs.gnome.org> * embed/ephy-embed-popup-control.c: (save_url), (embed_popup_set_image_as_background_cmd): * embed/ephy-favicon-cache.c: (ephy_favicon_cache_get_type), (ephy_favicon_cache_class_init), (favicon_name_build), (favicon_download_completed_cb), (ephy_favicon_cache_get): * embed/mozilla/FilePicker.cpp: * embed/mozilla/MozDownload.cpp: * lib/ephy-file-chooser.c: (ephy_file_chooser_set_persist_key): * lib/ephy-file-helpers.c: (ephy_file_downloads_dir): * src/popup-commands.c: (popup_cmd_set_image_as_background): * src/prefs-dialog.c: (get_download_button_label), (download_path_response_cb): Fix numerous places where we weren't properly converting between UTF-8 and filename encoding. * embed/ephy-favicon-cache.c: Bump favicon cache xml version. * embed/mozilla/EphyHeaderSniffer.cpp: Fix mem leak, and use CONF_STATE_SAVE_DIR instead of the download dir key for directory persistence.
Diffstat (limited to 'embed/ephy-favicon-cache.c')
-rw-r--r--embed/ephy-favicon-cache.c48
1 files changed, 31 insertions, 17 deletions
diff --git a/embed/ephy-favicon-cache.c b/embed/ephy-favicon-cache.c
index 222f67f5b..c83471dee 100644
--- a/embed/ephy-favicon-cache.c
+++ b/embed/ephy-favicon-cache.c
@@ -19,6 +19,10 @@
* $Id$
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <libgnomevfs/gnome-vfs-ops.h>
#include <string.h>
#include <time.h>
@@ -33,13 +37,13 @@
#include "ephy-debug.h"
#define EPHY_FAVICON_CACHE_XML_ROOT "ephy_favicons_cache"
-#define EPHY_FAVICON_CACHE_XML_VERSION "1.0"
+#define EPHY_FAVICON_CACHE_XML_VERSION "1.1"
#define EPHY_FAVICON_CACHE_OBSOLETE_DAYS 30
static void ephy_favicon_cache_class_init (EphyFaviconCacheClass *klass);
-static void ephy_favicon_cache_init (EphyFaviconCache *ma);
-static void ephy_favicon_cache_finalize (GObject *object);
+static void ephy_favicon_cache_init (EphyFaviconCache *ma);
+static void ephy_favicon_cache_finalize (GObject *object);
#define EPHY_FAVICON_CACHE_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EPHY_TYPE_FAVICON_CACHE, EphyFaviconCachePrivate))
@@ -59,16 +63,16 @@ enum
LAST_SIGNAL
};
-static guint ephy_favicon_cache_signals[LAST_SIGNAL] = { 0 };
+static guint signals[LAST_SIGNAL] = { 0 };
static GObjectClass *parent_class = NULL;
GType
ephy_favicon_cache_get_type (void)
{
- static GType ephy_favicon_cache_type = 0;
+ static GType type = 0;
- if (ephy_favicon_cache_type == 0)
+ if (type == 0)
{
static const GTypeInfo our_info =
{
@@ -83,12 +87,12 @@ ephy_favicon_cache_get_type (void)
(GInstanceInitFunc) ephy_favicon_cache_init
};
- ephy_favicon_cache_type = g_type_register_static (G_TYPE_OBJECT,
- "EphyFaviconCache",
- &our_info, 0);
+ type = g_type_register_static (G_TYPE_OBJECT,
+ "EphyFaviconCache",
+ &our_info, 0);
}
- return ephy_favicon_cache_type;
+ return type;
}
static void
@@ -100,7 +104,7 @@ ephy_favicon_cache_class_init (EphyFaviconCacheClass *klass)
object_class->finalize = ephy_favicon_cache_finalize;
- ephy_favicon_cache_signals[CHANGED] =
+ signals[CHANGED] =
g_signal_new ("changed",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_LAST,
@@ -298,15 +302,21 @@ ephy_favicon_cache_finalize (GObject *object)
static char *
favicon_name_build (const char *url)
{
- char *res;
- char *slashpos;
+ char *result, *slashpos;
+
+ result = g_filename_from_utf8 (url, -1, NULL, NULL, NULL);
- res = g_strdup (url);
+ if (result == NULL)
+ {
+ return NULL;
+ }
- while ((slashpos = strstr (res, "/")) != NULL)
+ while ((slashpos = strstr (result, "/")) != NULL)
+ {
*slashpos = '_';
+ }
- return res;
+ return result;
}
static void
@@ -320,7 +330,7 @@ favicon_download_completed_cb (EphyEmbedPersist *persist,
g_hash_table_remove (cache->priv->downloads_hash, url);
- g_signal_emit (G_OBJECT (cache), ephy_favicon_cache_signals[CHANGED], 0, url);
+ g_signal_emit (G_OBJECT (cache), signals[CHANGED], 0, url);
g_object_unref (persist);
}
@@ -383,6 +393,10 @@ ephy_favicon_cache_get (EphyFaviconCache *cache,
char *filename;
filename = favicon_name_build (url);
+ if (filename == NULL)
+ {
+ return NULL;
+ }
icon = ephy_node_new (cache->priv->db);
g_value_init (&value, G_TYPE_STRING);