projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ab92671
)
fixed drawing text from file that contains DOS style CR/LF line endings
author
Holger Schemel
<info@artsoft.org>
Sun, 13 Nov 2022 22:03:14 +0000
(23:03 +0100)
committer
Holger Schemel
<info@artsoft.org>
Sun, 13 Nov 2022 22:03:14 +0000
(23:03 +0100)
src/libgame/text.c
patch
|
blob
|
history
diff --git
a/src/libgame/text.c
b/src/libgame/text.c
index 280aae8af8ee8f5b6948423d4416de415833a6ec..ce855daf9604496ddc89287ae8cade95676f37b7 100644
(file)
--- a/
src/libgame/text.c
+++ b/
src/libgame/text.c
@@
-351,11
+351,24
@@
char *GetTextBufferFromFile(char *filename, int max_lines)
while (!checkEndOfFile(file) && num_lines < max_lines)
{
char line[MAX_LINE_LEN];
while (!checkEndOfFile(file) && num_lines < max_lines)
{
char line[MAX_LINE_LEN];
+ char *line_ptr;
+ int line_len;
// read next line of input file
if (!getStringFromFile(file, line, MAX_LINE_LEN))
break;
// read next line of input file
if (!getStringFromFile(file, line, MAX_LINE_LEN))
break;
+ line_len = strlen(line);
+
+ // cut trailing line break (this can be newline and/or carriage return)
+ for (line_ptr = &line[line_len]; line_ptr >= line; line_ptr--)
+ if ((*line_ptr == '\n' || *line_ptr == '\r') && *(line_ptr + 1) == '\0')
+ *line_ptr = '\0';
+
+ // re-add newline (so the result is terminated by newline, but not CR/LF)
+ if (strlen(line) != line_len)
+ strcat(line, "\n");
+
buffer = checked_realloc(buffer, strlen(buffer) + strlen(line) + 1);
strcat(buffer, line);
buffer = checked_realloc(buffer, strlen(buffer) + strlen(line) + 1);
strcat(buffer, line);