Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building glbind.h on Windows through MinGW mixes CRLF lines with LF lines #2

Open
Nostress767 opened this issue Feb 10, 2024 · 0 comments

Comments

@Nostress767
Copy link

Since glbOpenAndReadFileWithExtraData uses "rb" mode to open files, on Windows they will retain their CR (\r).

result = glbFOpen(filePath, "rb", &pFile);

This causes a problem, because despite tinyxml2 also opening the (.xml) file in "rb" mode
FILE* fp = callfopen( filename, "rb" );

they strip the CR's before parsing
if ( (_flags & NEEDS_NEWLINE_NORMALIZATION) && *p == CR ) {
// CR-LF pair becomes LF
// CR alone becomes LF
// LF-CR becomes LF
if ( *(p+1) == LF ) {
p += 2;
}
else {
++p;
}
*q = LF;
++q;
}

So, when the tags in the template file are replaced

glbind/source/glbind_build.cpp

Lines 1698 to 1706 in bb63d02

for (size_t iTag = 0; iTag < sizeof(tags)/sizeof(tags[0]); ++iTag) {
std::string generatedCode;
result = glbBuildGenerateCode_C(context, tags[iTag], generatedCode);
if (result != GLB_SUCCESS) {
return result;
}
glbReplaceAllInline(outputStr, tags[iTag], generatedCode);
}

they have only LF line endings.

You can check this is the case by compiling and running the build code with MinGW.
Checking with git:

glbind $ git ls-files --eol
i/lf    w/crlf  attr/                   .gitignore
i/lf    w/crlf  attr/                   README.md
i/lf    w/crlf  attr/                   build/README.md
i/lf    w/crlf  attr/                   examples/01_Triangle/01_Triangle.c
i/lf    w/crlf  attr/                   examples/99_ARB_shaders/99_ARB_shaders.c
i/lf    w/crlf  attr/                   examples/99_ARB_shaders/resources/FragmentShader.txt
i/lf    w/crlf  attr/                   examples/99_ARB_shaders/resources/VertexShader.txt
i/lf    w/crlf  attr/                   examples/glbExamplesCommon.c
i/lf    w/mixed attr/                   glbind.h
i/lf    w/crlf  attr/                   resources/README.md
i/lf    w/crlf  attr/                   source/external/tinyxml2.cpp
i/lf    w/crlf  attr/                   source/external/tinyxml2.h
i/lf    w/crlf  attr/                   source/glbind_build.cpp
i/lf    w/crlf  attr/                   source/glbind_template.h

I made a fix by stripping the CR's #1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant