Prechádzať zdrojové kódy

Fix handling of Windows pathnames in build_bootloader.py (#29)

Petteri Aimonen 3 rokov pred
rodič
commit
f594e52a5b
1 zmenil súbory, kde vykonal 11 pridanie a 1 odobranie
  1. 11 1
      src/build_bootloader.py

+ 11 - 1
src/build_bootloader.py

@@ -42,6 +42,16 @@ bootloader_bin = env.ElfToBin(
 )
 
 # Convert back to .o to facilitate linking
+def escape_cpp(path):
+    '''Apply double-escaping for path name to include in generated C++ file'''
+    result = ''
+    for c in str(path).encode('utf-8'):
+        if 32 <= c <= 127 and c not in (ord('\\'), ord('"')):
+            result += chr(c)
+        else:
+            result += '\\\\%03o' % c
+    return result
+
 temp_src = env.subst(os.path.join("$BUILD_DIR", "bootloader_bin.cpp"))
 open(temp_src, 'w').write(
 '''
@@ -50,7 +60,7 @@ __asm__(
 "btldr:\\n"
 "   .incbin \\"%s\\"\\n"
 );
-''' % bootloader_bin[0]
+''' % escape_cpp(bootloader_bin[0])
 )
 
 bootloader_obj = env.Object(