+ /* Check that leading // is honored correctly. */
+ {
+ struct stat st1;
+ struct stat st2;
+ char *result1 = canonicalize_file_name ("//.");
+ char *result2 = canonicalize_filename_mode ("//.", CAN_EXISTING);
+ char *result3 = canonicalize_file_name (BASE "/droot");
+ char *result4 = canonicalize_filename_mode (BASE "/droot", CAN_EXISTING);
+ ASSERT (result1);
+ ASSERT (result2);
+ ASSERT (result3);
+ ASSERT (result4);
+ ASSERT (stat ("/", &st1) == 0);
+ ASSERT (stat ("//", &st2) == 0);
+ if (SAME_INODE (st1, st2))
+ {
+ ASSERT (strcmp (result1, "/") == 0);
+ ASSERT (strcmp (result2, "/") == 0);
+ ASSERT (strcmp (result3, "/") == 0);
+ ASSERT (strcmp (result4, "/") == 0);
+ }
+ else
+ {
+ ASSERT (strcmp (result1, "//") == 0);
+ ASSERT (strcmp (result2, "//") == 0);
+ ASSERT (strcmp (result3, "//") == 0);
+ ASSERT (strcmp (result4, "//") == 0);
+ }
+ free (result1);
+ free (result2);
+ free (result3);
+ free (result4);
+ }
+