GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

Commit 6dc9b7ee authored by Alexander Larsson's avatar Alexander Larsson Committed by Alexander Larsson

Add new g_file_has_prefix that does the same as g_file_contains_file.

2008-02-21  Alexander Larsson  <alexl@redhat.com>

        * gfile.[ch]:
        * gio.symbols:
	Add new g_file_has_prefix that does the same as g_file_contains_file.
	Deprecate g_file_contains_file and add a macro that converts
	it to g_file_has_prefix.
	The reason for this change is that the contains_file() name seems to
	imply that this does more work than what it does, but its really only
	a name match (from #517086)
	
        * gdummyfile.c:
        * glocalfile.c:
        * tests/g-file.c:
	Update to match the above change.


svn path=/trunk/; revision=6546
parent 03c51e95
2008-02-21 Alexander Larsson <alexl@redhat.com>
* gfile.[ch]:
* gio.symbols:
Add new g_file_has_prefix that does the same as g_file_contains_file.
Deprecate g_file_contains_file and add a macro that converts
it to g_file_has_prefix.
The reason for this change is that the contains_file() name seems to
imply that this does more work than what it does, but its really only
a name match (from #517086)
* gdummyfile.c:
* glocalfile.c:
* tests/g-file.c:
Update to match the above change.
2008-02-20 Benjamin Otte <otte@gnome.org>
* gfile.c: (g_file_mount_mountable), (g_file_unmount_mountable),
......
......@@ -261,8 +261,7 @@ match_prefix (const char *path,
}
static gboolean
g_dummy_file_contains_file (GFile *parent,
GFile *descendant)
g_dummy_file_prefix_matches (GFile *parent, GFile *descendant)
{
GDummyFile *parent_dummy = G_DUMMY_FILE (parent);
GDummyFile *descendant_dummy = G_DUMMY_FILE (descendant);
......@@ -425,7 +424,7 @@ g_dummy_file_file_iface_init (GFileIface *iface)
iface->get_uri = g_dummy_file_get_uri;
iface->get_parse_name = g_dummy_file_get_parse_name;
iface->get_parent = g_dummy_file_get_parent;
iface->contains_file = g_dummy_file_contains_file;
iface->prefix_matches = g_dummy_file_prefix_matches;
iface->get_relative_path = g_dummy_file_get_relative_path;
iface->resolve_relative_path = g_dummy_file_resolve_relative_path;
iface->get_child_for_display_name = g_dummy_file_get_child_for_display_name;
......
......@@ -617,32 +617,60 @@ g_file_get_child_for_display_name (GFile *file,
return (* iface->get_child_for_display_name) (file, display_name, error);
}
#undef g_file_contains_file
/**
* g_file_contains_file:
* @parent: input #GFile.
* @descendant: input #GFile.
*
* Checks whether @parent (recursively) contains the specified @descendant.
*
* This call does no blocking i/o.
*
*
* Deprecated version of g_file_has_prefix().
*
* Returns: %TRUE if the @descendant's parent, grandparent, etc is @parent. %FALSE otherwise.
**/
*
* Deprecated:2.16: The initial chosen name was unfortunate, as it
* may cause you to think this function did more than just
* filename comparisons.
*/
gboolean
g_file_contains_file (GFile *parent,
GFile *descendant)
{
/* This function is not in the header and will not be referenced by newly built code */
return g_file_has_prefix (descendant, parent);
}
/**
* g_file_has_prefix:
* @file: input #GFile.
* @prefix: input #GFile.
*
* Checks whether @file has the prefix specified by @prefix. In other word, if the
* inital elements of @file<!-- -->s pathname match @prefix.
*
* This call does no i/o, as it works purely on names. As such it can sometimes
* return %FALSE even if @file is inside a @prefix (from a filesystem point of view),
* because the prefix of @file is an alias of @prefix.
*
* Returns: %TRUE if the @files's parent, grandparent, etc is @prefix. %FALSE otherwise.
**/
gboolean
g_file_has_prefix (GFile *file,
GFile *prefix)
{
GFileIface *iface;
g_return_val_if_fail (G_IS_FILE (parent), FALSE);
g_return_val_if_fail (G_IS_FILE (descendant), FALSE);
g_return_val_if_fail (G_IS_FILE (file), FALSE);
g_return_val_if_fail (G_IS_FILE (prefix), FALSE);
if (G_TYPE_FROM_INSTANCE (parent) != G_TYPE_FROM_INSTANCE (descendant))
if (G_TYPE_FROM_INSTANCE (file) != G_TYPE_FROM_INSTANCE (prefix))
return FALSE;
iface = G_FILE_GET_IFACE (parent);
iface = G_FILE_GET_IFACE (file);
return (* iface->contains_file) (parent, descendant);
/* The vtable function differs in arg order since we're
using the old contains_file call */
return (* iface->prefix_matches) (prefix, file);
}
/**
......
......@@ -187,7 +187,7 @@ typedef gboolean (* GFileReadMoreCallback) (const char *file_contents,
* @get_uri: Gets a URI for the path within a #GFile.
* @get_parse_name: Gets the parsed name for the #GFile.
* @get_parent: Gets the parent directory for the #GFile.
* @contains_file: Checks whether a #GFile contains a specified file.
* @prefix_matches: Checks whether a #GFile contains a specified file.
* @get_relative_path: Gets the path for a #GFile relative to a given path.
* @resolve_relative_path: Resolves a relative path for a #GFile to an absolute path.
* @get_child_for_display_name: Gets the child #GFile for a given display name.
......@@ -278,8 +278,8 @@ struct _GFileIface
char * (*get_uri) (GFile *file);
char * (*get_parse_name) (GFile *file);
GFile * (*get_parent) (GFile *file);
gboolean (*contains_file) (GFile *parent,
GFile *descendant);
gboolean (*prefix_matches) (GFile *prefix,
GFile *file);
char * (*get_relative_path) (GFile *parent,
GFile *descendant);
GFile * (*resolve_relative_path) (GFile *file,
......@@ -573,8 +573,11 @@ GFile * g_file_get_child (GFile
GFile * g_file_get_child_for_display_name (GFile *file,
const char *display_name,
GError **error);
gboolean g_file_contains_file (GFile *parent,
GFile *descendant);
#ifndef G_DISABLE_DEPRECATED
#define g_file_contains_file(_parent, _child) g_file_has_prefix (_child, _parent)
#endif
gboolean g_file_has_prefix (GFile *file,
GFile *prefix);
char * g_file_get_relative_path (GFile *parent,
GFile *descendant);
GFile * g_file_resolve_relative_path (GFile *file,
......
......@@ -230,7 +230,7 @@ g_file_get_parse_name
g_file_get_parent
g_file_get_child
g_file_get_child_for_display_name
g_file_contains_file
g_file_has_prefix
g_file_get_relative_path
g_file_resolve_relative_path
g_file_is_native
......
......@@ -519,8 +519,8 @@ match_prefix (const char *path,
}
static gboolean
g_local_file_contains_file (GFile *parent,
GFile *descendant)
g_local_file_prefix_matches (GFile *parent,
GFile *descendant)
{
GLocalFile *parent_local = G_LOCAL_FILE (parent);
GLocalFile *descendant_local = G_LOCAL_FILE (descendant);
......@@ -1977,7 +1977,7 @@ g_local_file_file_iface_init (GFileIface *iface)
iface->get_uri = g_local_file_get_uri;
iface->get_parse_name = g_local_file_get_parse_name;
iface->get_parent = g_local_file_get_parent;
iface->contains_file = g_local_file_contains_file;
iface->prefix_matches = g_local_file_prefix_matches;
iface->get_relative_path = g_local_file_get_relative_path;
iface->resolve_relative_path = g_local_file_resolve_relative_path;
iface->get_child_for_display_name = g_local_file_get_child_for_display_name;
......
......@@ -348,12 +348,12 @@ test_g_file_new_for_commandline_arg (void)
}
static char*
get_relative_path (const gboolean use_uri, const gboolean should_contain_file, const char *dir1, const char *dir2)
get_relative_path (const gboolean use_uri, const gboolean should_have_prefix, const char *dir1, const char *dir2)
{
GFile *file1 = NULL;
GFile *file2 = NULL;
GFile *file3 = NULL;
gboolean contains_file = FALSE;
gboolean has_prefix = FALSE;
char *relative_path = NULL;
if (use_uri)
......@@ -370,12 +370,12 @@ get_relative_path (const gboolean use_uri, const gboolean should_contain_file, c
g_assert (file1 != NULL);
g_assert (file2 != NULL);
contains_file = g_file_contains_file (file1, file2);
has_prefix = g_file_has_prefix (file2, file1);
g_print ("%s %s\n", dir1, dir2);
g_assert (contains_file == should_contain_file);
g_assert (has_prefix == should_have_prefix);
relative_path = g_file_get_relative_path (file1, file2);
if (should_contain_file)
if (should_have_prefix)
{
g_assert (relative_path != NULL);
......@@ -394,7 +394,7 @@ get_relative_path (const gboolean use_uri, const gboolean should_contain_file, c
}
static void
test_g_file_contains_file (void)
test_g_file_has_prefix (void)
{
/* TestPathsWithOper.equal represents here if the dir belongs to the directory structure */
const struct TestPathsWithOper dirs[] =
......@@ -528,8 +528,8 @@ main (int argc,
/* Testing g_file_new_for_commandline_arg() for correct relavive path resolution and correct path/URI guess */
g_test_add_func ("/g-file/test_g_file_new_for_commandline_arg", test_g_file_new_for_commandline_arg);
/* Testing g_file_contains_file(), g_file_get_relative_path() and g_file_resolve_relative_path() to return and process correct relative paths */
g_test_add_func ("/g-file/test_g_file_contains_file", test_g_file_contains_file);
/* Testing g_file_has_prefix(), g_file_get_relative_path() and g_file_resolve_relative_path() to return and process correct relative paths */
g_test_add_func ("/g-file/test_g_file_has_prefix", test_g_file_has_prefix);
/* Testing g_file_get_parent() and g_file_get_child() */
g_test_add_func ("/g-file/test_g_file_get_parent_child", test_g_file_get_parent_child);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment