2008-01-22 Alexander Larsson <alexl@redhat.com>
* glocalfile.c:
+ (canonicalize_filename):
+ Canonicalize paths that start with more than
+ two slashes.
+
+ * tests/g-file.c:
+ (compare_two_files):
+ (test_g_file_new_for_path):
+ Test the above
+
+2008-01-22 Alexander Larsson <alexl@redhat.com>
+
+ * glocalfile.c:
Allow UTF-8 in file:// parse names.
* tests/Makefile.am:
{
char *canon, *start, *p, *q;
char *cwd;
+ int i;
if (!g_path_is_absolute (filename))
{
start = (char *)g_path_skip_root (canon);
+ /* POSIX allows double slashes at the start to
+ * mean something special (as does windows too).
+ * So, "//" != "/", but more than two slashes
+ * is treated as "/".
+ */
+ i = 0;
+ for (p = start - 1;
+ (p >= canon) &&
+ G_IS_DIR_SEPARATOR (*p);
+ p--)
+ i++;
+ if (i > 2)
+ {
+ i -= 1;
+ start -= i;
+ memmove (start, start+i, strlen (start+i)+1);
+ }
+
p = start;
while (*p != 0)
{
GFile *file1 = NULL;
GFile *file2 = NULL;
gboolean equal;
-
+
if (use_uri)
{
file1 = g_file_new_for_uri (path1);
{"/", TRUE, 0, "/somedir/../"},
{"/", FALSE, 0, "/somedir/.../"},
{"//tmp/dir1", TRUE, 0, "//tmp/dir1"},
- /* Should not fail: {"/tmp/dir1", TRUE, 0, "///tmp/dir1"}, */
+ {"/tmp/dir1", TRUE, 0, "///tmp/dir1"},
+ {"/tmp/dir1", TRUE, 0, "////tmp/dir1"},
{"/tmp/dir1", TRUE, 0, "/tmp/./dir1"},
{"/tmp/dir1", TRUE, 0, "/tmp//dir1"},
{"/tmp/dir1", TRUE, 0, "/tmp///dir1///"},