#include <stdarg.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include <sys/time.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
bookmark_app_info_dump (BookmarkAppInfo *app_info)
{
gchar *retval;
+ gchar *name, *exec;
g_assert (app_info != NULL);
if (app_info->count == 0)
return NULL;
+
+ name = g_markup_escape_text (app_info->name, -1);
+ exec = g_markup_escape_text (app_info->exec, -1);
retval = g_strdup_printf (" <%s:%s %s=\"%s\" %s=\"%s\" %s=\"%ld\" %s=\"%u\"/>\n",
BOOKMARK_NAMESPACE_NAME,
BOOKMARK_APPLICATION_ELEMENT,
- BOOKMARK_NAME_ATTRIBUTE, app_info->name,
- BOOKMARK_EXEC_ATTRIBUTE, app_info->exec,
+ BOOKMARK_NAME_ATTRIBUTE, name,
+ BOOKMARK_EXEC_ATTRIBUTE, exec,
BOOKMARK_TIMESTAMP_ATTRIBUTE, (time_t) app_info->stamp,
BOOKMARK_COUNT_ATTRIBUTE, app_info->count);
+ g_free (name);
+ g_free (exec);
+
return retval;
}
for (l = g_list_last (metadata->groups); l != NULL; l = l->prev)
{
- gchar *group_name = (gchar *) l->data;
-
+ gchar *group_name;
+
+ group_name = g_markup_escape_text ((gchar *) l->data, -1);
g_string_append_printf (retval,
" <%s:%s>%s</%s:%s>\n",
BOOKMARK_NAMESPACE_NAME,
group_name,
BOOKMARK_NAMESPACE_NAME,
BOOKMARK_GROUP_ELEMENT);
+ g_free (group_name);
}
/* close groups container */
modified = timestamp_to_iso8601 (item->modified);
visited = timestamp_to_iso8601 (item->visited);
- escaped_uri = g_markup_escape_text (item->uri, strlen (item->uri));
+ escaped_uri = g_markup_escape_text (item->uri, -1);
g_string_append_printf (retval,
" <%s %s=\"%s\" %s=\"%s\" %s=\"%s\" %s=\"%s\">\n",
{
gchar *escaped_title;
- escaped_title = g_markup_escape_text (item->title, strlen (item->title));
+ escaped_title = g_markup_escape_text (item->title, -1);
g_string_append_printf (retval,
" <%s>%s</%s>\n",
XBEL_TITLE_ELEMENT,
{
gchar *escaped_desc;
- escaped_desc = g_markup_escape_text (item->description, strlen (item->description));
+ escaped_desc = g_markup_escape_text (item->description, -1);
g_string_append_printf (retval,
" <%s>%s</%s>\n",
XBEL_DESC_ELEMENT,
- item->description,
+ escaped_desc,
XBEL_DESC_ELEMENT);
g_free (escaped_desc);
}
const gchar *element,
const gchar sep)
{
- gchar *ns_uri, *ns_name;
- gchar *element_name, *resolved;
- gchar *p, *s;
+ gchar *ns_uri, *ns_name, *s, *resolved;
+ const gchar *p, *element_name;
gboolean retval;
g_assert (parse_data != NULL);
* namespace has been set, just do a plain comparison between @full_element
* and @element.
*/
- p = g_utf8_strchr (element_full, -1, ':');
+ p = strchr (element_full, ':');
if (p)
- ns_name = g_strndup (element_full, p - element_full);
+ {
+ ns_name = g_strndup (element_full, p - element_full);
+ element_name = g_utf8_next_char (p);
+ }
else
- ns_name = g_strdup ("default");
+ {
+ ns_name = g_strdup ("default");
+ element_name = element_full;
+ }
- ns_uri = g_strdup (g_hash_table_lookup (parse_data->namespaces, ns_name));
+ ns_uri = g_hash_table_lookup (parse_data->namespaces, ns_name);
if (!ns_uri)
{
/* no default namespace found */
return (0 == strcmp (element_full, element));
}
- p = g_utf8_next_char (p);
- element_name = g_strdup (p);
-
resolved = g_strdup_printf ("%s%c%s", ns_uri, sep, element_name);
s = g_strdup_printf ("%s%c%s", namespace, sep, element);
retval = (0 == strcmp (resolved, s));
g_free (ns_name);
- g_free (ns_uri);
- g_free (element_name);
g_free (resolved);
g_free (s);
g_free (payload);
}
-static GMarkupParser markup_parser =
+static const GMarkupParser markup_parser =
{
start_element_raw_cb, /* start_element */
end_element_raw_cb, /* end_element */
static gchar *
g_bookmark_file_dump (GBookmarkFile *bookmark,
- gsize *length,
- GError **error)
+ gsize *length,
+ GError **error)
{
GString *retval;
GList *l;
GQuark
g_bookmark_file_error_quark (void)
{
- static GQuark error_quark = 0;
-
- if (G_UNLIKELY (error_quark == 0))
- error_quark = g_quark_from_static_string ("egg-bookmark-file-error-quark");
-
- return error_quark;
+ return g_quark_from_static_string ("egg-bookmark-file-error-quark");
}
if (!uri)
{
g_free (bookmark->title);
-
- if (title && title[0] != '\0')
- bookmark->title = g_strdup (title);
+ bookmark->title = g_strdup (title);
}
else
{
}
g_free (item->title);
-
- if (title && title[0] != '\0')
- item->title = g_strdup (title);
+ item->title = g_strdup (title);
item->modified = time (NULL);
}
if (!uri)
{
- g_free (bookmark->description);
-
- if (description && description[0] != '\0')
- bookmark->description = g_strdup (description);
+ g_free (bookmark->description);
+ bookmark->description = g_strdup (description);
}
else
{
}
g_free (item->description);
-
- if (description && description[0] != '\0')
- item->description = g_strdup (description);
+ item->description = g_strdup (description);
item->modified = time (NULL);
}
set_error = NULL;
retval = g_bookmark_file_set_app_info (bookmark, uri,
name,
- NULL,
+ "",
0,
(time_t) -1,
&set_error);
ch = *exec_fmt++;
switch (ch)
{
+ case '\0':
+ goto out;
case 'u':
- g_string_append_printf (exec, "%s", uri);
+ g_string_append (exec, uri);
break;
case 'f':
{
- gchar *file = g_filename_from_uri (uri, NULL, NULL);
- g_string_append_printf (exec, "%s", file);
- g_free (file);
+ gchar *file = g_filename_from_uri (uri, NULL, NULL);
+ g_string_append (exec, file);
+ g_free (file);
}
break;
case '%':
}
}
+ out:
return g_string_free (exec, FALSE);
}
g_return_val_if_fail (bookmark != NULL, FALSE);
g_return_val_if_fail (uri != NULL, FALSE);
- g_return_val_if_fail (app_name != NULL, FALSE);
+ g_return_val_if_fail (name != NULL, FALSE);
item = g_bookmark_file_lookup_item (bookmark, uri);
if (!item)
g_return_val_if_fail (bookmark != NULL, FALSE);
g_return_val_if_fail (old_uri != NULL, FALSE);
-
+
item = g_bookmark_file_lookup_item (bookmark, old_uri);
if (!item)
{
return FALSE;
}
}
+
+ g_hash_table_steal (bookmark->items_by_uri, item->uri);
g_free (item->uri);
item->uri = g_strdup (new_uri);
item->modified = time (NULL);
-
+
+ g_hash_table_replace (bookmark->items_by_uri, item->uri, item);
+
return TRUE;
}
else
return FALSE;
}
+
+ return TRUE;
}
-
- return FALSE;
}
/**
g_free (item->metadata->icon_href);
g_free (item->metadata->icon_mime);
- if (href && href[0] != '\0')
- item->metadata->icon_href = g_strdup (href);
+ item->metadata->icon_href = g_strdup (href);
if (mime_type && mime_type[0] != '\0')
item->metadata->icon_mime = g_strdup (mime_type);