Commit d3072127 authored by Shenghou Ma's avatar Shenghou Ma Committed by iant

cmd/dist: ignore \r in crlf EOL when splitlines()

Fixes build on Windows. Fixes #9234.

Change-Id: Iebf4317e7cc20ba1afea5558553166cd89783316
Reviewed-on: https://go-review.googlesource.com/1421
Reviewed-by: <iant@golang.org>
parent bd807711
...@@ -239,7 +239,8 @@ vuniq(Vec *v) ...@@ -239,7 +239,8 @@ vuniq(Vec *v)
} }
// splitlines replaces the vector v with the result of splitting // splitlines replaces the vector v with the result of splitting
// the input p after each \n. // the input p after each \n. If there is a \r immediately before
// each \n, it will be removed.
void void
splitlines(Vec *v, char *p) splitlines(Vec *v, char *p)
{ {
...@@ -249,8 +250,12 @@ splitlines(Vec *v, char *p) ...@@ -249,8 +250,12 @@ splitlines(Vec *v, char *p)
vreset(v); vreset(v);
start = p; start = p;
for(i=0; p[i]; i++) { for(i=0; p[i]; i++) {
if(p[i] == '\n') { if((p[i] == '\r' && p[i+1] == '\n') || p[i] == '\n') {
vaddn(v, start, (p+i+1)-start); vaddn(v, start, (p+i+1)-start);
if(p[i] == '\r') {
v->p[v->len-1][(p+i)-start] = '\n';
i++;
}
start = p+i+1; start = p+i+1;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment