grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: hfs patch (Re: State of GRUB on PowerPC)


From: Pavel Roskin
Subject: Re: hfs patch (Re: State of GRUB on PowerPC)
Date: Sat, 07 Feb 2009 23:38:36 -0500
User-agent: Internet Messaging Program (IMP) H3 (4.1.4)

Quoting Robert Millan <address@hidden>:

On Tue, Jan 27, 2009 at 08:19:41AM +0100, Michel Dänzer wrote:
+/*
+ * unsigned char caseorder[]
+ *
+ * Defines the lexical ordering of characters on the Macintosh
+ *
+ * Composition of the 'casefold' and 'order' tables from ARDI's code
+ * with the entry for 0x20 changed to match that for 0xCA to remove
+ * special case for those two characters.
+ */
+static unsigned char caseorder[256] = {
+       
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,

Could you be more specific about what the table contents mean?

Michel may know better, but I think it's the order of characters. Those with the lower order go first in the sorted binary tree. Those with the same order are equivalent on the filesystem level. That is, "foo" can only be between "bar" and "quux" in the node tree. "foo" and "Foo" are the same tree node and thus the same file.

+  for (i = 0; i < k1->strlen && i < k2->strlen; i++) {
+    cmp = caseorder[k1->str[i]] - caseorder[k2->str[i]];

I think "a = (b != c)" would be more efficient (and also work).

I don't think so.

"The function strcasecmp() returns a positive integer if, disregarding case, string s1 is lexically greater than string s2; zero if, other than case the two strings are identical; and a negative integer if, disregarding case, string s1 is lexically less than string s2."

--
Regards,
Pavel Roskin




reply via email to

[Prev in Thread] Current Thread [Next in Thread]