11 static Eet_Data_Descriptor *_srcfile_edd = NULL;
12 static Eet_Data_Descriptor *_srcfile_list_edd = NULL;
14 static Eet_Data_Descriptor *_external_edd = NULL;
15 static Eet_Data_Descriptor *_external_list_edd = NULL;
17 static Eet_Data_Descriptor *_font_edd = NULL;
18 static Eet_Data_Descriptor *_font_list_edd = NULL;
20 static SrcFile_List srcfiles = {NULL};
25 Eet_Data_Descriptor_Class eddc;
27 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile", sizeof (SrcFile));
28 _srcfile_edd = eet_data_descriptor_stream_new(&eddc);
29 EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "name", name, EET_T_INLINED_STRING);
30 EET_DATA_DESCRIPTOR_ADD_BASIC(_srcfile_edd, SrcFile, "file", file, EET_T_INLINED_STRING);
32 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "srcfile_list", sizeof (SrcFile_List));
33 _srcfile_list_edd = eet_data_descriptor_stream_new(&eddc);
34 EET_DATA_DESCRIPTOR_ADD_LIST(_srcfile_list_edd, SrcFile_List, "list", list, _srcfile_edd);
36 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "external", sizeof (External));
37 _external_edd = eet_data_descriptor_stream_new(&eddc);
38 EET_DATA_DESCRIPTOR_ADD_BASIC(_external_edd, External, "name", name, EET_T_INLINED_STRING);
40 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "external_list", sizeof (External_List));
41 _external_list_edd = eet_data_descriptor_stream_new(&eddc);
42 EET_DATA_DESCRIPTOR_ADD_LIST(_external_list_edd, External_List, "list", list, _external_edd);
44 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "font", sizeof (Font));
45 _font_edd = eet_data_descriptor_stream_new(&eddc);
46 EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font, "file", file, EET_T_INLINED_STRING);
47 EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font, "name", name, EET_T_INLINED_STRING);
49 eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "font_list", sizeof (Font_List));
50 _font_list_edd = eet_data_descriptor_stream_new(&eddc);
51 EET_DATA_DESCRIPTOR_ADD_LIST(_font_list_edd, Font_List, "list", list, _font_edd);
54 static void source_fetch_file(const char *fil, const char *filname);
57 source_fetch_file(const char *fil, const char *filname)
60 char buf[16 * 1024], *dir = NULL;
69 ERR("Cannot open file '%s'", fil);
73 fseek(f, 0, SEEK_END);
75 fseek(f, 0, SEEK_SET);
76 sf = mem_alloc(SZ(SrcFile));
77 sf->name = mem_strdup(filname);
78 sf->file = mem_alloc(sz + 1);
81 tmp = fread(sf->file, sz, 1, f);
84 ERR("file length for (%s) doesn't match!", filname);
90 fseek(f, 0, SEEK_SET);
91 srcfiles.list = eina_list_append(srcfiles.list, sf);
93 while (fgets(buf, sizeof(buf), f))
99 char *file = NULL, *fname = NULL;
102 while ((!forgetit) && (*p))
120 if (!strncmp(p, "include", 7))
125 /* HACK! the logic above should be fixed so
126 * preprocessor statements don't have to begin
128 * otoh, edje_cc should print a warning in that case,
129 * since according to the standard, preprocessor
130 * statements need to be put in column 0.
132 else if (!strncmp(p, "#include", 8))
147 if (*p == '"') end = '"';
148 else if (*p == '<') end = '>';
152 pp = strchr(p + 1, end);
160 /* get the directory of the current file
161 * if we haven't already done so
163 if ((!dir) && (strrchr(fil, '/')))
165 dir = mem_strdup(fil);
166 slash = strrchr(dir, '/');
168 dir_len = strlen(dir);
171 l = pp - p + dir_len + 1;
176 snprintf(file, l - 1, "%s", p + 1);
181 snprintf(file, l, "%s/%s", dir, p + 1);
186 fname = strdup(p + 1);
187 pp = strrchr(fname, end);
201 if ((file) && (fname))
203 source_fetch_file(file, fname);
215 char buf[PATH_MAX] = {0}, *ptr;
217 ptr = strrchr(file_in, '/');
220 snprintf(buf, sizeof (buf), "%s", ptr + 1);
223 source_fetch_file(file_in, buf[0] ? buf : file_in);
227 source_append(Eet_File *ef)
229 return eet_data_write(ef, _srcfile_list_edd, "edje_sources", &srcfiles,
234 source_load(Eet_File *ef)
238 s = eet_data_read(ef, _srcfile_list_edd, "edje_sources");
243 source_fontmap_save(Eet_File *ef, Eina_List *font_list)
248 return eet_data_write(ef, _font_list_edd, "edje_source_fontmap", &fl,
253 source_fontmap_load(Eet_File *ef)
257 fl = eet_data_read(ef, _font_list_edd, "edje_source_fontmap");