Add g_file_info_set_attribute_status
authorAlexander Larsson <alexl@redhat.com>
Tue, 23 Jun 2009 09:30:14 +0000 (11:30 +0200)
committerAlexander Larsson <alexl@redhat.com>
Tue, 23 Jun 2009 14:35:41 +0000 (16:35 +0200)
Required for gvfs implementation for set_attribures_from_info.

gio/gfileinfo.c
gio/gfileinfo.h
gio/gio.symbols

index 582e744e3f99dbdfd37864e96b077cbb52f79a26..aed7975424a757044b2c0f131cebb3bab45bfd86 100644 (file)
@@ -679,6 +679,42 @@ g_file_info_get_attribute_status (GFileInfo  *info,
   return G_FILE_ATTRIBUTE_STATUS_UNSET;
 }
 
+/**
+ * g_file_info_set_attribute_status:
+ * @info: a #GFileInfo
+ * @attribute: a file attribute key
+ * @status: a #GFileAttributeStatus
+ *
+ * Sets the attribute status for an attribute key. This is only
+ * needed by external code that implement g_file_set_attributes_from_info()
+ * or similar functions.
+ *
+ * The attribute must exist in @info for this to work. Otherwise %FALSE
+ * is returned and @info is unchanged.
+ *
+ * Returns: %TRUE if the status was changed, %FALSE if the key was not set.
+ *
+ * Since: 2.22
+ */
+gboolean
+g_file_info_set_attribute_status (GFileInfo  *info,
+                                 const char *attribute,
+                                 GFileAttributeStatus status)
+{
+  GFileAttributeValue *val;
+
+  g_return_val_if_fail (G_IS_FILE_INFO (info), 0);
+  g_return_val_if_fail (attribute != NULL && *attribute != '\0', 0);
+
+  val = g_file_info_find_value_by_name (info, attribute);
+  if (val)
+    {
+      val->status = status;
+      return TRUE;
+    }
+
+  return FALSE;
+}
 
 GFileAttributeValue *
 _g_file_info_get_attribute_value (GFileInfo  *info,
index 330e9960552dae648eefbe1cf5a3b87d9f3be6eb..3fc521733485d6cd64f15050e7a3c1f8e3312ae6 100644 (file)
@@ -764,6 +764,9 @@ void               g_file_info_remove_attribute          (GFileInfo  *info,
                                                          const char *attribute);
 GFileAttributeStatus g_file_info_get_attribute_status    (GFileInfo  *info,
                                                          const char *attribute);
+gboolean           g_file_info_set_attribute_status      (GFileInfo  *info,
+                                                         const char *attribute,
+                                                         GFileAttributeStatus status);
 char *             g_file_info_get_attribute_as_string   (GFileInfo  *info,
                                                          const char *attribute);
 const char *       g_file_info_get_attribute_string      (GFileInfo  *info,
index d0200a27f6cdfd7dce97fa9de182e94df0498aa2..2323c9311eea9cf64ba7485d5fca8436c2614a6b 100644 (file)
@@ -393,6 +393,7 @@ g_file_info_get_attribute_uint64
 g_file_info_get_attribute_int64 
 g_file_info_get_attribute_object 
 g_file_info_get_attribute_stringv
+g_file_info_set_attribute_status
 g_file_info_set_attribute 
 g_file_info_set_attribute_string 
 g_file_info_set_attribute_byte_string