diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2015-06-09 00:42:28 +0000 |
---|---|---|
committer | Edward Thomson <ethomson@microsoft.com> | 2015-06-22 12:00:30 -0400 |
commit | 146d0d084ea06527038e27549a8d4724d4fe5022 (patch) | |
tree | a04f4b4a65f6b9a107c3b5a1e4be31ac7a6ba407 | |
parent | 1e46d54584ea46f024f24a913200568b5694a7a7 (diff) | |
download | libgit2-146d0d084ea06527038e27549a8d4724d4fe5022.tar.gz |
crlf: give Unix the glory of autocrlf=true
Perform LF->CRLF for core.autocrlf=true on non-Win32 because core
git does.
-rw-r--r-- | src/crlf.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/crlf.c b/src/crlf.c index 2fe8a5f55..f391137c1 100644 --- a/src/crlf.c +++ b/src/crlf.c @@ -193,28 +193,29 @@ static const char *line_ending(struct crlf_attrs *ca) case GIT_CRLF_CRLF: return "\r\n"; + case GIT_CRLF_GUESS: + if (ca->auto_crlf == GIT_AUTO_CRLF_FALSE) + return "\n"; + break; + case GIT_CRLF_AUTO: case GIT_CRLF_TEXT: - case GIT_CRLF_GUESS: break; default: goto line_ending_error; } - switch (ca->eol) { - case GIT_EOL_UNSET: - return GIT_EOL_NATIVE == GIT_EOL_CRLF ? "\r\n" : "\n"; - - case GIT_EOL_CRLF: + if (ca->auto_crlf == GIT_AUTO_CRLF_TRUE) return "\r\n"; - - case GIT_EOL_LF: + else if (ca->auto_crlf == GIT_AUTO_CRLF_INPUT) return "\n"; - - default: - goto line_ending_error; - } + else if (ca->eol == GIT_EOL_UNSET) + return GIT_EOL_NATIVE == GIT_EOL_CRLF ? "\r\n" : "\n"; + else if (ca->eol == GIT_EOL_LF) + return "\n"; + else if (ca->eol == GIT_EOL_CRLF) + return "\r\n"; line_ending_error: giterr_set(GITERR_INVALID, "Invalid input to line ending filter"); @@ -299,7 +300,7 @@ static int crlf_check( return GIT_PASSTHROUGH; if (ca.crlf_action == GIT_CRLF_GUESS || - (ca.crlf_action == GIT_CRLF_AUTO && + ((ca.crlf_action == GIT_CRLF_AUTO || ca.crlf_action == GIT_CRLF_TEXT) && git_filter_source_mode(src) == GIT_FILTER_SMUDGE)) { error = git_repository__cvar( |