Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- convert.c | 29 +++++++++++++++++++++++++++++ convert.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/convert.c b/convert.c index 814e814..b458734 100644 --- a/convert.c +++ b/convert.c @@ -758,6 +758,35 @@ static void convert_attrs(struct conv_attrs *ca, const char *path) } } +enum eol eol_for_path(const char *path, const char *src, size_t len) +{ + struct conv_attrs ca; + struct text_stat stats; + + if (!path) { + memset(&ca, 0, sizeof(ca)); + ca.crlf_action = CRLF_AUTO; + ca.eol_attr = EOL_UNSET; + } else { + convert_attrs(&ca, path); + if (ca.eol_attr == EOL_UNSET) + ca.eol_attr = output_eol(ca.crlf_action); + if (ca.eol_attr != EOL_UNSET) + return ca.eol_attr; + } + if (!len || (ca.crlf_action != CRLF_AUTO && + ca.crlf_action != CRLF_GUESS)) + return core_eol; + ca.crlf_action = input_crlf_action(ca.crlf_action, ca.eol_attr); + gather_stats(src, len, &stats); + if (ca.crlf_action == CRLF_GUESS && stats.cr > stats.crlf) + return core_eol; + else if (stats.crlf) + return EOL_CRLF; + else + return EOL_LF; +} + int would_convert_to_git_filter_fd(const char *path) { struct conv_attrs ca; diff --git a/convert.h b/convert.h index d9d853c..1892867 100644 --- a/convert.h +++ b/convert.h @@ -33,6 +33,8 @@ enum eol { extern enum eol core_eol; +extern enum eol eol_for_path(const char *path, const char *src, size_t len); + /* returns 1 if *dst was used */ extern int convert_to_git(const char *path, const char *src, size_t len, struct strbuf *dst, enum safe_crlf checksafe); -- 2.7.0.windows.1.7.g55a05c8 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html