glib r7418 - in trunk: . glib



Author: ebassi
Date: Sun Aug 31 19:53:21 2008
New Revision: 7418
URL: http://svn.gnome.org/viewvc/glib?rev=7418&view=rev

Log:
2008-08-31  Emmanuele Bassi  <ebassi gnome org>

	Bug 550096 â GBookmarkFile parser is not forward compatible

	* glib/gbookmarkfile.c:
	(parse_bookmark_element), (parse_application_element),
	(parse_mime_type_element), (parse_icon_element): Relax the
	attributes checking of the GBookmarkFile parser for the
	attributes that the desktop bookmark file specification
	defines and controls. This allows adding new attributes to
	the existing elements in newer versions without breaking the
	parser in older ones.

Modified:
   trunk/ChangeLog
   trunk/glib/gbookmarkfile.c

Modified: trunk/glib/gbookmarkfile.c
==============================================================================
--- trunk/glib/gbookmarkfile.c	(original)
+++ trunk/glib/gbookmarkfile.c	Sun Aug 31 19:53:21 2008
@@ -728,6 +728,10 @@
         visited = attribute_values[i];
       else
         {
+          /* bookmark is defined by the XBEL spec, so we need
+           * to error out if the element has different or
+           * missing attributes
+           */
           g_set_error (error, G_MARKUP_ERROR,
 		       G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
           	       _("Unexpected attribute '%s' for element '%s'"),
@@ -805,17 +809,9 @@
         stamp = attribute_values[i];
       else if (IS_ATTRIBUTE (attr, BOOKMARK_MODIFIED_ATTRIBUTE))
         modified = attribute_values[i];
-      else
-        {
-          g_set_error (error, G_MARKUP_ERROR,
-		       G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
-          	       _("Unexpected attribute '%s' for element '%s'"),
-          	       attr,
-          	       BOOKMARK_APPLICATION_ELEMENT);
-          return;
-        }        
     }
 
+  /* the "name" and "exec" attributes are mandatory */
   if (!name)
     {
       g_set_error (error, G_MARKUP_ERROR,
@@ -892,15 +888,6 @@
     {
       if (IS_ATTRIBUTE (attr, MIME_TYPE_ATTRIBUTE))
         type = attribute_values[i];
-      else
-        {
-          g_set_error (error, G_MARKUP_ERROR,
-		       G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
-          	       _("Unexpected attribute '%s' for element '%s'"),
-          	       attr,
-          	       MIME_TYPE_ELEMENT);
-          return;
-        }        
     }
 
   if (!type)
@@ -939,17 +926,9 @@
         href = attribute_values[i];
       else if (IS_ATTRIBUTE (attr, BOOKMARK_TYPE_ATTRIBUTE))
         type = attribute_values[i];
-      else
-        {
-          g_set_error (error, G_MARKUP_ERROR,
-		       G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
-          	       _("Unexpected attribute '%s' for element '%s'"),
-          	       attr,
-          	       BOOKMARK_ICON_ELEMENT);
-          return;
-        }        
     }
 
+  /* the "href" attribute is mandatory */       
   if (!href)
     {
       g_set_error (error, G_MARKUP_ERROR,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]