Mercurial > mplayer.hg
annotate gui/cfg.c @ 34173:a5d8b198c214
demux_rtp: Replace extern declarations by proper header #includes.
author | diego |
---|---|
date | Wed, 26 Oct 2011 15:12:25 +0000 |
parents | 5761a9a31bcb |
children | 5a45efc630b8 |
rev | line source |
---|---|
26458 | 1 /* |
2 * This file is part of MPlayer. | |
3 * | |
4 * MPlayer is free software; you can redistribute it and/or modify | |
5 * it under the terms of the GNU General Public License as published by | |
6 * the Free Software Foundation; either version 2 of the License, or | |
7 * (at your option) any later version. | |
8 * | |
9 * MPlayer is distributed in the hope that it will be useful, | |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 * GNU General Public License for more details. | |
13 * | |
14 * You should have received a copy of the GNU General Public License along | |
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
17 */ | |
23077 | 18 |
19 #include <stdlib.h> | |
20 #include <stdio.h> | |
21 #include <string.h> | |
22 | |
33179 | 23 #include "cfg.h" |
24 #include "interface.h" | |
33742
e1539e14d60f
Move purely list related parts of gtkSet() from interface.c to list.c.
ib
parents:
33737
diff
changeset
|
25 #include "util/list.h" |
33737 | 26 #include "util/string.h" |
33179 | 27 |
23077 | 28 #include "config.h" |
29 #include "help_mp.h" | |
30653
3d23e24c5c60
Declare externally used variables from vd.c as extern in vd.h.
diego
parents:
30633
diff
changeset
|
30 #include "libmpcodecs/vd.h" |
23077 | 31 #include "libvo/video_out.h" |
31385
f2aebe1309b2
Declare stop_xscreensaver extern in x11_common.h instead of all over the code.
diego
parents:
30901
diff
changeset
|
32 #include "libvo/x11_common.h" |
33179 | 33 #include "mixer.h" |
33768 | 34 #include "mp_core.h" |
33179 | 35 #include "mp_msg.h" |
36 #include "mpcommon.h" | |
37 #include "mplayer.h" | |
38 #include "parser-cfg.h" | |
39 #include "path.h" | |
32981 | 40 #include "sub/font_load.h" |
33179 | 41 #include "sub/sub.h" |
23077 | 42 |
33265 | 43 m_config_t *gui_conf; |
44 | |
33220 | 45 int gtkCacheOn; |
33180 | 46 int gtkCacheSize = 2048; |
47 | |
33220 | 48 int gtkVfPP; |
23077 | 49 |
33180 | 50 #ifdef CONFIG_DXR3 |
33249 | 51 int gtkVfLAVC; |
33180 | 52 char *gtkDXR3Device; |
53 #endif | |
54 | |
33220 | 55 int gtkAutoSyncOn; |
56 int gtkAutoSync; | |
23077 | 57 |
33220 | 58 int gtkAONorm; |
59 int gtkAOSurround; | |
60 int gtkAOExtraStereo; | |
33221 | 61 float gtkAOExtraStereoMul = 1.0f; |
33180 | 62 |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
63 #ifdef CONFIG_ALSA |
33179 | 64 char *gtkAOALSAMixer; |
65 char *gtkAOALSAMixerChannel; | |
66 char *gtkAOALSADevice; | |
23077 | 67 #endif |
33180 | 68 |
69 #ifdef CONFIG_OSS_AUDIO | |
70 char *gtkAOOSSMixer; | |
71 char *gtkAOOSSMixerChannel; | |
72 char *gtkAOOSSDevice; | |
23077 | 73 #endif |
33180 | 74 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
75 #ifdef CONFIG_ESD |
33179 | 76 char *gtkAOESDDevice; |
23077 | 77 #endif |
78 | |
33180 | 79 #ifdef CONFIG_SDL |
80 char *gtkAOSDLDriver; | |
81 #endif | |
23077 | 82 |
33220 | 83 int gtkEnableAudioEqualizer; |
33747 | 84 float gtkEquChannels[6][10]; |
23077 | 85 |
33220 | 86 int gtkSubDumpMPSub; |
87 int gtkSubDumpSrt; | |
23077 | 88 |
33180 | 89 #ifdef CONFIG_ASS |
90 gtkASS_t gtkASS; | |
91 #endif | |
92 | |
33220 | 93 int gtkEnablePlayBar = 1; |
94 int gtkLoadFullscreen; | |
33179 | 95 int gtkShowVideoWindow = 1; |
23077 | 96 |
33179 | 97 int gui_save_pos = 1; |
33218
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33180
diff
changeset
|
98 int gui_main_pos_x = -3; |
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33180
diff
changeset
|
99 int gui_main_pos_y = -3; |
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33180
diff
changeset
|
100 int gui_sub_pos_x = -3; |
f0c2a62e3e89
Position windows initially at coordinates given in skin file.
ib
parents:
33180
diff
changeset
|
101 int gui_sub_pos_y = -3; |
23077 | 102 |
33747 | 103 int guiWinID = -1; |
104 | |
105 char *skinName; | |
106 | |
33751
c28c967e40e9
Replace numeric constant fsPersistant_MaxPos for fsHistory array size.
ib
parents:
33750
diff
changeset
|
107 char *fsHistory[5]; |
33750
8b5898908212
Remove variable holding history of selected files from interface.[ch].
ib
parents:
33748
diff
changeset
|
108 |
33179 | 109 static const m_option_t gui_opts[] = { |
33478 | 110 { "cache", >kCacheOn, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
111 { "cache_size", >kCacheSize, CONF_TYPE_INT, CONF_RANGE, 32, 1048576, NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
112 |
33478 | 113 { "vf_pp", >kVfPP, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 114 |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
115 #ifdef CONFIG_DXR3 |
33478 | 116 { "vf_lavc", >kVfLAVC, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
117 { "vo_dxr3_device", >kDXR3Device, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
23077 | 118 #endif |
119 | |
33478 | 120 { "autosync", >kAutoSyncOn, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
121 { "autosync_size", >kAutoSync, CONF_TYPE_INT, CONF_RANGE, 0, 10000, NULL }, | |
23077 | 122 |
33478 | 123 { "ao_volnorm", >kAONorm, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
124 { "ao_surround", >kAOSurround, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
125 { "ao_extra_stereo", >kAOExtraStereo, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
126 { "ao_extra_stereo_coefficient", >kAOExtraStereoMul, CONF_TYPE_FLOAT, CONF_RANGE, -10.0, 10.0, NULL }, | |
33223 | 127 |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
128 #ifdef CONFIG_ALSA |
33478 | 129 { "ao_alsa_mixer", >kAOALSAMixer, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
130 { "ao_alsa_mixer_channel", >kAOALSAMixerChannel, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
131 { "ao_alsa_device", >kAOALSADevice, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
23077 | 132 #endif |
33223 | 133 |
134 #ifdef CONFIG_OSS_AUDIO | |
33478 | 135 { "ao_oss_mixer", >kAOOSSMixer, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
136 { "ao_oss_mixer_channel", >kAOOSSMixerChannel, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
137 { "ao_oss_device", >kAOOSSDevice, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
23077 | 138 #endif |
33223 | 139 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
140 #ifdef CONFIG_ESD |
33478 | 141 { "ao_esd_device", >kAOESDDevice, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
23077 | 142 #endif |
143 | |
33223 | 144 #ifdef CONFIG_SDL |
33478 | 145 { "ao_sdl_subdriver", >kAOSDLDriver, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
23077 | 146 #endif |
147 | |
33478 | 148 { "enable_audio_equ", >kEnableAudioEqualizer, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
23077 | 149 |
33478 | 150 { "equ_channel_1", >kEquChannel1, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
151 { "equ_channel_2", >kEquChannel2, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
152 { "equ_channel_3", >kEquChannel3, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
153 { "equ_channel_4", >kEquChannel4, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
154 { "equ_channel_5", >kEquChannel5, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
155 { "equ_channel_6", >kEquChannel6, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
156 |
33223 | 157 #define audio_equ_row(i, j) \ |
33478 | 158 { "equ_band_" # i # j, >kEquChannels[i][j], CONF_TYPE_FLOAT, CONF_RANGE, -15.0, 15.0, NULL } |
33289 | 159 audio_equ_row(0, 0), audio_equ_row(0, 1), audio_equ_row(0, 2), audio_equ_row(0, 3), audio_equ_row(0, 4), audio_equ_row(0, 5), audio_equ_row(0, 6), audio_equ_row(0, 7), audio_equ_row(0, 8), audio_equ_row(0, 9), |
160 audio_equ_row(1, 0), audio_equ_row(1, 1), audio_equ_row(1, 2), audio_equ_row(1, 3), audio_equ_row(1, 4), audio_equ_row(1, 5), audio_equ_row(1, 6), audio_equ_row(1, 7), audio_equ_row(1, 8), audio_equ_row(1, 9), | |
161 audio_equ_row(2, 0), audio_equ_row(2, 1), audio_equ_row(2, 2), audio_equ_row(2, 3), audio_equ_row(2, 4), audio_equ_row(2, 5), audio_equ_row(2, 6), audio_equ_row(2, 7), audio_equ_row(2, 8), audio_equ_row(2, 9), | |
162 audio_equ_row(3, 0), audio_equ_row(3, 1), audio_equ_row(3, 2), audio_equ_row(3, 3), audio_equ_row(3, 4), audio_equ_row(3, 5), audio_equ_row(3, 6), audio_equ_row(3, 7), audio_equ_row(3, 8), audio_equ_row(3, 9), | |
163 audio_equ_row(4, 0), audio_equ_row(4, 1), audio_equ_row(4, 2), audio_equ_row(4, 3), audio_equ_row(4, 4), audio_equ_row(4, 5), audio_equ_row(4, 6), audio_equ_row(4, 7), audio_equ_row(4, 8), audio_equ_row(4, 9), | |
164 audio_equ_row(5, 0), audio_equ_row(5, 1), audio_equ_row(5, 2), audio_equ_row(5, 3), audio_equ_row(5, 4), audio_equ_row(5, 5), audio_equ_row(5, 6), audio_equ_row(5, 7), audio_equ_row(5, 8), audio_equ_row(5, 9), | |
23077 | 165 #undef audio_equ_row |
166 | |
33478 | 167 { "playbar", >kEnablePlayBar, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
168 { "load_fullscreen", >kLoadFullscreen, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
169 { "show_videowin", >kShowVideoWindow, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
33223 | 170 |
33478 | 171 { "gui_save_pos", &gui_save_pos, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
172 { "gui_main_pos_x", &gui_main_pos_x, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
173 { "gui_main_pos_y", &gui_main_pos_y, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
174 { "gui_video_out_pos_x", &gui_sub_pos_x, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
175 { "gui_video_out_pos_y", &gui_sub_pos_y, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
33223 | 176 |
33477 | 177 { "idle", &player_idle_mode, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
178 | |
33223 | 179 // NOTE TO MYSELF: Do we really need all/any non-gtkOptions, i.e. override mplayer options? |
180 | |
33478 | 181 { "gui_skin", &skinName, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
33223 | 182 |
33478 | 183 { "stopxscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 184 |
33478 | 185 { "cdrom_device", &cdrom_device, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
186 { "dvd_device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
33223 | 187 |
33478 | 188 { "osd_level", &osd_level, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL }, |
33223 | 189 |
33478 | 190 { "vo_driver", &video_driver_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, |
191 { "v_vfm", &video_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, | |
33223 | 192 |
33478 | 193 { "vf_autoq", &auto_quality, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL }, |
194 { "vo_direct_render", &vo_directrendering, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
195 { "vo_doublebuffering", &vo_doublebuffering, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
196 { "vo_panscan", &vo_panscan, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 1.0, NULL }, | |
33223 | 197 |
33478 | 198 { "v_flip", &flip, CONF_TYPE_INT, CONF_RANGE, -1, 1, NULL }, |
199 { "v_framedrop", &frame_dropping, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL }, | |
200 { "v_idx", &index_mode, CONF_TYPE_INT, CONF_RANGE, -1, 2, NULL }, | |
201 { "v_ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
33223 | 202 |
33478 | 203 { "ao_driver", &audio_driver_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, |
204 { "a_afm", &audio_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, | |
33223 | 205 |
33478 | 206 { "softvol", &soft_vol, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 207 |
33478 | 208 { "sub_auto_load", &sub_auto, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 209 #ifdef CONFIG_ICONV |
33478 | 210 { "sub_cp", &sub_cp, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
33223 | 211 #endif |
33478 | 212 { "sub_overlap", &suboverlap_enabled, CONF_TYPE_FLAG, 0, 0, 0, NULL }, |
213 { "sub_pos", &sub_pos, CONF_TYPE_INT, CONF_RANGE, 0, 200, NULL }, | |
214 { "sub_unicode", &sub_unicode, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
33223 | 215 |
33478 | 216 { "font_factor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0, NULL }, |
217 { "font_name", &font_name, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
33223 | 218 |
219 #ifdef CONFIG_FREETYPE | |
33478 | 220 { "font_encoding", &subtitle_font_encoding, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
221 { "font_text_scale", &text_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 100.0, NULL }, | |
222 { "font_osd_scale", &osd_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 100.0, NULL }, | |
223 { "font_blur", &subtitle_font_radius, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 8.0, NULL }, | |
224 { "font_outline", &subtitle_font_thickness, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 8.0, NULL }, | |
225 { "font_autoscale", &subtitle_autoscale, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL }, | |
33223 | 226 #endif |
227 | |
228 #ifdef CONFIG_ASS | |
33478 | 229 { "ass_enabled", &ass_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
230 { "ass_use_margins", &ass_use_margins, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
231 { "ass_top_margin", &ass_top_margin, CONF_TYPE_INT, CONF_RANGE, 0, 512, NULL }, | |
232 { "ass_bottom_margin", &ass_bottom_margin, CONF_TYPE_INT, CONF_RANGE, 0, 512, NULL }, | |
33223 | 233 #endif |
234 | |
33478 | 235 { NULL, NULL, 0, 0, 0, 0, NULL } |
23077 | 236 }; |
237 | |
33179 | 238 static char *gfgets(char *str, int size, FILE *f) |
23077 | 239 { |
33179 | 240 char *s, c; |
241 | |
242 s = fgets(str, size, f); | |
243 | |
244 if (s) { | |
245 c = s[strlen(s) - 1]; | |
246 | |
247 if (c == '\n' || c == '\r') | |
248 s[strlen(s) - 1] = 0; | |
249 | |
250 c = s[strlen(s) - 1]; | |
251 | |
252 if (c == '\n' || c == '\r') | |
253 s[strlen(s) - 1] = 0; | |
254 } | |
255 | |
256 return s; | |
23077 | 257 } |
258 | |
33565
9c4163ef54e4
Add const to string pointer argument that will not be modified.
reimar
parents:
33555
diff
changeset
|
259 int cfg_gui_include(m_option_t *conf, const char *filename) |
33470 | 260 { |
261 (void)conf; | |
262 | |
34172 | 263 return m_config_parse_config_file(gui_conf, filename, 0); |
33470 | 264 } |
265 | |
33179 | 266 int cfg_read(void) |
23077 | 267 { |
33179 | 268 char *cfg; |
269 FILE *f; | |
270 | |
33476 | 271 player_idle_mode = 1; // GUI is in idle mode by default |
272 | |
33179 | 273 // configuration |
274 | |
275 cfg = get_path("gui.conf"); | |
276 | |
33985 | 277 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[cfg] file: %s\n", cfg); |
33179 | 278 |
279 gui_conf = m_config_new(); | |
33480 | 280 |
281 if (!gui_conf) { | |
282 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_MemAllocFailed); | |
33768 | 283 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
33480 | 284 } |
285 | |
33179 | 286 m_config_register_options(gui_conf, gui_opts); |
287 | |
34172 | 288 if (!disable_gui_conf && (m_config_parse_config_file(gui_conf, cfg, 1) < 0)) { |
33530 | 289 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_ConfigFileError); |
33768 | 290 // mplayer(MPLAYER_EXIT_GUI, 1, 0); |
33179 | 291 } |
292 | |
293 free(cfg); | |
23077 | 294 |
33179 | 295 // playlist |
296 | |
297 cfg = get_path("gui.pl"); | |
298 f = fopen(cfg, "rt"); | |
299 | |
300 if (f) { | |
301 while (!feof(f)) { | |
302 char tmp[512]; | |
303 plItem *item; | |
23077 | 304 |
33179 | 305 if (gfgets(tmp, 512, f) == NULL) |
306 continue; | |
307 | |
308 item = calloc(1, sizeof(plItem)); | |
309 item->path = strdup(tmp); | |
310 gfgets(tmp, 512, f); | |
311 item->name = strdup(tmp); | |
33742
e1539e14d60f
Move purely list related parts of gtkSet() from interface.c to list.c.
ib
parents:
33737
diff
changeset
|
312 listSet(gtkAddPlItem, item); |
33179 | 313 } |
314 | |
315 fclose(f); | |
23077 | 316 } |
33179 | 317 |
318 free(cfg); | |
319 | |
320 // URL list | |
321 | |
322 cfg = get_path("gui.url"); | |
323 f = fopen(cfg, "rt"); | |
23077 | 324 |
33179 | 325 if (f) { |
326 while (!feof(f)) { | |
327 char tmp[512]; | |
33555 | 328 urlItem *item; |
33179 | 329 |
330 if (gfgets(tmp, 512, f) == NULL) | |
331 continue; | |
332 | |
33555 | 333 item = calloc(1, sizeof(urlItem)); |
33179 | 334 item->url = strdup(tmp); |
33742
e1539e14d60f
Move purely list related parts of gtkSet() from interface.c to list.c.
ib
parents:
33737
diff
changeset
|
335 listSet(gtkAddURLItem, item); |
33179 | 336 } |
337 | |
338 fclose(f); | |
23077 | 339 } |
33179 | 340 |
341 free(cfg); | |
342 | |
343 // directory history | |
344 | |
345 cfg = get_path("gui.history"); | |
346 f = fopen(cfg, "rt+"); | |
347 | |
348 if (f) { | |
349 int i = 0; | |
23077 | 350 |
33179 | 351 while (!feof(f)) { |
352 char tmp[512]; | |
353 | |
354 if (gfgets(tmp, 512, f) == NULL) | |
355 continue; | |
356 | |
357 fsHistory[i++] = gstrdup(tmp); | |
358 } | |
359 | |
360 fclose(f); | |
23077 | 361 } |
362 | |
33179 | 363 free(cfg); |
364 | |
365 return 0; | |
23077 | 366 } |
367 | |
33179 | 368 int cfg_write(void) |
23077 | 369 { |
33179 | 370 char *cfg; |
371 FILE *f; | |
372 int i; | |
373 | |
374 // configuration | |
375 | |
376 cfg = get_path("gui.conf"); | |
377 f = fopen(cfg, "wt+"); | |
378 | |
379 if (f) { | |
380 for (i = 0; gui_opts[i].name; i++) { | |
381 char *v = m_option_print(&gui_opts[i], gui_opts[i].p); | |
382 | |
383 if (v == (char *)-1) { | |
384 mp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_UnableToSaveOption, gui_opts[i].name); | |
385 v = NULL; | |
386 } | |
23077 | 387 |
33179 | 388 if (v) { |
389 fprintf(f, "%s = \"%s\"\n", gui_opts[i].name, v); | |
390 free(v); | |
391 } | |
392 } | |
393 | |
394 fclose(f); | |
23077 | 395 } |
33179 | 396 |
397 free(cfg); | |
398 | |
399 // playlist | |
400 | |
401 cfg = get_path("gui.pl"); | |
402 f = fopen(cfg, "wt+"); | |
403 | |
404 if (f) { | |
405 plCurrent = plList; | |
406 | |
407 while (plCurrent) { | |
408 if (plCurrent->path && plCurrent->name) { | |
409 fprintf(f, "%s\n", plCurrent->path); | |
410 fprintf(f, "%s\n", plCurrent->name); | |
411 } | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
412 |
33179 | 413 plCurrent = plCurrent->next; |
414 } | |
415 | |
416 fclose(f); | |
23077 | 417 } |
33179 | 418 |
419 free(cfg); | |
420 | |
421 // URL list | |
422 | |
423 cfg = get_path("gui.url"); | |
424 f = fopen(cfg, "wt+"); | |
425 | |
426 if (f) { | |
33748 | 427 while (urlList) { |
428 if (urlList->url) | |
429 fprintf(f, "%s\n", urlList->url); | |
33179 | 430 |
33748 | 431 urlList = urlList->next; |
33179 | 432 } |
23077 | 433 |
33179 | 434 fclose(f); |
23077 | 435 } |
33179 | 436 |
437 free(cfg); | |
438 | |
439 // directory history | |
440 | |
441 cfg = get_path("gui.history"); | |
442 f = fopen(cfg, "wt+"); | |
443 | |
444 if (f) { | |
445 int i = 0; | |
23077 | 446 |
33179 | 447 // while (fsHistory[i] != NULL) |
448 for (i = 0; i < 5; i++) | |
449 if (fsHistory[i]) | |
450 fprintf(f, "%s\n", fsHistory[i]); | |
23077 | 451 |
33179 | 452 fclose(f); |
453 } | |
454 | |
455 free(cfg); | |
456 | |
457 return 0; | |
23077 | 458 } |