From: Torsten Bögershausen <redacted>
Add a helper function to find out, which line endings
text files should get at checkout, depending on
core.autocrlf and core.eol
Signed-off-by: Torsten Bögershausen <redacted>
---
convert.c | 25 +++++++++++++++++--------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/convert.c b/convert.c
index d0c8c66..9ffd043 100644
--- a/convert.c
+++ b/convert.c
@@ -149,6 +149,19 @@ const char *get_wt_convert_stats_ascii(const char *path)
return ret;
}
+static int text_eol_is_crlf(void)
+{
+ if (auto_crlf == AUTO_CRLF_TRUE)
+ return 1;
+ else if (auto_crlf == AUTO_CRLF_INPUT)
+ return 0;
+ if (core_eol == EOL_CRLF)
+ return 1;
+ if (core_eol == EOL_UNSET && EOL_NATIVE == EOL_CRLF)
+ return 1;
+ return 0;
+}
+
static enum eol output_eol(enum crlf_action crlf_action)
{
switch (crlf_action) {@@ -164,12 +177,7 @@ static enum eol output_eol(enum crlf_action crlf_action)
/* fall through */
case CRLF_TEXT:
case CRLF_AUTO:
- if (auto_crlf == AUTO_CRLF_TRUE)
- return EOL_CRLF;
- else if (auto_crlf == AUTO_CRLF_INPUT)
- return EOL_LF;
- else if (core_eol == EOL_UNSET)
- return EOL_NATIVE;
+ return text_eol_is_crlf() ? EOL_CRLF : EOL_LF;
}
return core_eol;
}
@@ -1378,8 +1386,9 @@ struct stream_filter *get_stream_filter(const char *path, const unsigned char *s
(crlf_action == CRLF_GUESS && auto_crlf == AUTO_CRLF_FALSE))
filter = cascade_filter(filter, &null_filter_singleton);
- else if (output_eol(crlf_action) == EOL_CRLF &&
- !(crlf_action == CRLF_AUTO || crlf_action == CRLF_GUESS))
+ else if ((crlf_action == CRLF_AUTO || crlf_action == CRLF_GUESS))
+ ;
+ else if (output_eol(crlf_action) == EOL_CRLF)
filter = cascade_filter(filter, lf_to_crlf_filter());
return filter;
--
2.7.0.303.g2c4f448.dirty