commit 66e21a355a05fd5571ee548e9db238d8bb0a56ea
parent 56f834a38e4322131993b136cfecb9bc606a4ab0
Author: vaplv <vaplv@free.fr>
Date: Tue, 30 Sep 2014 15:43:21 +0200
Handle the \r\n end of line
Diffstat:
3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/aw_mtl.c b/src/aw_mtl.c
@@ -646,9 +646,10 @@ aw_mtl_load_stream(struct aw_mtl* mtl, FILE* stream)
if(!fgets(line + strlen(line), (int)buf_chunk, stream)) /* EOF */
break;
}
- last_char = strlen(line) - 1;
- if(line[last_char] == '\n') /* Remove the newline character */
- line[last_char] = '\0';
+ /* Remove the newline character(s) */
+ last_char = strlen(line);
+ while(last_char-- && (line[last_char]=='\n' || line[last_char]=='\r'));
+ line[last_char + 1] = '\0';
if(R_OK != (res = parse_mtl_line(mtl, line)))
goto error;
diff --git a/src/aw_obj.c b/src/aw_obj.c
@@ -462,6 +462,7 @@ parse_obj_line(struct aw_obj* obj, char* line)
logger_print(obj->logger, LOG_ERROR,
"%s:%lu: warning: ignored or malformed directive %s\n",
obj->filename, (unsigned long)obj->iline, word);
+ while((word = strtok_r(NULL, " \t", &word_tk))); /* Skip the line */
}
if(res != R_OK)
goto error;
@@ -636,9 +637,11 @@ aw_obj_load_stream(struct aw_obj* obj, FILE* stream)
if(!fgets(line + strlen(line), (int)buf_chunk, stream)) /* EOF */
break;
}
- last_char = strlen(line) - 1;
- if(line[last_char] == '\n') /* Remove the newline character */
- line[last_char] = '\0';
+
+ /* Remove the newline character(s) */
+ last_char = strlen(line);
+ while(last_char-- && (line[last_char]=='\n' || line[last_char]=='\r'));
+ line[last_char + 1] = '\0';
if(R_OK != (res = parse_obj_line(obj, line)))
goto error;
diff --git a/src/test_aw_obj.c b/src/test_aw_obj.c
@@ -389,7 +389,7 @@ test_cbox(struct aw_obj* obj)
"v -1.02 1.99 0.99\n"
"g left\n"
"usemtl left\n"
- "f -4 -3 -2 -1\n";
+ "f -4 -3 -2 -1";
struct aw_obj_desc desc;
struct aw_obj_face face;
struct aw_obj_vertex vertex;