[Xfce4-commits] <midori:master> Use stripped down XBEL variant for session and trash

Christian Dywan noreply at xfce.org
Mon Mar 11 01:30:01 CET 2013


Updating branch refs/heads/master
         to c3e74779f195037abd04c50af11c148acfae86b2 (commit)
       from e612e5923a2502706cc6fbf10ec1b98284ccaf81 (commit)

commit c3e74779f195037abd04c50af11c148acfae86b2
Author: Christian Dywan <christian at twotoasts.de>
Date:   Mon Mar 11 01:27:34 2013 +0100

    Use stripped down XBEL variant for session and trash

 midori/midori-array.c    |   50 +++++++++++++++++++++++++++------------------
 midori/midori-frontend.c |    2 +-
 midori/midori-session.c  |    2 +-
 3 files changed, 32 insertions(+), 22 deletions(-)

diff --git a/midori/midori-array.c b/midori/midori-array.c
index 06877e3..5d7d5ff 100644
--- a/midori/midori-array.c
+++ b/midori/midori-array.c
@@ -35,7 +35,8 @@ katze_xbel_parse_info (KatzeItem* item,
                        xmlNodePtr cur);
 
 static gchar*
-katze_item_metadata_to_xbel (KatzeItem* item);
+katze_item_metadata_to_xbel (KatzeItem* item,
+                             gboolean   tiny_xbel);
 
 #if HAVE_LIBXML
 static KatzeItem*
