# Shell scripts must keep LF line endings so they run on Linux/macOS CI and
# local shells regardless of the committer's platform autocrlf setting.
*.sh text eol=lf

# The cbindgen-generated C header is committed; pin it to LF so its CI drift
# check (regenerate + `git diff`) never trips on a CRLF normalization.
bindings/c/include/wickra.h text eol=lf

# C# sources (including the generated binding) are pinned to LF so the committed
# files stay stable regardless of the committer's autocrlf setting.
*.cs text eol=lf

# Go sources (including the generated binding) are pinned to LF so gofmt's CI
# check never trips on a CRLF checkout on Windows. The vendored C ABI header is
# a committed copy of bindings/c/include/wickra.h (the parent dir is outside the
# Go module), pinned to LF so the drift check never trips on CRLF.
*.go text eol=lf
go.mod text eol=lf
go.sum text eol=lf
bindings/go/include/wickra.h text eol=lf

# Java sources (including the generated binding) are pinned to LF so the
# committed files stay stable regardless of the committer's autocrlf setting.
*.java text eol=lf

# R binding: `R CMD check` requires LF in sources, Makevars and shell scripts.
*.R text eol=lf
*.Rd text eol=lf
bindings/r/configure text eol=lf
bindings/r/configure.win text eol=lf
bindings/r/src/Makevars.in text eol=lf
bindings/r/src/Makevars.win text eol=lf
bindings/r/src/wickra.c text eol=lf

# Golden fixtures are replayed byte-for-byte by every binding's parity test. Pin
# them to LF so a Windows `core.autocrlf=true` checkout doesn't rewrite them as
# CRLF — which silently broke the Node reader (`Number('inf\r')` is NaN, and a
# blank "no-bar" row gained a stray `\r`), failing only on Windows runners. The
# tolerant readers (Python `splitlines`/`float`) hid the same hazard.
testdata/golden/** text eol=lf

