* 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:
parent
64e3f8f6fe
commit
76df2068c4
3 changed files with 27 additions and 1 deletions
|
@ -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.
|
||||
|
|
|
@ -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++;
|
||||
|
|
|
@ -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++)
|
||||
catkey->name[i] = grub_be_to_cpu16 (catkey->name[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)
|
||||
|
|
Loading…
Reference in a new issue