@@ -187,6 +188,7 @@ katze_xbel_parse_info (KatzeItem* item,
 /* Loads the contents from an xmlNodePtr into an array. */
 static gboolean
 katze_array_from_xmlDocPtr (KatzeArray* array,
+                            gboolean    tiny_xbel,
                             xmlDocPtr   doc)
 {
     xmlNodePtr cur;
@@ -205,7 +207,7 @@ katze_array_from_xmlDocPtr (KatzeArray* array,
         gchar* value;
 
         value = (gchar*)xmlGetProp (cur, (xmlChar*)"version");
-        if (!value || !katze_str_equal (value, "1.0"))
+        if (!tiny_xbel && (!value || !katze_str_equal (value, "1.0")))
             g_warning ("XBEL version is not 1.0.");
         g_free (value);
 
@@ -597,6 +599,7 @@ midori_array_from_file (KatzeArray*  array,
 
     /* XBEL */
     if (katze_str_equal (format, "xbel")
+     || katze_str_equal (format, "xbel-tiny")
      || !*format)
     {
         xmlDocPtr doc;
@@ -610,7 +613,7 @@ midori_array_from_file (KatzeArray*  array,
             return FALSE;
         }
 
-        if (!katze_array_from_xmlDocPtr (array, doc))
+        if (!katze_array_from_xmlDocPtr (array, katze_str_equal (format, "xbel-tiny"), doc))
         {
             /* Parsing failed */
             xmlFreeDoc (doc);
@@ -701,13 +704,14 @@ string_append_xml_element (GString*     string,
 
 static void
 string_append_item (GString*   string,
-                    KatzeItem* item)
+                    KatzeItem* item,
+                    gboolean   tiny_xbel)
 {
     gchar* metadata;
 
     g_return_if_fail (KATZE_IS_ITEM (item));
 
-    metadata = katze_item_metadata_to_xbel (item);
+    metadata = katze_item_metadata_to_xbel (item, tiny_xbel);
     if (KATZE_IS_ARRAY (item))
     {
         KatzeItem* _item;
@@ -719,7 +723,7 @@ string_append_item (GString*   string,
         string_append_xml_element (string, "title", katze_item_get_name (item));
         string_append_xml_element (string, "desc", katze_item_get_text (item));
         KATZE_ARRAY_FOREACH_ITEM_L (_item, array, list)
-            string_append_item (string, _item);
+            string_append_item (string, _item, tiny_xbel);
         g_string_append (string, metadata);
         g_string_append (string, "</folder>\n");
         g_list_free (list);
@@ -787,7 +791,8 @@ string_append_netscape_item (GString*   string,
 }
 
 static gchar*
-katze_item_metadata_to_xbel (KatzeItem* item)
+katze_item_metadata_to_xbel (KatzeItem* item,
+                             gboolean   tiny_xbel)
 {
     GList* keys = katze_item_get_meta_keys (item);
     GString* markup;
@@ -817,7 +822,7 @@ katze_item_metadata_to_xbel (KatzeItem* item)
                 string_append_escaped (markdown, value);
                 g_string_append_printf (markdown, "</%s>\n", key);
             }
-            else if (namespace)
+            else if (namespace || tiny_xbel)
             {
                 g_string_append_printf (markup, " %s=\"", key);
                 string_append_escaped (markup, value);
@@ -830,7 +835,7 @@ katze_item_metadata_to_xbel (KatzeItem* item)
                 g_string_append_c (markup, '\"');
             }
         }
-    if (!namespace)
+    if (!namespace && !tiny_xbel)
     {
         namespace_uri = "http://www.twotoasts.de";
         g_string_append_printf (markup, " owner=\"%s\"", namespace_uri);
@@ -845,25 +850,27 @@ katze_item_metadata_to_xbel (KatzeItem* item)
 
 static gchar*
 katze_array_to_xbel (KatzeArray* array,
+                     gboolean    tiny_xbel,
                      GError**    error)
 {
-    gchar* metadata = katze_item_metadata_to_xbel (KATZE_ITEM (array));
+    gchar* metadata = katze_item_metadata_to_xbel (KATZE_ITEM (array), tiny_xbel);
     KatzeItem* item;
     GList* list;
 
-    GString* markup = g_string_new (
-        "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-        "<!DOCTYPE xbel PUBLIC \"+//IDN python.org//DTD "
-        "XML Bookmark Exchange Language 1.0//EN//XML\" "
-        "\"http://www.python.org/topics/xml/dtds/xbel-1.0.dtd\">\n"
-        "<xbel version=\"1.0\""
-        " xmlns:midori=\"http://www.twotoasts.de\""
-        ">\n");
+    GString* markup = g_string_new ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+    if (tiny_xbel)
+        g_string_append (markup, "<xbel>\n");
+    else
+        g_string_append (markup,
+            "<!DOCTYPE xbel PUBLIC \"+//IDN python.org//DTD "
+            "XML Bookmark Exchange Language 1.0//EN//XML\" "
+            "\"http://www.python.org/topics/xml/dtds/xbel-1.0.dtd\">\n"
+            "<xbel version=\"1.0\" xmlns:midori=\"http://www.twotoasts.de\">\n");
     string_append_xml_element (markup, "title", katze_item_get_name (KATZE_ITEM (array)));
     string_append_xml_element (markup, "desc", katze_item_get_text (KATZE_ITEM (array)));
     g_string_append (markup, metadata ? metadata : "");
     KATZE_ARRAY_FOREACH_ITEM_L (item, array, list)
-        string_append_item (markup, item);
+        string_append_item (markup, item, tiny_xbel);
     g_string_append (markup, "</xbel>\n");
 
     g_free (metadata);
@@ -909,7 +916,9 @@ midori_array_to_file_format (KatzeArray*  array,
     gboolean success;
 
     if (!g_strcmp0 (format, "xbel"))
-        data = katze_array_to_xbel (array, error);
+        data = katze_array_to_xbel (array, FALSE, error);
+    else if (!g_strcmp0 (format, "xbel-tiny"))
+        data = katze_array_to_xbel (array, TRUE, error);
     else if (!g_strcmp0 (format, "netscape"))
         data = katze_array_to_netscape_html (array, error);
     else
@@ -944,6 +953,7 @@ midori_array_to_file (KatzeArray*  array,
     g_return_val_if_fail (!error || !*error, FALSE);
 
     if (!g_strcmp0 (format, "xbel")
+    ||  !g_strcmp0 (format, "xbel-tiny")
     ||  !g_strcmp0 (format, "netscape"))
         return midori_array_to_file_format (array, filename, format, error);
 
diff --git a/midori/midori-frontend.c b/midori/midori-frontend.c
index 47593ba..9e9415e 100644
--- a/midori/midori-frontend.c
+++ b/midori/midori-frontend.c
@@ -122,7 +122,7 @@ midori_trash_remove_item_cb (KatzeArray* trash,
     gchar* config_file = midori_paths_get_config_filename_for_writing ("tabtrash.xbel");
     GError* error = NULL;
     midori_trash_add_item_no_save_cb (trash, item);
-    if (!midori_array_to_file (trash, config_file, "xbel", &error))
+    if (!midori_array_to_file (trash, config_file, "xbel-tiny", &error))
     {
         /* i18n: Trash, or wastebin, containing closed tabs */
         g_warning (_("The trash couldn't be saved. %s"), error->message);
diff --git a/midori/midori-session.c b/midori/midori-session.c
index e194b4c..b2273ef 100644
--- a/midori/midori-session.c
+++ b/midori/midori-session.c
@@ -407,7 +407,7 @@ midori_session_save_timeout_cb (KatzeArray* session)
 {
     gchar* config_file = midori_paths_get_config_filename_for_writing ("session.xbel");
     GError* error = NULL;
-    if (!midori_array_to_file (session, config_file, "xbel", &error))
+    if (!midori_array_to_file (session, config_file, "xbel-tiny", &error))
     {
         g_warning (_("The session couldn't be saved. %s"), error->message);
         g_error_free (error);


More information about the Xfce4-commits mailing list