Enlightenment CVS committal Author : raster Project : e17 Module : libs/edje
Dir : e17/libs/edje/src/bin Modified Files: edje_cc_handlers.c edje_main.h Log Message: edje data file patches in - not fill though. =================================================================== RCS file: /cvs/e/e17/libs/edje/src/bin/edje_cc_handlers.c,v retrieving revision 1.79 retrieving revision 1.80 diff -u -3 -r1.79 -r1.80 --- edje_cc_handlers.c 23 Nov 2007 16:43:03 -0000 1.79 +++ edje_cc_handlers.c 21 Jan 2008 01:03:04 -0000 1.80 @@ -48,6 +48,7 @@ static void st_fonts_font(void); static void st_data_item(void); +static void st_data_file(void); static void ob_styles_style(void); static void st_styles_style_name(void); @@ -167,6 +168,7 @@ {"images.image", st_images_image}, {"fonts.font", st_fonts_font}, {"data.item", st_data_item}, + {"data.file", st_data_file}, {"styles.style.name", st_styles_style_name}, {"styles.style.base", st_styles_style_base}, {"styles.style.tag", st_styles_style_tag}, @@ -699,6 +701,92 @@ di->key = parse_str(0); di->value = parse_str(1); edje_file->data = evas_list_append(edje_file->data, di); +} + +/** + @page edcref + @block + data + @context + data { + file: "arbitraryname" "filename"; + file: "othername" "otherfilename"; + .. + } + @description + The "data" block is used to pass arbitrary parameters from the theme to + the application. Unlike the "images" and "fonts" blocks, additional + "data" blocks can only be included inside the "group" block. + @endblock + + @property + file + @parameters + [parameter name] [parameter filename] + @effect + Defines each additional parameter. + @endproperty + */ +static void +st_data_file(void) +{ + const char *data; + const char *over; + Edje_Data *di; + char *filename; + char *value; + int fd; + int i; + struct stat buf; + + check_arg_count(2); + + di = mem_alloc(SZ(Edje_Data)); + di->key = parse_str(0); + filename = parse_str(1); + + fd = open(filename, O_RDONLY); + if (fd < 0) + { + fprintf(stderr, "%s: Error. %s:%i when opening file \"%s\": \"%s\"\n", + progname, file_in, line, filename, strerror(errno)); + exit(-1); + } + + if (fstat(fd, &buf)) + { + fprintf(stderr, "%s: Error. %s:%i when stating file \"%s\": \"%s\"\n", + progname, file_in, line, filename, strerror(errno)); + exit(-1); + } + + data = mmap(NULL, buf.st_size, PROT_READ, MAP_SHARED, fd, 0); + if (!data) + { + fprintf(stderr, "%s: Error. %s:%i when mapping file \"%s\": \"%s\"\n", + progname, file_in, line, filename, strerror(errno)); + exit(-1); + } + + over = data; + for (i = 0; i < buf.st_size; ++i, ++over) + if (*over == '\0') + { + fprintf(stderr, "%s: Error. %s:%i file \"%s\" is a binary file.\n", + progname, file_in, line, filename); + exit(-1); + } + + value = malloc(sizeof (char) * buf.st_size + 1); + snprintf(value, buf.st_size + 1, "%s", data); + + munmap((void*)data, buf.st_size); + close(fd); + + di->value = value; + edje_file->data = evas_list_append(edje_file->data, di); + + free(filename); } /** =================================================================== RCS file: /cvs/e/e17/libs/edje/src/bin/edje_main.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- edje_main.h 27 Aug 2007 11:52:04 -0000 1.8 +++ edje_main.h 21 Jan 2008 01:03:04 -0000 1.9 @@ -5,6 +5,7 @@ #include <config.h> #endif +#include <sys/mman.h> #include <Evas.h> #include <Ecore.h> #include <Ecore_Evas.h> ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs