mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-11-23 13:50:11 +00:00
[split-file] Respect input file's line endings
This change adds support for split-file to respect the line ending style of the input file. This enables split-file to work as expected on Windows with input files containing CRLF line endings. The test files added along with this change mirror the existing basic tests, but are forced to contain CRLF line endings via git attributes. This will result in the tests always containing CRLF line endings when checked out regardless of the user's OS. Reviewed By: MaskRay Differential Revision: https://reviews.llvm.org/D117897
This commit is contained in:
parent
08574ce4d6
commit
13fa17db3a
2
llvm/.gitattributes
vendored
2
llvm/.gitattributes
vendored
@ -25,3 +25,5 @@ test/tools/llvm-mca/X86/directives-handle-crlf.s text eol=crlf
|
||||
test/tools/llvm-strings/radix.test text eol=lf
|
||||
test/tools/split-file/basic.test text eol=lf
|
||||
test/tools/split-file/Inputs/basic-*.txt eol=lf
|
||||
test/tools/split-file/basic.crlf.test text eol=crlf
|
||||
test/tools/split-file/Inputs/basic-*.crlf eol=crlf
|
||||
|
2
llvm/test/tools/split-file/Inputs/basic-aa.crlf
Normal file
2
llvm/test/tools/split-file/Inputs/basic-aa.crlf
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
aa
|
4
llvm/test/tools/split-file/Inputs/basic-bb.crlf
Normal file
4
llvm/test/tools/split-file/Inputs/basic-bb.crlf
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
|
||||
|
||||
bb
|
10
llvm/test/tools/split-file/basic.crlf.test
Normal file
10
llvm/test/tools/split-file/basic.crlf.test
Normal file
@ -0,0 +1,10 @@
|
||||
#--- aa
|
||||
aa
|
||||
;--- bb
|
||||
bb
|
||||
;--- end
|
||||
|
||||
# RUN: rm -rf %t
|
||||
# RUN: split-file --leading-lines %s %t
|
||||
# RUN: diff %S/Inputs/basic-aa.crlf %t/aa
|
||||
# RUN: diff %S/Inputs/basic-bb.crlf %t/bb
|
@ -71,6 +71,7 @@ struct Part {
|
||||
static int handle(MemoryBuffer &inputBuf, StringRef input) {
|
||||
DenseMap<StringRef, Part> partToBegin;
|
||||
StringRef lastPart, separator;
|
||||
StringRef EOL = inputBuf.getBuffer().detectEOL();
|
||||
for (line_iterator i(inputBuf, /*SkipBlanks=*/false, '\0'); !i.is_at_eof();) {
|
||||
const int64_t lineNo = i.line_number();
|
||||
const StringRef line = *i++;
|
||||
@ -128,7 +129,7 @@ static int handle(MemoryBuffer &inputBuf, StringRef input) {
|
||||
|
||||
Part &part = keyValue.second;
|
||||
for (int64_t i = 0; i != part.leadingLines; ++i)
|
||||
(*f).os().write('\n');
|
||||
(*f).os() << EOL;
|
||||
if (part.begin)
|
||||
(*f).os().write(part.begin, part.end - part.begin);
|
||||
outputFiles.push_back(std::move(f));
|
||||
|
Loading…
Reference in New Issue
Block a user