From 074765d3aae0a09e4cfb798f1a1e07e425849f4e Mon Sep 17 00:00:00 2001 From: doursse Date: Sat, 28 Jun 2008 09:11:48 +0000 Subject: [PATCH] open files in binary mode, to fix problems on Windows. Fix a constness SVN revision: 34931 --- legacy/edje/src/bin/edje_cc.h | 9 +++++++++ legacy/edje/src/bin/edje_cc_handlers.c | 2 +- legacy/edje/src/bin/edje_cc_out.c | 2 +- legacy/edje/src/bin/edje_cc_parse.c | 4 ++-- legacy/edje/src/bin/edje_decc.c | 4 ++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/legacy/edje/src/bin/edje_cc.h b/legacy/edje/src/bin/edje_cc.h index 99ecb97022..2c9af76dc1 100644 --- a/legacy/edje/src/bin/edje_cc.h +++ b/legacy/edje/src/bin/edje_cc.h @@ -3,6 +3,15 @@ #include "edje_main.h" +/* + * On Windows, if the file is not opened in binary mode, + * read does not return the correct size, because of + * CR / LF translation. + */ +#ifndef O_BINARY +# define O_BINARY 0 +#endif + /* types */ typedef struct _New_Object_Handler New_Object_Handler; typedef struct _New_Statement_Handler New_Statement_Handler; diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 1d2fbfcf01..6e89c31fc1 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -749,7 +749,7 @@ st_data_file(void) di->key = parse_str(0); filename = parse_str(1); - fd = open(filename, O_RDONLY); + fd = open(filename, O_RDONLY | O_BINARY); if (fd < 0) { fprintf(stderr, "%s: Error. %s:%i when opening file \"%s\": \"%s\"\n", diff --git a/legacy/edje/src/bin/edje_cc_out.c b/legacy/edje/src/bin/edje_cc_out.c index 26896d5f12..b22a788b6d 100644 --- a/legacy/edje/src/bin/edje_cc_out.c +++ b/legacy/edje/src/bin/edje_cc_out.c @@ -610,7 +610,7 @@ data_write(void) char tmpo[4096]; int ret; - f = fopen(tmpn, "w"); + f = fopen(tmpn, "wb"); if (f) { Evas_List *ll; diff --git a/legacy/edje/src/bin/edje_cc_parse.c b/legacy/edje/src/bin/edje_cc_parse.c index bd7ef3db2d..7210ce8299 100644 --- a/legacy/edje/src/bin/edje_cc_parse.c +++ b/legacy/edje/src/bin/edje_cc_parse.c @@ -611,7 +611,7 @@ compile(void) int fd; off_t size; char *data, *p; - char *tmpdir; + const char *tmpdir; #ifdef HAVE_EVIL tmpdir = evil_tmpdir_get(); @@ -693,7 +693,7 @@ compile(void) free(def); */ } - fd = open(file_in, O_RDONLY); + fd = open(file_in, O_RDONLY | O_BINARY); if (fd < 0) { fprintf(stderr, "%s: Error. cannot open file \"%s\" for input. %s\n", diff --git a/legacy/edje/src/bin/edje_decc.c b/legacy/edje/src/bin/edje_decc.c index c5f2225e82..d9e5e24cb3 100644 --- a/legacy/edje/src/bin/edje_decc.c +++ b/legacy/edje/src/bin/edje_decc.c @@ -226,7 +226,7 @@ output(void) printf("ERROR: potential security violation. attempt to write in parent dir.\n"); exit (-1); } - f = fopen(out, "w"); + f = fopen(out, "wb"); if (!f) { printf("ERROR: unable to write file (%s).\n", out); @@ -292,7 +292,7 @@ output(void) printf("ERROR: potential security violation. attempt to write in parent dir.\n"); exit (-1); } - f = fopen(out, "w"); + f = fopen(out, "wb"); fprintf(f, "#!/bin/sh\n"); fprintf(f, "%s $@ -id . -fd . %s -o %s.edj\n", edje_file->compiler, sf->name, outdir); fclose(f);