12 char watchfile[PATH_MAX];
13 char *edje_cc_command = NULL;
14 Eina_List *watching = NULL;
15 Ecore_Timer *timeout = NULL;
18 read_watch_file(const char *file)
26 f = eina_file_open(file, EINA_FALSE);
29 it = eina_file_map_lines(f);
32 EINA_ITERATOR_FOREACH(it, ln)
36 path = eina_stringshare_add_length(ln->start, ln->length);
37 r = eina_list_append(r, eio_monitor_add(path));
38 eina_stringshare_del(path);
40 eina_iterator_free(it);
42 EINA_LIST_FREE(watching, mon)
51 rebuild(void *data __UNUSED__)
55 start = ecore_time_get();
56 fprintf(stderr, "SYSTEM('%s')\n", edje_cc_command);
57 if (system(edje_cc_command) == 0)
58 read_watch_file(watchfile);
59 end = ecore_time_get();
60 fprintf(stderr, "DONE IN %f\n", end - start);
67 some_change(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
69 Eio_Monitor_Event *ev = event;
71 fprintf(stderr, "EVENT %i on [%s]\n", type, ev->filename);
72 if (timeout) ecore_timer_del(timeout);
73 timeout = ecore_timer_add(0.5, rebuild, NULL);
75 return ECORE_CALLBACK_PASS_ON;
79 main(int argc, char **argv)
91 if (argc < 2) return -1;
93 ecore_event_handler_add(EIO_MONITOR_FILE_MODIFIED, some_change, NULL);
94 ecore_event_handler_add(EIO_MONITOR_FILE_CREATED, some_change, NULL);
95 ecore_event_handler_add(EIO_MONITOR_FILE_DELETED, some_change, NULL);
96 ecore_event_handler_add(EIO_MONITOR_FILE_CLOSED, some_change, NULL);
99 watchout = (char *)evil_tmpdir_get();
104 snprintf(watchfile, PATH_MAX, "%s/edje_watch-tmp-XXXXXX", watchout);
106 tfd = mkstemp(watchfile);
107 if (tfd < 0) return -1;
110 buf = eina_strbuf_new();
113 eina_strbuf_append_printf(buf, "%s/edje_cc -threads -fastcomp -w %s ", PACKAGE_BIN_DIR, watchfile);
114 for (i = 1; i < argc; ++i)
115 eina_strbuf_append_printf(buf, "%s ", argv[i]);
117 edje_cc_command = eina_strbuf_string_steal(buf);
119 eina_strbuf_free(buf);
121 start = ecore_time_get();
122 fprintf(stderr, "SYSTEM('%s')\n", edje_cc_command);
123 system(edje_cc_command);
124 read_watch_file(watchfile);
125 end = ecore_time_get();
126 fprintf(stderr, "DONE %f\n", end - start);
128 ecore_main_loop_begin();