2 * Copyright 2013 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.1 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://floralicense.org/license/
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
24 #if defined(HAVE_LIVEBOX)
25 #include <livebox-errno.h>
27 #include "lite-errno.h"
35 static const char *CONF_DEFAULT_SERVICES = "[livebox],[shortcut],[notification],[badge],[utility],[file]";
36 static const char *CONF_DEFAULT_EMERGENCY_DISK = "source=tmpfs;type=tmpfs;option=size=6M";
37 static const char *CONF_DEFAULT_PATH_CONF = "/opt/usr/live/%s/etc/%s.conf";
38 static const char *CONF_DEFAULT_PATH_IMAGE = "/opt/usr/share/live_magazine/";
39 static const char *CONF_DEFAULT_PATH_LOG = "/opt/usr/share/live_magazine/log";
40 static const char *CONF_DEFAULT_PATH_READER = "/opt/usr/share/live_magazine/reader";
41 static const char *CONF_DEFAULT_PATH_ALWAYS = "/opt/usr/share/live_magazine/always";
42 static const char *CONF_DEFAULT_PATH_SCRIPT = "/opt/usr/live/%s/res/script/%s.edj";
43 static const char *CONF_DEFAULT_PATH_ROOT = "/opt/usr/live/";
44 static const char *CONF_DEFAULT_PATH_SCRIPT_PORT = "/usr/share/data-provider-master/plugin-script/";
45 static const char *CONF_DEFAULT_PATH_DB = "/opt/dbspace/.livebox.db";
46 static const char *CONF_DEFAULT_PATH_INPUT = "/dev/input/event2";
47 static const char *CONF_DEFAULT_SCRIPT_TYPE = "edje";
48 static const char *CONF_DEFAULT_ABI = "c";
49 static const char *CONF_DEFAULT_PD_GROUP = "disclosure";
50 static const char *CONF_DEFAULT_LAUNCH_BUNDLE_NAME = "name";
51 static const char *CONF_DEFAULT_LAUNCH_BUNDLE_SECURED = "secured";
52 static const char *CONF_DEFAULT_LAUNCH_BUNDLE_ABI = "abi";
53 static const char *CONF_DEFAULT_CONTENT = "default";
54 static const char *CONF_DEFAULT_TITLE = "";
55 static const char *CONF_DEFAULT_EMPTY_CONTENT = "";
56 static const char *CONF_DEFAULT_EMPTY_TITLE = "";
57 static const char *CONF_DEFAULT_REPLACE_TAG = "/APPID/";
58 static const char *CONF_DEFAULT_PROVIDER_METHOD = "pixmap";
59 static const int CONF_DEFAULT_WIDTH = 0;
60 static const int CONF_DEFAULT_HEIGHT = 0;
61 static const int CONF_DEFAULT_BASE_WIDTH = 720;
62 static const int CONF_DEFAULT_BASE_HEIGHT = 1280;
63 static const double CONF_DEFAULT_MINIMUM_PERIOD = 1.0f;
64 static const double CONF_DEFAULT_PERIOD = -1.0f;
65 static const double CONF_DEFAULT_PACKET_TIME = 0.0001f;
66 static const unsigned long CONF_DEFAULT_MINIMUM_SPACE = 5242880;
67 static const double CONF_DEFAULT_SLAVE_TTL = 30.0f;
68 static const double CONF_DEFAULT_SLAVE_ACTIVATE_TIME = 30.0f;
69 static const double CONF_DEFAULT_SLAVE_RELAUNCH_TIME = 3.0f;
70 static const int CONF_DEFAULT_SLAVE_RELAUNCH_COUNT = 3;
71 static const int CONF_DEFAULT_MAX_LOG_LINE = 1000;
72 static const int CONF_DEFAULT_MAX_LOG_FILE = 3;
73 static const int CONF_DEFAULT_SQLITE_FLUSH_MAX = 1048576;
74 static const double CONF_DEFAULT_PING_TIME = 240.0f;
75 static const int CONF_DEFAULT_SLAVE_MAX_LOAD = 30;
76 static const int CONF_DEFAULT_USE_SW_BACKEND = 0;
77 static const int CONF_DEFAULT_DEBUG_MODE = 0;
78 static const int CONF_DEFAULT_OVERWRITE_CONTENT = 0;
79 static const int CONF_DEFAULT_COM_CORE_THREAD = 1;
80 static const int CONF_DEFAULT_USE_XMONITOR = 0;
81 static const int CONF_DEFAULT_PREMULTIPLIED = 1;
82 static const double CONF_DEFAULT_SCALE_WIDTH_FACTOR = 1.0f;
83 static const double CONF_DEFAULT_SCALE_HEIGHT_FACTOR = 1.0f;
84 static const double CONF_DEFAULT_PD_REQUEST_TIMEOUT = 5.0f;
85 static const int CONF_DEFAULT_PIXELS = sizeof(int);
89 HAPI struct conf g_conf;
91 HAPI void conf_update_size(void)
93 util_screen_size_get(&g_conf.width, &g_conf.height);
95 g_conf.scale_width_factor = (double)g_conf.width / (double)BASE_W;
96 g_conf.scale_height_factor = (double)g_conf.height / (double)BASE_H;
99 static void use_xmonitor(char *buffer)
101 g_conf.use_xmonitor = !strcasecmp(buffer, "true");
104 static void emergency_disk_handler(char *buffer)
106 g_conf.emergency_disk = strdup(buffer);
107 if (!g_conf.emergency_disk) {
108 ErrPrint("Heap: %s\n", strerror(errno));
112 static void services_handler(char *buffer)
114 g_conf.services = strdup(buffer);
115 if (!g_conf.services) {
116 ErrPrint("Heap: %s\n", strerror(errno));
120 static void use_sw_backend_handler(char *buffer)
122 g_conf.use_sw_backend = !strcasecmp(buffer, "true");
125 static void provider_method_handler(char *buffer)
127 g_conf.provider_method = strdup(buffer);
128 if (!g_conf.provider_method) {
129 ErrPrint("Heap: %s\n", strerror(errno));
133 static void debug_mode_handler(char *buffer)
135 g_conf.debug_mode = !strcasecmp(buffer, "true");
138 static void overwrite_content_handler(char *buffer)
140 g_conf.overwrite_content = !strcasecmp(buffer, "true");
143 static void com_core_thread_handler(char *buffer)
145 g_conf.com_core_thread = !strcasecmp(buffer, "true");
148 static void base_width_handler(char *buffer)
150 if (sscanf(buffer, "%d", &g_conf.base_width) != 1) {
151 ErrPrint("Failed to parse the base_width\n");
155 static void base_height_handler(char *buffer)
157 if (sscanf(buffer, "%d", &g_conf.base_height) != 1) {
158 ErrPrint("Failed to parse the base_height\n");
162 static void minimum_period_handler(char *buffer)
164 if (sscanf(buffer, "%lf", &g_conf.minimum_period) != 1) {
165 ErrPrint("Failed to parse the minimum_period\n");
167 DbgPrint("Minimum period: %lf\n", g_conf.minimum_period);
170 static void pixels_handler(char *buffer)
172 if (sscanf(buffer, "%d", &g_conf.default_conf.pixels) != 1) {
173 ErrPrint("Failed to parse the minimum_period\n");
175 DbgPrint("Default pixels: %lf\n", g_conf.default_conf.pixels);
178 static void script_handler(char *buffer)
180 g_conf.default_conf.script = strdup(buffer);
181 if (!g_conf.default_conf.script) {
182 ErrPrint("Heap: %s\n", strerror(errno));
186 static void default_abi_handler(char *buffer)
188 g_conf.default_conf.abi = strdup(buffer);
189 if (!g_conf.default_conf.abi) {
190 ErrPrint("Heap: %s\n", strerror(errno));
194 static void default_group_handler(char *buffer)
196 g_conf.default_conf.pd_group = strdup(buffer);
197 if (!g_conf.default_conf.pd_group) {
198 ErrPrint("Heap: %s\n", strerror(errno));
202 static void default_period_handler(char *buffer)
204 if (sscanf(buffer, "%lf", &g_conf.default_conf.period) != 1) {
205 ErrPrint("Failed to parse the default_period\n");
207 DbgPrint("Default Period: %lf\n", g_conf.default_conf.period);
210 static void default_packet_time_handler(char *buffer)
212 if (sscanf(buffer, "%lf", &g_conf.default_packet_time) != 1) {
213 ErrPrint("Failed to parse the default_packet_time\n");
215 DbgPrint("Default packet time: %lf\n", g_conf.default_packet_time);
218 static void default_content_handler(char *buffer)
220 g_conf.default_content = strdup(buffer);
221 if (!g_conf.default_content) {
222 ErrPrint("Heap: %s\n", strerror(errno));
226 static void default_title_handler(char *buffer)
228 g_conf.default_title = strdup(buffer);
229 if (!g_conf.default_title) {
230 ErrPrint("Heap: %s\n", strerror(errno));
234 static void minimum_space_handler(char *buffer)
236 if (sscanf(buffer, "%lu", &g_conf.minimum_space) != 1) {
237 ErrPrint("Failed to parse the minimum_space\n");
241 static void replace_tag_handler(char *buffer)
243 g_conf.replace_tag = strdup(buffer);
244 if (!g_conf.replace_tag) {
245 ErrPrint("Heap: %s\n", strerror(errno));
249 static void slave_ttl_handler(char *buffer)
251 if (sscanf(buffer, "%lf", &g_conf.slave_ttl) != 1) {
252 ErrPrint("Failed to parse the slave_ttl\n");
254 DbgPrint("Slave TTL: %lf\n", g_conf.slave_ttl);
257 static void slave_activate_time_handler(char *buffer)
259 if (sscanf(buffer, "%lf", &g_conf.slave_activate_time) != 1) {
260 ErrPrint("Failed to parse the slave_activate_time\n");
262 DbgPrint("Slave activate time: %lf\n", g_conf.slave_activate_time);
265 static void slave_relaunch_time_handler(char *buffer)
267 if (sscanf(buffer, "%lf", &g_conf.slave_relaunch_time) != 1) {
268 ErrPrint("Failed to parse the slave_activate_time\n");
270 DbgPrint("Slave relaunch time: %lf\n", g_conf.slave_relaunch_time);
273 static void slave_relaunch_count_handler(char *buffer)
275 if (sscanf(buffer, "%d", &g_conf.slave_relaunch_count) != 1) {
276 ErrPrint("Failed to parse the max_log_line\n");
280 static void max_log_line_handler(char *buffer)
282 if (sscanf(buffer, "%d", &g_conf.max_log_line) != 1) {
283 ErrPrint("Failed to parse the max_log_line\n");
287 static void max_log_file_handler(char *buffer)
289 if (sscanf(buffer, "%d", &g_conf.max_log_file) != 1) {
290 ErrPrint("Failed to parse the max_log_file\n");
294 static void sqlite_flush_max_handler(char *buffer)
296 if (sscanf(buffer, "%lu", &g_conf.sqlite_flush_max) != 1) {
297 ErrPrint("Failed to parse the sqlite_flush_max\n");
301 static void db_path_handler(char *buffer)
303 g_conf.path.db = strdup(buffer);
304 if (!g_conf.path.db) {
305 ErrPrint("Heap: %s\n", strerror(errno));
309 static void reader_path_handler(char *buffer)
311 g_conf.path.reader = strdup(buffer);
312 if (!g_conf.path.reader) {
313 ErrPrint("Heap: %s\n", strerror(errno));
317 static void always_path_handler(char *buffer)
319 g_conf.path.always = strdup(buffer);
320 if (!g_conf.path.always) {
321 ErrPrint("Heap: %s\n", strerror(errno));
325 static void log_path_handler(char *buffer)
327 g_conf.path.slave_log = strdup(buffer);
328 if (!g_conf.path.slave_log) {
329 ErrPrint("Heap: %s\n", strerror(errno));
333 static void script_port_path_handler(char *buffer)
335 g_conf.path.script_port = strdup(buffer);
336 if (!g_conf.path.script_port) {
337 ErrPrint("Heap: %s\n", strerror(errno));
341 static void share_path_handler(char *buffer)
343 g_conf.path.image = strdup(buffer);
344 if (!g_conf.path.image) {
345 ErrPrint("Heap: %s\n", strerror(errno));
349 static void input_path_handler(char *buffer)
351 g_conf.path.input = strdup(buffer);
352 if (!g_conf.path.input) {
353 ErrPrint("Heap: %s\n", strerror(errno));
357 static void ping_time_handler(char *buffer)
359 if (sscanf(buffer, "%lf", &g_conf.ping_time) != 1) {
360 ErrPrint("Failed to parse the ping_time\n");
362 DbgPrint("Default ping time: %lf\n", g_conf.ping_time);
365 static void slave_max_loader(char *buffer)
367 if (sscanf(buffer, "%d", &g_conf.slave_max_load) != 1) {
368 ErrPrint("Failed to parse the slave_max_load\n");
372 static void premultiplied_handler(char *buffer)
374 if (sscanf(buffer, "%d", &g_conf.premultiplied) != 1) {
375 ErrPrint("Failed to parse the premultiplied color\n");
378 DbgPrint("Premultiplied: %d\n", g_conf.premultiplied);
381 static void pd_request_timeout_handler(char *buffer)
383 if (sscanf(buffer, "%lf", &g_conf.pd_request_timeout) != 1) {
384 ErrPrint("Failed to parse the request_timeout\n");
386 DbgPrint("Default PD request timeout: %lf\n", g_conf.pd_request_timeout);
389 HAPI void conf_init(void)
391 g_conf.width = CONF_DEFAULT_WIDTH;
392 g_conf.height = CONF_DEFAULT_HEIGHT;
393 g_conf.base_width = CONF_DEFAULT_BASE_WIDTH;
394 g_conf.base_height = CONF_DEFAULT_BASE_HEIGHT;
395 g_conf.minimum_period = CONF_DEFAULT_MINIMUM_PERIOD;
396 g_conf.default_conf.period = CONF_DEFAULT_PERIOD;
397 g_conf.default_conf.pixels = CONF_DEFAULT_PIXELS;
398 g_conf.minimum_space = CONF_DEFAULT_MINIMUM_SPACE;
399 g_conf.default_packet_time = CONF_DEFAULT_PACKET_TIME;
400 g_conf.slave_ttl = CONF_DEFAULT_SLAVE_TTL;
401 g_conf.slave_activate_time = CONF_DEFAULT_SLAVE_ACTIVATE_TIME;
402 g_conf.slave_relaunch_time = CONF_DEFAULT_SLAVE_RELAUNCH_TIME;
403 g_conf.slave_relaunch_count = CONF_DEFAULT_SLAVE_RELAUNCH_COUNT;
404 g_conf.max_log_line = CONF_DEFAULT_MAX_LOG_LINE;
405 g_conf.max_log_file = CONF_DEFAULT_MAX_LOG_FILE;
406 g_conf.sqlite_flush_max = CONF_DEFAULT_SQLITE_FLUSH_MAX;
407 g_conf.ping_time = CONF_DEFAULT_PING_TIME;
408 g_conf.slave_max_load = CONF_DEFAULT_SLAVE_MAX_LOAD;
409 g_conf.use_sw_backend = CONF_DEFAULT_USE_SW_BACKEND;
410 g_conf.debug_mode = CONF_DEFAULT_DEBUG_MODE;
411 g_conf.overwrite_content = CONF_DEFAULT_OVERWRITE_CONTENT;
412 g_conf.com_core_thread = CONF_DEFAULT_COM_CORE_THREAD;
413 g_conf.use_xmonitor = CONF_DEFAULT_USE_XMONITOR;
414 g_conf.scale_width_factor = CONF_DEFAULT_SCALE_WIDTH_FACTOR;
415 g_conf.scale_height_factor = CONF_DEFAULT_SCALE_HEIGHT_FACTOR;
416 g_conf.pd_request_timeout = CONF_DEFAULT_PD_REQUEST_TIMEOUT;
417 g_conf.premultiplied = CONF_DEFAULT_PREMULTIPLIED;
418 g_conf.default_conf.script = (char *)CONF_DEFAULT_SCRIPT_TYPE;
419 g_conf.default_conf.abi = (char *)CONF_DEFAULT_ABI;
420 g_conf.default_conf.pd_group = (char *)CONF_DEFAULT_PD_GROUP;
421 g_conf.launch_key.name = (char *)CONF_DEFAULT_LAUNCH_BUNDLE_NAME;
422 g_conf.launch_key.secured = (char *)CONF_DEFAULT_LAUNCH_BUNDLE_SECURED;
423 g_conf.launch_key.abi = (char *)CONF_DEFAULT_LAUNCH_BUNDLE_ABI;
424 g_conf.empty_content = (char *)CONF_DEFAULT_EMPTY_CONTENT;
425 g_conf.empty_title = (char *)CONF_DEFAULT_EMPTY_TITLE;
426 g_conf.default_content = (char *)CONF_DEFAULT_CONTENT;
427 g_conf.default_title = (char *)CONF_DEFAULT_TITLE;
428 g_conf.replace_tag = (char *)CONF_DEFAULT_REPLACE_TAG;
429 g_conf.path.conf = (char *)CONF_DEFAULT_PATH_CONF;
430 g_conf.path.image = (char *)CONF_DEFAULT_PATH_IMAGE;
431 g_conf.path.slave_log = (char *)CONF_DEFAULT_PATH_LOG;
432 g_conf.path.reader = (char *)CONF_DEFAULT_PATH_READER;
433 g_conf.path.always = (char *)CONF_DEFAULT_PATH_ALWAYS;
434 g_conf.path.script = (char *)CONF_DEFAULT_PATH_SCRIPT;
435 g_conf.path.root = (char *)CONF_DEFAULT_PATH_ROOT;
436 g_conf.path.script_port = (char *)CONF_DEFAULT_PATH_SCRIPT_PORT;
437 g_conf.path.db = (char *)CONF_DEFAULT_PATH_DB;
438 g_conf.path.input = (char *)CONF_DEFAULT_PATH_INPUT;
439 g_conf.provider_method = (char *)CONF_DEFAULT_PROVIDER_METHOD;
440 g_conf.emergency_disk = (char *)CONF_DEFAULT_EMERGENCY_DISK;
441 g_conf.services = (char *)CONF_DEFAULT_SERVICES;
444 HAPI int conf_loader(void)
463 static const struct token_parser {
465 void (*handler)(char *buffer);
466 } token_handler[] = {
468 .name = "base_width",
469 .handler = base_width_handler,
472 .name = "base_height",
473 .handler = base_height_handler,
476 .name = "minimum_period",
477 .handler = minimum_period_handler,
481 .handler = script_handler,
485 .handler = pixels_handler,
488 .name = "default_abi",
489 .handler = default_abi_handler,
492 .name = "default_group",
493 .handler = default_group_handler,
496 .name = "default_period",
497 .handler = default_period_handler,
500 .name = "default_packet_time",
501 .handler = default_packet_time_handler,
504 .name = "default_content",
505 .handler = default_content_handler,
508 .name = "default_title",
509 .handler = default_title_handler,
512 .name = "minimum_space",
513 .handler = minimum_space_handler,
516 .name = "replace_tag",
517 .handler = replace_tag_handler,
521 .handler = slave_ttl_handler,
524 .name = "slave_activate_time",
525 .handler = slave_activate_time_handler,
528 .name = "slave_relaunch_time",
529 .handler = slave_relaunch_time_handler,
532 .name = "slave_relaunch_count",
533 .handler = slave_relaunch_count_handler,
536 .name = "max_log_line",
537 .handler = max_log_line_handler,
540 .name = "max_log_file",
541 .handler = max_log_file_handler,
544 .name = "sqilte_flush_max",
545 .handler = sqlite_flush_max_handler,
549 .handler = db_path_handler,
553 .handler = log_path_handler,
556 .name = "reader_path",
557 .handler = reader_path_handler,
560 .name = "always_path",
561 .handler = always_path_handler,
564 .name = "share_path",
565 .handler = share_path_handler,
568 .name = "script_port_path",
569 .handler = script_port_path_handler,
572 .name = "ping_interval",
573 .handler = ping_time_handler,
576 .name = "slave_max_load",
577 .handler = slave_max_loader,
580 .name = "use_sw_backend",
581 .handler = use_sw_backend_handler,
584 .name = "emergency_disk",
585 .handler = emergency_disk_handler,
589 .handler = services_handler,
592 .name = "use_xmonitor",
593 .handler = use_xmonitor,
596 .name = "provider_method",
597 .handler = provider_method_handler,
600 .name = "debug_mode",
601 .handler = debug_mode_handler,
604 .name = "overwrite_content",
605 .handler = overwrite_content_handler,
608 .name = "com_core_thread",
609 .handler = com_core_thread_handler,
613 .handler = input_path_handler,
616 .name = "pd_request_timeout",
617 .handler = pd_request_timeout_handler,
620 .name = "premultiplied",
621 .handler = premultiplied_handler,
629 fp = fopen(DEFAULT_MASTER_CONF, "rt");
631 ErrPrint("Error: %s\n", strerror(errno));
632 return LB_STATUS_ERROR_IO;
643 if ((c == EOF) && (state == VALUE)) {
644 DbgPrint("[%s:%d] VALUE state EOF\n", __func__, __LINE__);
650 if (c == CR || c == LF || c == EOF) {
651 buffer[buffer_idx] = '\0';
657 linelen = -1; /* Will be ZERO by follwing increment code */
660 buffer[buffer_idx++] = c;
661 if (buffer_idx == (sizeof(buffer) - 1)) {
662 buffer[buffer_idx] = '\0';
668 if (linelen == 0 && c == '#') {
670 } else if (isspace(c)) {
671 /* Ignore empty space */
680 } else if (!isspace(c)) {
687 buffer[buffer_idx] = '\0';
689 } else if (buffer_idx != 0) {
690 buffer[buffer_idx++] = c;
691 if (buffer_idx >= sizeof(buffer)) {
697 } else if (isspace(c)) {
698 if (buffer_idx == 0) {
700 } else if (quote == 1) {
701 buffer[buffer_idx++] = c;
702 if (buffer_idx >= sizeof(buffer)) {
706 buffer[buffer_idx] = '\0';
711 buffer[buffer_idx++] = c;
712 if (buffer_idx >= sizeof(buffer)) {
724 } else if (isspace(c)) {
729 if (token_handler[token_idx].name[ch_idx] != '\0') {
736 /* Now start to find a token! */
740 if (token_handler[token_idx].name[ch_idx] == c) {
745 ungetc(token_handler[token_idx].name[ch_idx], fp);
749 if (token_handler[token_idx].name == NULL) {
758 if (c == CR || c == LF || c == EOF) {
768 if (c == LF || c == CR || c == EOF) {
771 if (token_idx >= 0 && token_handler[token_idx].handler) {
772 buffer[buffer_idx] = '\0';
773 token_handler[token_idx].handler(buffer);
782 } else if (isspace(c)) {
796 if (fclose(fp) != 0) {
797 ErrPrint("fclose: %s\n", strerror(errno));
799 return LB_STATUS_SUCCESS;
802 HAPI void conf_reset(void)
804 g_conf.width = CONF_DEFAULT_WIDTH;
805 g_conf.height = CONF_DEFAULT_HEIGHT;
806 g_conf.base_width = CONF_DEFAULT_BASE_WIDTH;
807 g_conf.base_height = CONF_DEFAULT_BASE_HEIGHT;
808 g_conf.minimum_period = CONF_DEFAULT_MINIMUM_PERIOD;
809 g_conf.default_conf.period = CONF_DEFAULT_PERIOD;
810 g_conf.minimum_space = CONF_DEFAULT_MINIMUM_SPACE;
811 g_conf.default_packet_time = CONF_DEFAULT_PACKET_TIME;
812 g_conf.slave_ttl = CONF_DEFAULT_SLAVE_TTL;
813 g_conf.slave_activate_time = CONF_DEFAULT_SLAVE_ACTIVATE_TIME;
814 g_conf.slave_relaunch_time = CONF_DEFAULT_SLAVE_RELAUNCH_TIME;
815 g_conf.slave_relaunch_count = CONF_DEFAULT_SLAVE_RELAUNCH_COUNT;
816 g_conf.max_log_line = CONF_DEFAULT_MAX_LOG_LINE;
817 g_conf.max_log_file = CONF_DEFAULT_MAX_LOG_FILE;
818 g_conf.sqlite_flush_max = CONF_DEFAULT_SQLITE_FLUSH_MAX;
819 g_conf.ping_time = CONF_DEFAULT_PING_TIME;
820 g_conf.slave_max_load = CONF_DEFAULT_SLAVE_MAX_LOAD;
821 g_conf.use_sw_backend = CONF_DEFAULT_USE_SW_BACKEND;
822 g_conf.debug_mode = CONF_DEFAULT_DEBUG_MODE;
823 g_conf.overwrite_content = CONF_DEFAULT_OVERWRITE_CONTENT;
824 g_conf.com_core_thread = CONF_DEFAULT_COM_CORE_THREAD;
825 g_conf.use_xmonitor = CONF_DEFAULT_USE_XMONITOR;
826 g_conf.scale_width_factor = CONF_DEFAULT_SCALE_WIDTH_FACTOR;
827 g_conf.scale_height_factor = CONF_DEFAULT_SCALE_HEIGHT_FACTOR;
828 g_conf.pd_request_timeout = CONF_DEFAULT_PD_REQUEST_TIMEOUT;
829 g_conf.premultiplied = CONF_DEFAULT_PREMULTIPLIED;
830 g_conf.default_conf.pixels = CONF_DEFAULT_PIXELS;
832 if (g_conf.default_conf.script != CONF_DEFAULT_SCRIPT_TYPE) {
833 DbgFree(g_conf.default_conf.script);
834 g_conf.default_conf.script = (char *)CONF_DEFAULT_SCRIPT_TYPE;
837 if (g_conf.default_conf.abi != CONF_DEFAULT_ABI) {
838 DbgFree(g_conf.default_conf.abi);
839 g_conf.default_conf.abi = (char *)CONF_DEFAULT_ABI;
842 if (g_conf.default_conf.pd_group != CONF_DEFAULT_PD_GROUP) {
843 DbgFree(g_conf.default_conf.pd_group);
844 g_conf.default_conf.pd_group = (char *)CONF_DEFAULT_PD_GROUP;
847 if (g_conf.launch_key.name != CONF_DEFAULT_LAUNCH_BUNDLE_NAME) {
848 DbgFree(g_conf.launch_key.name);
849 g_conf.launch_key.name = (char *)CONF_DEFAULT_LAUNCH_BUNDLE_NAME;
852 if (g_conf.launch_key.secured != CONF_DEFAULT_LAUNCH_BUNDLE_SECURED) {
853 DbgFree(g_conf.launch_key.secured);
854 g_conf.launch_key.secured = (char *)CONF_DEFAULT_LAUNCH_BUNDLE_SECURED;
857 if (g_conf.launch_key.abi != CONF_DEFAULT_LAUNCH_BUNDLE_ABI) {
858 DbgFree(g_conf.launch_key.abi);
859 g_conf.launch_key.abi = (char *)CONF_DEFAULT_LAUNCH_BUNDLE_ABI;
862 if (g_conf.empty_content != CONF_DEFAULT_EMPTY_CONTENT) {
863 DbgFree(g_conf.empty_content);
864 g_conf.empty_content = (char *)CONF_DEFAULT_EMPTY_CONTENT;
867 if (g_conf.empty_title != CONF_DEFAULT_EMPTY_TITLE) {
868 DbgFree(g_conf.empty_title);
869 g_conf.empty_title = (char *)CONF_DEFAULT_EMPTY_TITLE;
872 if (g_conf.default_content != CONF_DEFAULT_CONTENT) {
873 DbgFree(g_conf.default_content);
874 g_conf.default_content = (char *)CONF_DEFAULT_CONTENT;
877 if (g_conf.default_title != CONF_DEFAULT_TITLE) {
878 DbgFree(g_conf.default_title);
879 g_conf.default_title = (char *)CONF_DEFAULT_TITLE;
882 if (g_conf.replace_tag != CONF_DEFAULT_REPLACE_TAG) {
883 DbgFree(g_conf.replace_tag);
884 g_conf.replace_tag = (char *)CONF_DEFAULT_REPLACE_TAG;
887 if (g_conf.path.conf != CONF_DEFAULT_PATH_CONF) {
888 DbgFree(g_conf.path.conf);
889 g_conf.path.conf = (char *)CONF_DEFAULT_PATH_CONF;
892 if (g_conf.path.image != CONF_DEFAULT_PATH_IMAGE) {
893 DbgFree(g_conf.path.image);
894 g_conf.path.image = (char *)CONF_DEFAULT_PATH_IMAGE;
897 if (g_conf.path.slave_log != CONF_DEFAULT_PATH_LOG) {
898 DbgFree(g_conf.path.slave_log);
899 g_conf.path.slave_log = (char *)CONF_DEFAULT_PATH_LOG;
902 if (g_conf.path.reader != CONF_DEFAULT_PATH_READER) {
903 DbgFree(g_conf.path.reader);
904 g_conf.path.reader = (char *)CONF_DEFAULT_PATH_READER;
907 if (g_conf.path.always != CONF_DEFAULT_PATH_ALWAYS) {
908 DbgFree(g_conf.path.always);
909 g_conf.path.always = (char *)CONF_DEFAULT_PATH_ALWAYS;
912 if (g_conf.path.script != CONF_DEFAULT_PATH_SCRIPT) {
913 DbgFree(g_conf.path.script);
914 g_conf.path.script = (char *)CONF_DEFAULT_PATH_SCRIPT;
917 if (g_conf.path.root != CONF_DEFAULT_PATH_ROOT) {
918 DbgFree(g_conf.path.root);
919 g_conf.path.root = (char *)CONF_DEFAULT_PATH_ROOT;
922 if (g_conf.path.script_port != CONF_DEFAULT_PATH_SCRIPT_PORT) {
923 DbgFree(g_conf.path.script_port);
924 g_conf.path.script_port = (char *)CONF_DEFAULT_PATH_SCRIPT_PORT;
927 if (g_conf.path.db != CONF_DEFAULT_PATH_DB) {
928 DbgFree(g_conf.path.db);
929 g_conf.path.db = (char *)CONF_DEFAULT_PATH_DB;
932 if (g_conf.path.input != CONF_DEFAULT_PATH_INPUT) {
933 DbgFree(g_conf.path.input);
934 g_conf.path.input = (char *)CONF_DEFAULT_PATH_INPUT;
937 if (g_conf.provider_method != CONF_DEFAULT_PROVIDER_METHOD) {
938 DbgFree(g_conf.provider_method);
939 g_conf.provider_method = (char *)CONF_DEFAULT_PROVIDER_METHOD;
942 if (g_conf.emergency_disk != CONF_DEFAULT_EMERGENCY_DISK) {
943 DbgFree(g_conf.emergency_disk);
944 g_conf.emergency_disk = (char *)CONF_DEFAULT_EMERGENCY_DISK;
947 if (g_conf.services != CONF_DEFAULT_SERVICES) {
948 DbgFree(g_conf.services);
949 g_conf.services = (char *)CONF_DEFAULT_SERVICES;