1 /***************************************************************************
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
10 * Copyright (C) 2002 Björn Stenberg
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
25 #define FILENAME "/settings_dumper.txt"
26 static int setting_count
= 0;
28 static void write_setting(const struct settings_list
*setting
, int fd
, unsigned int group
)
31 if (setting
->cfg_name
== NULL
)
33 if (group
&& (setting
->flags
&group
) == 0) /* not in the group we are dumping */
35 else if (!group
&& (setting
->flags
&(F_THEMESETTING
|
40 else if (setting
->flags
&F_DEPRECATED
)
43 if (setting_count
%10 == 0)
44 rb
->fdprintf(fd
, "\r\n");
45 switch (setting
->flags
&F_T_MASK
)
48 rb
->strcpy(text
, "No information available. Check the manual for valid values");
52 if (setting
->flags
&F_RGB
)
53 rb
->strcpy(text
, "RGB colour value in the form RRGGBB (in hexadecimal)");
54 else if (setting
->flags
&F_T_SOUND
)
55 rb
->snprintf(text
, sizeof(text
), "Min: %d, Max %d",
56 rb
->sound_min(setting
->sound_setting
->setting
),
57 rb
->sound_max(setting
->sound_setting
->setting
));
58 else if (setting
->flags
&F_TABLE_SETTING
)
62 rb
->snprintf(text
, sizeof(text
), "Setting allows the following values%s: ",
63 setting
->flags
&F_ALLOW_ARBITRARY_VALS
? " (And any value between)":"");
64 for(i
=0;i
<setting
->table_setting
->count
;i
++)
66 rb
->snprintf(temp
, 8, "%d, ",
67 setting
->table_setting
->values
[i
]);
68 rb
->strcat(text
, temp
);
71 else if (setting
->flags
&F_INT_SETTING
)
73 int min
= setting
->int_setting
->min
,
74 max
= setting
->int_setting
->max
,
75 step
= setting
->int_setting
->step
;
76 rb
->snprintf(text
, sizeof(text
), "Min: %d, Max: %d, Step size: %d",
79 else if (setting
->flags
&F_CHOICE_SETTING
&&
80 (setting
->cfg_vals
== NULL
))
85 for(i
=0;i
<setting
->choice_setting
->count
;i
++)
87 rb
->snprintf(temp
, 64, "%s, ",
88 setting
->choice_setting
->desc
[i
]);
89 rb
->strcat(text
, temp
);
92 else if (setting
->cfg_vals
!= NULL
)
94 rb
->snprintf(text
, sizeof(text
), "%s", setting
->cfg_vals
);
98 rb
->snprintf(text
, sizeof(text
), "on, off");
102 rb
->snprintf(text
, sizeof(text
), "Text.. Up to %d characters. ",
103 setting
->filename_setting
->max_len
-1);
104 if (setting
->filename_setting
->prefix
&&
105 setting
->filename_setting
->suffix
)
107 rb
->strcat(text
, "Should start with:\"");
108 rb
->strcat(text
, setting
->filename_setting
->prefix
);
109 rb
->strcat(text
, "\" and end with:\"");
110 rb
->strcat(text
, setting
->filename_setting
->suffix
);
111 rb
->strcat(text
, "\"");
115 rb
->fdprintf(fd
, "%s: %s\r\n", setting
->cfg_name
, text
);
120 /* this is the plugin entry point */
121 enum plugin_status
plugin_start(
122 const void* parameter
)
124 const struct settings_list
*list
;
125 int setting_count
, i
;
129 fd
= rb
->open(FILENAME
, O_CREAT
|O_TRUNC
|O_WRONLY
, 0666);
132 list
= rb
->get_settings_list(&setting_count
);
133 rb
->fdprintf(fd
, "# .cfg file created by rockbox %s - "
134 "http://www.rockbox.org\r\n\r\n", rb
->rbversion
);
136 rb
->fdprintf(fd
, "# -- Sound settings -- #\r\n");
137 for(i
=0;i
<setting_count
;i
++)
138 write_setting(&list
[i
], fd
, F_SOUNDSETTING
);
140 rb
->fdprintf(fd
, "\r\n\r\n# -- Theme settings -- #\r\n");
141 for(i
=0;i
<setting_count
;i
++)
142 write_setting(&list
[i
], fd
, F_THEMESETTING
);
143 #ifdef HAVE_RECORDING
144 rb
->fdprintf(fd
, "\r\n\r\n# -- Recording settings -- #\r\n");
145 for(i
=0;i
<setting_count
;i
++)
146 write_setting(&list
[i
], fd
, F_RECSETTING
);
148 rb
->fdprintf(fd
, "\r\n\r\n# -- EQ settings -- #\r\n");
149 for(i
=0;i
<setting_count
;i
++)
150 write_setting(&list
[i
], fd
, F_EQSETTING
);
152 rb
->fdprintf(fd
, "\r\n\r\n# -- Other settings -- #\r\n");
153 for(i
=0;i
<setting_count
;i
++)
154 write_setting(&list
[i
], fd
, 0);
156 rb
->fdprintf(fd
, "\r\n\r\n# Total settings count: %d\r\n", setting_count
);
158 rb
->splash(HZ
, "Done!");