[cfe-dev] [LLVMdev] Unicode path handling on Windows

Aaron Ballman aaron at aaronballman.com
Tue Oct 4 05:25:52 PDT 2011


On Tue, Oct 4, 2011 at 4:19 AM, Nikola Smiljanic <popizdeh at gmail.com> wrote:
> In that case I think that this is it :)
>
> On Tue, Oct 4, 2011 at 8:24 AM, Bryce Cogswell <bryceco at gmail.com> wrote:
>>
>> That should be fine. I don't believe the concern about performing a
>> char-by-char conversion is valid; for example the NTFS-3G driver uses a
>> simplistic upcase table and seems to work fine. I suspect Windows does the
>> same.

Index: include/llvm/Support/FileSystem.h
===================================================================
--- include/llvm/Support/FileSystem.h	(revision 141071)
+++ include/llvm/Support/FileSystem.h	(working copy)
@@ -436,6 +436,32 @@

+  for (int i = 0; i != argc; ++i)
+  {
+    // check lenght

May want to correct the typo.

Index: lib/Basic/ConvertUTF.c
===================================================================
--- lib/Basic/ConvertUTF.c	(revision 141071)
+++ lib/Basic/ConvertUTF.c	(working copy)
@@ -218,74 +218,7 @@

+      /* Figure out how many bytes the result will require */
+      if (ch < (UTF32)0x80) {      bytesToWrite = 1;
+      } else if (ch < (UTF32)0x800) {     bytesToWrite = 2;
+      } else if (ch < (UTF32)0x10000) {   bytesToWrite = 3;
+      } else if (ch < (UTF32)0x110000) {  bytesToWrite = 4;
+      } else {                            bytesToWrite = 3;
+      ch = UNI_REPLACEMENT_CHAR;
+      }

I think this should be formatted more like this to meet our coding
standards (but am not 100% sure, so I will defer to others):

if (ch < (UTF32)0x80)
   bytesToWrite = 1;
else if (ch < (UTF32)0x800)
  bytesToWrite = 2;
...
else
  ch = UNI_REPLACEMENT_CHAR;

Those are the only minor nitpicks, well done!

~Aaron




More information about the cfe-dev mailing list