* grub-core/fs/hfs.c (macroman_to_utf8): Convert / to :.

(utf8_to_macroman): Do the opposite.
	* grub-core/fs/hfsplus.c (grub_hfsplus_iterate_dir): Convert / to :.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-01-14 23:34:33 +01:00
parent 64e3f8f6fe
commit 76df2068c4
3 changed files with 27 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2012-01-14 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/fs/hfs.c (macroman_to_utf8): Convert / to :.
(utf8_to_macroman): Do the opposite.
* grub-core/fs/hfsplus.c (grub_hfsplus_iterate_dir): Convert / to :.
2012-01-14 Vladimir Serbinenko <phcoder@gmail.com>
* configure.ac: Refise build qemu_mips w/o unifont.

View file

@ -1004,6 +1004,12 @@ macroman_to_utf8 (char *to, const grub_uint8_t *from, grub_size_t len)
for (iptr = from; iptr < from + len && *iptr; iptr++)
{
/* Translate '/' to ':' as per HFS spec. */
if (*iptr == '/')
{
*optr++ = ':';
continue;
}
if (!(*iptr & 0x80))
{
*optr++ = *iptr;
@ -1024,6 +1030,13 @@ utf8_to_macroman (grub_uint8_t *to, const char *from)
while (*iptr && optr < end)
{
int i, clen;
/* Translate ':' to '/' as per HFS spec. */
if (*iptr == ':')
{
*optr++ = '/';
iptr++;
continue;
}
if (!(*iptr & 0x80))
{
*optr++ = *iptr++;

View file

@ -789,6 +789,9 @@ grub_hfsplus_iterate_dir (grub_fshelp_node_t dir,
{
catkey->name[i] = grub_be_to_cpu16 (catkey->name[i]);
if (catkey->name[i] == '/')
catkey->name[i] = ':';
/* If the name is obviously invalid, skip this node. */
if (catkey->name[i] == 0)
return 0;
@ -799,7 +802,11 @@ grub_hfsplus_iterate_dir (grub_fshelp_node_t dir,
/* Restore the byte order to what it was previously. */
for (i = 0; i < grub_be_to_cpu16 (catkey->namelen); i++)
{
if (catkey->name[i] == ':')
catkey->name[i] = '/';
catkey->name[i] = grub_be_to_cpu16 (catkey->name[i]);
}
/* hfs+ is case insensitive. */
if (! dir->data->case_sensitive)