Author: Vlad Serebrennikov
Date: 2025-03-20T00:11:38+04:00
New Revision: bdca412681d668231aed0cb58b450713e8f9b01a

URL: 
https://github.com/llvm/llvm-project/commit/bdca412681d668231aed0cb58b450713e8f9b01a
DIFF: 
https://github.com/llvm/llvm-project/commit/bdca412681d668231aed0cb58b450713e8f9b01a.diff

LOG: [clang] Auto-detect which newline style to use for `cxx_dr_status.html` 
(#132045)

Aaron reported that `make_cxx_dr_status` replaces all newlines in
`cxx_dr_status.html`, which makes for a huge diff. On Windows, we can't
be compatible with all `autocrlf` modes at once, so this patch adds
autodetection of newline style using the existing file, if one is
present (which should be the case for all reasonable use cases).

Added: 
    

Modified: 
    clang/www/make_cxx_dr_status

Removed: 
    


################################################################################
diff  --git a/clang/www/make_cxx_dr_status b/clang/www/make_cxx_dr_status
index c787bbaff0a36..a4b87b32fc5d8 100755
--- a/clang/www/make_cxx_dr_status
+++ b/clang/www/make_cxx_dr_status
@@ -318,6 +318,22 @@ out_html.append('''\
 </html>
 ''')
 
-out_file = open(output, 'w')
+# Make an effort to remain consistent with the existing file.
+# We can't pick one newline style and use it on Windows,
+# because we can't be compatible with all 'autocrlf' modes at once.
+def detect_newline_style(file_path):
+  if not os.path.exists(file_path):
+    return '\n'
+  f = open(file_path)
+  f.readline()
+  if f.newlines is None:
+    return '\n'
+  if isinstance(f.newlines, str):
+    return f.newlines
+  newline = f.newlines[0]
+  print(f"Existing '{file_path}' has inconsistent newlines; picking 
'{newline.encode('unicode_escape').decode('utf-8')}'")
+  return newline
+    
+out_file = open(output, 'w', newline=detect_newline_style(output))
 out_file.write(''.join(out_html))
 out_file.close()


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to