1313#include <droidboot_stdfunc.h>
1414#include <droidboot_fs_util.h>
1515#include <droidboot_platform_common.h>
16+ #include <droidboot_config_parser.h>
1617
1718#include <ext4.h>
1819
1920#define ENTRIES_DIR "/boot/db/entries/"
2021#define GLOBAL_CONFIG_FILE "/boot/db/db.conf"
2122
22- struct boot_entry {
23- char * title ;
24- char * kernel ;
25- char * initrd ;
26- char * dtb ;
27- char * dtbo ;
28- char * options ;
29- char * logo ;
30- int error ;
31- };
32-
33- struct global_config {
34- char * default_entry_title ;
35- struct boot_entry * default_entry ;
36- int timeout ;
37- uint32_t bg_color ;
38- uint32_t button_color ;
39- uint32_t button_text_color ;
40- uint32_t button_selected_color ;
41- uint32_t button_selected_text_color ;
42- uint8_t border_width ;
43- uint32_t border_color ;
44- uint32_t border_selected_color ;
45- uint8_t button_border_width ;
46- uint32_t button_border_color ;
47- uint32_t button_border_selected_color ;
48- uint8_t radius ;
49- bool button_grow_default ;
50- };
5123
5224int config_parse_option (char * * _dest , const char * option , const char * buffer ) {
5325 char * option_whitespace = malloc (strlen (option )+ strlen (" " )+ 1 );
@@ -234,43 +206,64 @@ int parse_global_config(struct global_config *global_config) {
234206 global_config -> timeout = 20 ;
235207 droidboot_log (DROIDBOOT_LOG_WARNING , "config_parser: no global config found\n" );
236208 // Background color
237- global_config -> bg_color = 0x000000 ;
209+ global_config -> win_bg_color = 0x000000 ;
210+
211+ // Radius
212+ global_config -> win_radius = 0 ;
213+
214+ // Border width
215+ global_config -> win_border_size = 0 ;
216+
217+ // Border color
218+ global_config -> win_border_color = 0xffffff ;
219+
220+ // List background color
221+ global_config -> list_bg_color = 0x000000 ;
222+
223+ // List radius
224+ global_config -> list_radius = 0 ;
225+
226+ // List border width
227+ global_config -> list_border_size = 0 ;
228+
229+ // List border color
230+ global_config -> list_border_color = 0xffffff ;
238231
239232 // Button color
240- global_config -> button_color = 0x000000 ;
233+ global_config -> button_unselected_color = 0x000000 ;
241234
242235 // Button text color
243- global_config -> button_text_color = 0xffffff ;
236+ global_config -> button_unselected_text_color = 0xffffff ;
244237
245238 // Button selected color
246239 global_config -> button_selected_color = 0xff9800 ;
247240
248241 // Button selected text color
249242 global_config -> button_selected_text_color = 0x000000 ;
250243
251- // Border width
252- global_config -> border_width = 0 ;
253-
254- // Border color
255- global_config -> border_color = 0xffffff ;
256-
257- // Border selected color
258- global_config -> border_selected_color = 0xffffff ;
259-
260244 // Button border width
261- global_config -> button_border_width = 1 ;
245+ global_config -> button_border_unselected_size = 1 ;
262246
263247 // Button border color
264- global_config -> button_border_color = 0xffffff ;
248+ global_config -> button_border_unselected_color = 0xffffff ;
249+
250+ // Button border selected width
251+ global_config -> button_border_selected_size = 1 ;
265252
266253 // Button border selected color
267254 global_config -> button_border_selected_color = 0xffffff ;
268255
269- // Radius
270- global_config -> radius = 0 ;
256+ // Button grow by default
257+ global_config -> button_grow_default = true ;
271258
272- // Button grow by default
273- global_config -> button_grow_default = true;
259+ // Button radius
260+ global_config -> button_radius = 0 ;
261+
262+ // Global font size
263+ global_config -> global_font_size = 0 ;
264+
265+ // Global font name
266+ global_config -> global_font_name = NULL ;
274267
275268 return 0 ;
276269
@@ -302,76 +295,88 @@ int parse_global_config(struct global_config *global_config) {
302295 // Theme parsing
303296
304297 // Background color
305- char * bg_color = NULL ;
306- ret = config_parse_option (& bg_color , "bg_color" , (const char * )buf );
307- if (ret < 0 ) global_config -> bg_color = 0x000000 ;
308- else global_config -> bg_color = droidboot_strtol (bg_color , NULL , 16 );
309-
310- // Button color
311- char * button_color = NULL ;
312- ret = config_parse_option (& button_color , "button_color" , (const char * )buf );
313- if (ret < 0 ) global_config -> button_color = 0x000000 ;
314- else global_config -> button_color = droidboot_strtol (button_color , NULL , 16 );
315-
316- // Button text color
317- char * button_text_color = NULL ;
318- ret = config_parse_option (& button_text_color , "button_text_color" , (const char * )buf );
319- if (ret < 0 ) global_config -> button_text_color = 0xffffff ;
320- else global_config -> button_text_color = droidboot_strtol (button_text_color , NULL , 16 );
298+ char * win_bg_color = NULL ;
299+ ret = config_parse_option (& win_bg_color , "win_bg_color" , (const char * )buf );
300+ if (ret < 0 ) global_config -> win_bg_color = 0x000000 ;
301+ else global_config -> win_bg_color = droidboot_strtol (win_bg_color , NULL , 16 );
302+ free (win_bg_color );
303+
304+ // Radius
305+ char * win_radius = NULL ;
306+ ret = config_parse_option (& win_radius , "win_radius" , (const char * )buf );
307+ if (ret < 0 ) global_config -> win_radius = 0 ;
308+ else global_config -> win_radius = droidboot_atoi (win_radius );
309+ free (win_radius );
310+
311+ // Border width
312+ char * win_border_size = NULL ;
313+ ret = config_parse_option (& win_border_size , "win_border_size" , (const char * )buf );
314+ if (ret < 0 ) global_config -> win_border_size = 0 ;
315+ else global_config -> win_border_size = droidboot_atoi (win_border_size );
316+ free (win_border_size );
317+
318+ // Border color
319+ char * win_border_color = NULL ;
320+ ret = config_parse_option (& win_border_color , "win_border_color" , (const char * )buf );
321+ if (ret < 0 ) global_config -> win_border_color = 0xffffff ;
322+ else global_config -> win_border_color = droidboot_strtol (win_border_color , NULL , 16 );
323+ free (win_border_color );
324+
325+ // Button unselected color
326+ char * button_unselected_color = NULL ;
327+ ret = config_parse_option (& button_unselected_color , "button_unselected_color" , (const char * )buf );
328+ if (ret < 0 ) global_config -> button_unselected_color = 0x000000 ;
329+ else global_config -> button_unselected_color = droidboot_strtol (button_unselected_color , NULL , 16 );
330+ free (button_unselected_color );
331+
332+ // Button unselected text color
333+ char * button_unselected_text_color = NULL ;
334+ ret = config_parse_option (& button_unselected_text_color , "button_unselected_text_color" , (const char * )buf );
335+ if (ret < 0 ) global_config -> button_unselected_text_color = 0xffffff ;
336+ else global_config -> button_unselected_text_color = droidboot_strtol (button_unselected_text_color , NULL , 16 );
337+ free (button_unselected_text_color );
321338
322339 // Button selected color
323340 char * button_selected_color = NULL ;
324341 ret = config_parse_option (& button_selected_color , "button_selected_color" , (const char * )buf );
325342 if (ret < 0 ) global_config -> button_selected_color = 0xff9800 ;
326343 else global_config -> button_selected_color = droidboot_strtol (button_selected_color , NULL , 16 );
344+ free (button_selected_color );
327345
328346 // Button selected text color
329347 char * button_selected_text_color = NULL ;
330348 ret = config_parse_option (& button_selected_text_color , "button_selected_text_color" , (const char * )buf );
331349 if (ret < 0 ) global_config -> button_selected_text_color = 0x000000 ;
332350 else global_config -> button_selected_text_color = droidboot_strtol (button_selected_text_color , NULL , 16 );
351+ free (button_selected_text_color );
333352
334- // Border width
335- char * border_width = NULL ;
336- ret = config_parse_option (& border_width , "border_width" , (const char * )buf );
337- if (ret < 0 ) global_config -> border_width = 0 ;
338- else global_config -> border_width = droidboot_atoi (border_width );
339-
340- // Border color
341- char * border_color = NULL ;
342- ret = config_parse_option (& border_color , "border_color" , (const char * )buf );
343- if (ret < 0 ) global_config -> border_color = 0xffffff ;
344- else global_config -> border_color = droidboot_strtol (border_color , NULL , 16 );
345-
346- // Border selected color
347- char * border_selected_color = NULL ;
348- ret = config_parse_option (& border_selected_color , "border_selected_color" , (const char * )buf );
349- if (ret < 0 ) global_config -> border_selected_color = 0xffffff ;
350- else global_config -> border_selected_color = droidboot_strtol (border_selected_color , NULL , 16 );
351-
352- // Button border width
353- char * button_border_width = NULL ;
354- ret = config_parse_option (& button_border_width , "button_border_width" , (const char * )buf );
355- if (ret < 0 ) global_config -> button_border_width = 1 ;
356- else global_config -> button_border_width = droidboot_atoi (button_border_width );
353+ // Button border size
354+ char * button_border_unselected_size = NULL ;
355+ ret = config_parse_option (& button_border_unselected_size , "button_border_unselected_size" , (const char * )buf );
356+ if (ret < 0 ) global_config -> button_border_unselected_size = 1 ;
357+ else global_config -> button_border_unselected_size = droidboot_atoi (button_border_unselected_size );
358+ free (button_border_unselected_size );
357359
358360 // Button border color
359- char * button_border_color = NULL ;
360- ret = config_parse_option (& button_border_color , "button_border_color" , (const char * )buf );
361- if (ret < 0 ) global_config -> button_border_color = 0xffffff ;
362- else global_config -> button_border_color = droidboot_strtol (button_border_color , NULL , 16 );
361+ char * button_border_unselected_color = NULL ;
362+ ret = config_parse_option (& button_border_unselected_color , "button_border_unselected_color" , (const char * )buf );
363+ if (ret < 0 ) global_config -> button_border_unselected_color = 0xffffff ;
364+ else global_config -> button_border_unselected_color = droidboot_strtol (button_border_unselected_color , NULL , 16 );
365+ free (button_border_unselected_color );
363366
364367 // Button border selected color
365368 char * button_border_selected_color = NULL ;
366369 ret = config_parse_option (& button_border_selected_color , "button_border_selected_color" , (const char * )buf );
367370 if (ret < 0 ) global_config -> button_border_selected_color = 0xffffff ;
368371 else global_config -> button_border_selected_color = droidboot_strtol (button_border_selected_color , NULL , 16 );
372+ free (button_border_selected_color );
369373
370- // Radius
371- char * radius = NULL ;
372- ret = config_parse_option (& radius , "radius" , (const char * )buf );
373- if (ret < 0 ) global_config -> radius = 0 ;
374- else global_config -> radius = droidboot_atoi (radius );
374+ // Button border selected size
375+ char * button_border_selected_size = NULL ;
376+ ret = config_parse_option (& button_border_selected_size , "button_border_selected_size" , (const char * )buf );
377+ if (ret < 0 ) global_config -> button_border_selected_size = 1 ;
378+ else global_config -> button_border_selected_size = droidboot_atoi (button_border_selected_size );
379+ free (button_border_selected_size );
375380
376381 // Button grow by default
377382 char * button_grow_default = NULL ;
@@ -380,6 +385,27 @@ int parse_global_config(struct global_config *global_config) {
380385 global_config -> button_grow_default = true;
381386 else
382387 global_config -> button_grow_default = false;
388+ free (button_grow_default );
389+
390+ // Button radius
391+ char * button_radius = NULL ;
392+ ret = config_parse_option (& button_radius , "button_radius" , (const char * )buf );
393+ if (ret < 0 ) global_config -> button_radius = 0 ;
394+ else global_config -> button_radius = droidboot_atoi (button_radius );
395+ free (button_radius );
396+
397+ // Global font size
398+ char * global_font_size = NULL ;
399+ ret = config_parse_option (& global_font_size , "global_font_size" , (const char * )buf );
400+ if (ret < 0 ) global_config -> global_font_size = 0 ;
401+ else global_config -> global_font_size = droidboot_atoi (global_font_size );
402+ free (global_font_size );
403+
404+ // Global font name
405+ char * global_font_name = NULL ;
406+ ret = config_parse_option (& global_font_name , "global_font_name" , (const char * )buf );
407+ if (ret < 0 ) global_config -> global_font_name = NULL ;
408+ else global_config -> global_font_name = global_font_name ;
383409
384410 return 0 ;
385411}
0 commit comments