Mercurial > mplayer.hg
annotate gui/cfg.c @ 34410:bb440bfcade9
configure: Simplify Theora check.
The Theora check does some very elaborate tests to account for issues in
old libtheora versions. Nowadays libtheora is stable and easy to test
for, so there is no longer a need for the extra complexity.
Also drop the Theora check that linked against tremor/bitwise.c.
Its purpose is now lost in the mists of time.
author | diego |
---|---|
date | Wed, 04 Jan 2012 10:39:38 +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 } |