[libc-commits] [libc] 6d0174e - [libc] allow libc-hdrgen to work on windows files (#87292)

via libc-commits libc-commits at lists.llvm.org
Mon Apr 1 17:04:33 PDT 2024


Author: Stephen Neuendorffer
Date: 2024-04-01T17:04:29-07:00
New Revision: 6d0174e70641b1ea172ffed07c43604ef15e28ae

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

LOG: [libc] allow libc-hdrgen to work on windows files (#87292)

The code does some (overly simple?) checks on file syntax. These checks
assume unix line endings and fail on windows. This commit updates the
code to strip extra whitespace, making the checks more robust,
particularly in the presence of windows line endings.

Fixes #86023

Added: 
    

Modified: 
    libc/utils/HdrGen/Generator.cpp

Removed: 
    


################################################################################
diff  --git a/libc/utils/HdrGen/Generator.cpp b/libc/utils/HdrGen/Generator.cpp
index 3bcf005adda74f..d926d5d9ac3c8d 100644
--- a/libc/utils/HdrGen/Generator.cpp
+++ b/libc/utils/HdrGen/Generator.cpp
@@ -84,11 +84,19 @@ void Generator::generate(llvm::raw_ostream &OS, llvm::RecordKeeper &Records) {
       Line = Line.drop_front(CommandPrefixSize);
 
       P = Line.split("(");
+      // It's possible that we have windows line endings, so strip off the extra
+      // CR.
+      P.second = P.second.trim();
       if (P.second.empty() || P.second[P.second.size() - 1] != ')') {
         SrcMgr.PrintMessage(llvm::SMLoc::getFromPointer(P.second.data()),
                             llvm::SourceMgr::DK_Error,
                             "Command argument list should begin with '(' "
                             "and end with ')'.");
+        SrcMgr.PrintMessage(llvm::SMLoc::getFromPointer(P.second.data()),
+                            llvm::SourceMgr::DK_Error, P.second.data());
+        SrcMgr.PrintMessage(llvm::SMLoc::getFromPointer(P.second.data()),
+                            llvm::SourceMgr::DK_Error,
+                            std::to_string(P.second.size()));
         std::exit(1);
       }
       llvm::StringRef CommandName = P.first;


        


More information about the libc-commits mailing list