BugĀ 535159 - g_file_has_parent
authorRyan Lortie <desrt@desrt.ca>
Thu, 12 Nov 2009 06:37:27 +0000 (01:37 -0500)
committerRyan Lortie <desrt@desrt.ca>
Wed, 18 Nov 2009 02:27:38 +0000 (20:27 -0600)
- add a g_file_has_parent() function as a wrapper around
   g_file_get_parent()

docs/reference/gio/gio-sections.txt
gio/gfile.c
gio/gfile.h
gio/gio.symbols

index 31744f5..9264424 100644 (file)
@@ -86,6 +86,7 @@ g_file_get_path
 g_file_get_uri
 g_file_get_parse_name
 g_file_get_parent
+g_file_has_parent
 g_file_get_child
 g_file_get_child_for_display_name
 g_file_has_prefix
index c4a72e3..36c0439 100644 (file)
@@ -654,6 +654,49 @@ g_file_get_parent (GFile *file)
 }
 
 /**
+ * g_file_has_parent:
+ * @file: input #GFile
+ * @parent: the parent to check for, or %NULL
+ *
+ * Checks if @file has a parent, and optionally, if it is @parent.
+ *
+ * If @parent is %NULL then this function returns %TRUE if @file has any
+ * parent at all.  If @parent is non-%NULL then %TRUE is only returned
+ * if @file is a child of @parent.
+ *
+ * Returns: %TRUE if @file is a child of @parent (or any parent in the
+ *          case that @parent is %NULL).
+ *
+ * Since: 2.24
+ **/
+gboolean
+g_file_has_parent (GFile *file,
+                   GFile *parent)
+{
+  GFile *actual_parent;
+  gboolean result;
+
+  g_return_val_if_fail (G_IS_FILE (file), FALSE);
+  g_return_val_if_fail (parent == NULL || G_IS_FILE (parent), FALSE);
+
+  actual_parent = g_file_get_parent (file);
+
+  if (actual_parent != NULL)
+    {
+      if (parent != NULL)
+        result = g_file_equal (parent, actual_parent);
+      else
+        result = TRUE;
+
+      g_object_unref (actual_parent);
+    }
+  else
+    result = FALSE;
+
+  return result;
+}
+
+/**
  * g_file_get_child:
  * @file: input #GFile.
  * @name: string containing the child's basename.
index 611639e..918f26a 100644 (file)
@@ -560,6 +560,8 @@ char *                  g_file_get_path                   (GFile
 char *                  g_file_get_uri                    (GFile                      *file);
 char *                  g_file_get_parse_name             (GFile                      *file);
 GFile *                 g_file_get_parent                 (GFile                      *file);
+gboolean                g_file_has_parent                 (GFile                      *file,
+                                                           GFile                      *parent);
 GFile *                 g_file_get_child                  (GFile                      *file,
                                                           const char                 *name);
 GFile *                 g_file_get_child_for_display_name (GFile                      *file,
index 47ad861..204436e 100644 (file)
@@ -257,6 +257,7 @@ g_file_get_path
 g_file_get_uri
 g_file_get_parse_name
 g_file_get_parent
+g_file_has_parent
 g_file_get_child
 g_file_get_child_for_display_name
 g_file_has_prefix