From 983a717fa6431d67ce9d765c1714f77ecb0b02fa Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 12 Nov 2009 01:37:27 -0500 Subject: [PATCH] =?UTF-8?q?Bug=C2=A0535159=20-=20g=5Ffile=5Fhas=5Fparent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add a g_file_has_parent() function as a wrapper around g_file_get_parent() --- docs/reference/gio/gio-sections.txt | 1 + gio/gfile.c | 43 +++++++++++++++++++++++++++++ gio/gfile.h | 2 ++ gio/gio.symbols | 1 + 4 files changed, 47 insertions(+) diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index 31744f5c4..9264424b4 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -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 diff --git a/gio/gfile.c b/gio/gfile.c index c4a72e35d..36c043946 100644 --- a/gio/gfile.c +++ b/gio/gfile.c @@ -653,6 +653,49 @@ g_file_get_parent (GFile *file) return (* iface->get_parent) (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. diff --git a/gio/gfile.h b/gio/gfile.h index 611639e1e..918f26a55 100644 --- a/gio/gfile.h +++ b/gio/gfile.h @@ -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, diff --git a/gio/gio.symbols b/gio/gio.symbols index 47ad861f9..204436e5e 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -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