+2010-10-22 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/kern/emu/misc.c
+ (grub_make_system_path_relative_to_its_root): Revert r2882.
+
2010-10-22 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/lib/relocator.c (grub_relocator_subchunk): Remove now
/* buf is another filesystem; we found it. */
if (st.st_dev != num)
- break;
+ {
+ /* offset == 0 means path given is the mount point.
+ This works around special-casing of "/" in Un*x. This function never
+ prints trailing slashes (so that its output can be appended a slash
+ unconditionally). Each slash in is considered a preceding slash, and
+ therefore the root directory is an empty string. */
+ if (offset == 0)
+ {
+ free (buf);
+ free (buf2);
+ return xstrdup ("");
+ }
+ else
+ break;
+ }
offset = p - buf;
/* offset == 1 means root directory. */
}
#endif
- /* This works around special-casing of "/" in Un*x. This function never
- prints trailing slashes (so that its output can be appended a slash
- unconditionally). Each slash in it is considered a preceding slash,
- and therefore the root directory is an empty string. */
+ /* Remove trailing slashes, return empty string if root directory. */
len = strlen (buf3);
while (len > 0 && buf3[len - 1] == '/')
{