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

Reply via email to