Mercurial > mplayer.hg
annotate gui/cfg.c @ 34757:da38eb1e2069
subassconvert: handle "\r\n" line ends
Previously the code converting text subtitles to ASS format converted newline
characters, and only those, to ASS "new line" markup. If the subtitles
contained "\r\n", the "\r" was thus left in the text. In previous libass
versions the "\r" was not visible, but in the current one it produces an empty
box. Improve the conversion to remove the "\r" in that case. Also treat a lone
"\r" as a newline.
Picked from mplayer2/3e0a2705
author | cboesch |
---|---|
date | Sat, 07 Apr 2012 11:17:09 +0000 |
parents | c4c333e49d29 |
children | 411875efca3f |
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 |
34562 | 19 #include <stdio.h> |
23077 | 20 #include <stdlib.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" | |
34586 | 30 #include "libavutil/common.h" |
30653
3d23e24c5c60
Declare externally used variables from vd.c as extern in vd.h.
diego
parents:
30633
diff
changeset
|
31 #include "libmpcodecs/vd.h" |
34562 | 32 #include "libmpdemux/demuxer.h" |
23077 | 33 #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
|
34 #include "libvo/x11_common.h" |
33179 | 35 #include "mixer.h" |
33768 | 36 #include "mp_core.h" |
33179 | 37 #include "mp_msg.h" |
38 #include "mpcommon.h" | |
39 #include "mplayer.h" | |
40 #include "parser-cfg.h" | |
41 #include "path.h" | |
34562 | 42 #include "stream/stream.h" |
43 #include "sub/ass_mp.h" | |
32981 | 44 #include "sub/font_load.h" |
33179 | 45 #include "sub/sub.h" |
23077 | 46 |
33265 | 47 m_config_t *gui_conf; |
48 | |
33220 | 49 int gtkCacheOn; |
33180 | 50 int gtkCacheSize = 2048; |
51 | |
33220 | 52 int gtkVfPP; |
23077 | 53 |
33249 | 54 int gtkVfLAVC; |
33180 | 55 char *gtkDXR3Device; |
56 | |
33220 | 57 int gtkAutoSyncOn; |
58 int gtkAutoSync; | |
23077 | 59 |
33220 | 60 int gtkAONorm; |
61 int gtkAOSurround; | |
62 int gtkAOExtraStereo; | |
33221 | 63 float gtkAOExtraStereoMul = 1.0f; |
33180 | 64 |
33179 | 65 char *gtkAOALSAMixer; |
66 char *gtkAOALSAMixerChannel; | |
67 char *gtkAOALSADevice; | |
33180 | 68 |
69 char *gtkAOOSSMixer; | |
70 char *gtkAOOSSMixerChannel; | |
71 char *gtkAOOSSDevice; | |
72 | |
33179 | 73 char *gtkAOESDDevice; |
23077 | 74 |
33180 | 75 char *gtkAOSDLDriver; |
23077 | 76 |
33220 | 77 int gtkEnableAudioEqualizer; |
33747 | 78 float gtkEquChannels[6][10]; |
23077 | 79 |
33220 | 80 int gtkSubDumpMPSub; |
81 int gtkSubDumpSrt; | |
23077 | 82 |
33180 | 83 gtkASS_t gtkASS; |
84 | |
33220 | 85 int gtkEnablePlayBar = 1; |
86 int gtkLoadFullscreen; | |
33179 | 87 int gtkShowVideoWindow = 1; |
23077 | 88 |
34698 | 89 int gui_save_pos = 1; |
90 int gui_main_pos_x = -3; | |
91 int gui_main_pos_y = -3; | |
34697 | 92 int gui_video_pos_x = -3; |
93 int gui_video_pos_y = -3; | |
23077 | 94 |
33747 | 95 int guiWinID = -1; |
96 | |
97 char *skinName; | |
98 | |
33751
c28c967e40e9
Replace numeric constant fsPersistant_MaxPos for fsHistory array size.
ib
parents:
33750
diff
changeset
|
99 char *fsHistory[5]; |
33750
8b5898908212
Remove variable holding history of selected files from interface.[ch].
ib
parents:
33748
diff
changeset
|
100 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
101 static const char gui_configuration[] = "gui.conf"; |
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
102 static const char gui_history[] = "gui.history"; |
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
103 static const char gui_playlist[] = "gui.pl"; |
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
104 static const char gui_urllist[] = "gui.url"; |
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
105 |
33179 | 106 static const m_option_t gui_opts[] = { |
34708 | 107 { "cache", >kCacheOn, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
34707 | 108 { "cache_size", >kCacheSize, CONF_TYPE_INT, CONF_RANGE, 32, 0x7fffffff, NULL }, |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
109 |
34708 | 110 { "vf_pp", >kVfPP, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 111 |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
112 #ifdef CONFIG_DXR3 |
34708 | 113 { "vf_lavc", >kVfLAVC, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
114 { "vo_dxr3_device", >kDXR3Device, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
23077 | 115 #endif |
116 | |
34708 | 117 { "autosync", >kAutoSyncOn, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
118 { "autosync_size", >kAutoSync, CONF_TYPE_INT, CONF_RANGE, 0, 10000, NULL }, | |
23077 | 119 |
34708 | 120 { "ao_volnorm", >kAONorm, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
121 { "ao_surround", >kAOSurround, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
122 { "ao_extra_stereo", >kAOExtraStereo, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
123 { "ao_extra_stereo_coefficient", >kAOExtraStereoMul, CONF_TYPE_FLOAT, CONF_RANGE, -10.0, 10.0, NULL }, | |
33223 | 124 |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
125 #ifdef CONFIG_ALSA |
34708 | 126 { "ao_alsa_mixer", >kAOALSAMixer, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
127 { "ao_alsa_mixer_channel", >kAOALSAMixerChannel, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
128 { "ao_alsa_device", >kAOALSADevice, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
23077 | 129 #endif |
33223 | 130 |
131 #ifdef CONFIG_OSS_AUDIO | |
34708 | 132 { "ao_oss_mixer", >kAOOSSMixer, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
133 { "ao_oss_mixer_channel", >kAOOSSMixerChannel, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
134 { "ao_oss_device", >kAOOSSDevice, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
23077 | 135 #endif |
33223 | 136 |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
137 #ifdef CONFIG_ESD |
34708 | 138 { "ao_esd_device", >kAOESDDevice, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
23077 | 139 #endif |
140 | |
33223 | 141 #ifdef CONFIG_SDL |
34708 | 142 { "ao_sdl_subdriver", >kAOSDLDriver, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
23077 | 143 #endif |
144 | |
34708 | 145 { "enable_audio_equ", >kEnableAudioEqualizer, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
23077 | 146 |
34708 | 147 { "equ_channel_1", >kEquChannel1, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
148 { "equ_channel_2", >kEquChannel2, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
149 { "equ_channel_3", >kEquChannel3, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
150 { "equ_channel_4", >kEquChannel4, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
151 { "equ_channel_5", >kEquChannel5, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
152 { "equ_channel_6", >kEquChannel6, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
153 |
33223 | 154 #define audio_equ_row(i, j) \ |
34708 | 155 { "equ_band_" # i # j, >kEquChannels[i][j], CONF_TYPE_FLOAT, CONF_RANGE, -15.0, 15.0, NULL } |
33289 | 156 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), |
157 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), | |
158 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), | |
159 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), | |
160 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), | |
161 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 | 162 #undef audio_equ_row |
163 | |
34708 | 164 { "playbar", >kEnablePlayBar, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
165 { "load_fullscreen", >kLoadFullscreen, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
166 { "show_videowin", >kShowVideoWindow, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
33223 | 167 |
34708 | 168 { "gui_save_pos", &gui_save_pos, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
169 { "gui_main_pos_x", &gui_main_pos_x, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
170 { "gui_main_pos_y", &gui_main_pos_y, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
171 { "gui_video_out_pos_x", &gui_video_pos_x, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
172 { "gui_video_out_pos_y", &gui_video_pos_y, CONF_TYPE_INT, 0, 0, 0, NULL }, | |
33223 | 173 |
34708 | 174 { "idle", &player_idle_mode, CONF_TYPE_FLAG, CONF_GLOBAL, 0, 1, NULL }, |
33477 | 175 |
33223 | 176 // NOTE TO MYSELF: Do we really need all/any non-gtkOptions, i.e. override mplayer options? |
177 | |
34708 | 178 { "gui_skin", &skinName, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
33223 | 179 |
34708 | 180 { "stopxscreensaver", &stop_xscreensaver, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 181 |
34708 | 182 { "cdrom_device", &cdrom_device, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
183 { "dvd_device", &dvd_device, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
33223 | 184 |
34708 | 185 { "osd_level", &osd_level, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL }, |
33223 | 186 |
34708 | 187 { "vo_driver", &video_driver_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, |
188 { "v_vfm", &video_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, | |
33223 | 189 |
34708 | 190 { "vf_autoq", &auto_quality, CONF_TYPE_INT, CONF_RANGE, 0, 100, NULL }, |
191 { "vo_direct_render", &vo_directrendering, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
192 { "vo_doublebuffering", &vo_doublebuffering, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
193 { "vo_panscan", &vo_panscan, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 1.0, NULL }, | |
33223 | 194 |
34708 | 195 { "v_flip", &flip, CONF_TYPE_INT, CONF_RANGE, -1, 1, NULL }, |
196 { "v_framedrop", &frame_dropping, CONF_TYPE_INT, CONF_RANGE, 0, 2, NULL }, | |
197 { "v_idx", &index_mode, CONF_TYPE_INT, CONF_RANGE, -1, 2, NULL }, | |
198 { "v_ni", &force_ni, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
33223 | 199 |
34708 | 200 { "ao_driver", &audio_driver_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, |
201 { "a_afm", &audio_fm_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL }, | |
33223 | 202 |
34708 | 203 { "softvol", &soft_vol, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 204 |
34708 | 205 { "sub_auto_load", &sub_auto, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
33223 | 206 #ifdef CONFIG_ICONV |
34708 | 207 { "sub_cp", &sub_cp, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
33223 | 208 #endif |
34708 | 209 { "sub_overlap", &suboverlap_enabled, CONF_TYPE_FLAG, 0, 0, 0, NULL }, |
210 { "sub_pos", &sub_pos, CONF_TYPE_INT, CONF_RANGE, 0, 200, NULL }, | |
211 { "sub_unicode", &sub_unicode, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
33223 | 212 |
34708 | 213 { "font_factor", &font_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 10.0, NULL }, |
214 { "font_name", &font_name, CONF_TYPE_STRING, 0, 0, 0, NULL }, | |
33223 | 215 |
216 #ifdef CONFIG_FREETYPE | |
34708 | 217 { "font_encoding", &subtitle_font_encoding, CONF_TYPE_STRING, 0, 0, 0, NULL }, |
218 { "font_text_scale", &text_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 100.0, NULL }, | |
219 { "font_osd_scale", &osd_font_scale_factor, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 100.0, NULL }, | |
220 { "font_blur", &subtitle_font_radius, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 8.0, NULL }, | |
221 { "font_outline", &subtitle_font_thickness, CONF_TYPE_FLOAT, CONF_RANGE, 0.0, 8.0, NULL }, | |
222 { "font_autoscale", &subtitle_autoscale, CONF_TYPE_INT, CONF_RANGE, 0, 3, NULL }, | |
33223 | 223 #endif |
224 | |
225 #ifdef CONFIG_ASS | |
34708 | 226 { "ass_enabled", &ass_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL }, |
227 { "ass_use_margins", &ass_use_margins, CONF_TYPE_FLAG, 0, 0, 1, NULL }, | |
228 { "ass_top_margin", &ass_top_margin, CONF_TYPE_INT, CONF_RANGE, 0, 512, NULL }, | |
229 { "ass_bottom_margin", &ass_bottom_margin, CONF_TYPE_INT, CONF_RANGE, 0, 512, NULL }, | |
33223 | 230 #endif |
231 | |
34708 | 232 { NULL, NULL, 0, 0, 0, 0, NULL } |
23077 | 233 }; |
234 | |
33565
9c4163ef54e4
Add const to string pointer argument that will not be modified.
reimar
parents:
33555
diff
changeset
|
235 int cfg_gui_include(m_option_t *conf, const char *filename) |
33470 | 236 { |
237 (void)conf; | |
238 | |
34172 | 239 return m_config_parse_config_file(gui_conf, filename, 0); |
33470 | 240 } |
241 | |
34561 | 242 void cfg_read(void) |
23077 | 243 { |
34580 | 244 char *fname, line[512]; |
34578 | 245 FILE *file; |
33179 | 246 |
33476 | 247 player_idle_mode = 1; // GUI is in idle mode by default |
248 | |
34684 | 249 /* configuration */ |
33179 | 250 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
251 fname = get_path(gui_configuration); |
33179 | 252 |
34578 | 253 mp_msg(MSGT_GPLAYER, MSGL_DBG2, "[cfg] file: %s\n", fname); |
33179 | 254 |
255 gui_conf = m_config_new(); | |
33480 | 256 |
257 if (!gui_conf) { | |
258 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_MemAllocFailed); | |
33768 | 259 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
33480 | 260 } |
261 | |
33179 | 262 m_config_register_options(gui_conf, gui_opts); |
263 | |
34578 | 264 if (!disable_gui_conf && (m_config_parse_config_file(gui_conf, fname, 1) < 0)) { |
34577
22887c794c02
In case of a GUI config error, exit MPlayer with error.
ib
parents:
34576
diff
changeset
|
265 gmp_msg(MSGT_GPLAYER, MSGL_ERR, MSGTR_ConfigFileError "\n"); |
22887c794c02
In case of a GUI config error, exit MPlayer with error.
ib
parents:
34576
diff
changeset
|
266 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); |
33179 | 267 } |
268 | |
34578 | 269 free(fname); |
23077 | 270 |
34684 | 271 /* playlist */ |
33179 | 272 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
273 fname = get_path(gui_playlist); |
34578 | 274 file = fopen(fname, "rt"); |
33179 | 275 |
34578 | 276 if (file) { |
34581 | 277 while (fgetstr(line, sizeof(line), file)) { |
33179 | 278 plItem *item; |
23077 | 279 |
34588 | 280 if (!*line) |
281 continue; | |
282 | |
34583 | 283 item = calloc(1, sizeof(plItem)); |
34582 | 284 |
285 if (!item) { | |
286 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_MemAllocFailed); | |
287 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); | |
288 } | |
289 | |
34580 | 290 item->path = strdup(line); |
34584 | 291 |
34588 | 292 if (fgetstr(line, sizeof(line), file) && *line) { |
34585 | 293 item->name = strdup(line); |
34681 | 294 listMgr(PLAYLIST_ITEM_APPEND, item); |
34584 | 295 } else { |
296 free(item->path); | |
297 free(item); | |
298 } | |
33179 | 299 } |
300 | |
34578 | 301 fclose(file); |
23077 | 302 } |
33179 | 303 |
34578 | 304 free(fname); |
33179 | 305 |
34684 | 306 /* URL list */ |
33179 | 307 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
308 fname = get_path(gui_urllist); |
34578 | 309 file = fopen(fname, "rt"); |
23077 | 310 |
34578 | 311 if (file) { |
34581 | 312 while (fgetstr(line, sizeof(line), file)) { |
33555 | 313 urlItem *item; |
33179 | 314 |
34588 | 315 if (!*line) |
316 continue; | |
317 | |
34583 | 318 item = calloc(1, sizeof(urlItem)); |
34582 | 319 |
320 if (!item) { | |
321 gmp_msg(MSGT_GPLAYER, MSGL_FATAL, MSGTR_MemAllocFailed); | |
322 mplayer(MPLAYER_EXIT_GUI, EXIT_ERROR, 0); | |
323 } | |
324 | |
34580 | 325 item->url = strdup(line); |
34663 | 326 listMgr(URLLIST_ITEM_ADD, item); |
33179 | 327 } |
328 | |
34578 | 329 fclose(file); |
23077 | 330 } |
33179 | 331 |
34578 | 332 free(fname); |
33179 | 333 |
34684 | 334 /* directory history */ |
33179 | 335 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
336 fname = get_path(gui_history); |
34579 | 337 file = fopen(fname, "rt"); |
33179 | 338 |
34578 | 339 if (file) { |
34586 | 340 unsigned int i = 0; |
23077 | 341 |
34581 | 342 while (fgetstr(line, sizeof(line), file)) |
34588 | 343 if (*line && (i < FF_ARRAY_ELEMS(fsHistory))) |
34589 | 344 fsHistory[i++] = strdup(line); |
33179 | 345 |
34578 | 346 fclose(file); |
23077 | 347 } |
348 | |
34578 | 349 free(fname); |
23077 | 350 } |
351 | |
34561 | 352 void cfg_write(void) |
23077 | 353 { |
34578 | 354 char *fname; |
355 FILE *file; | |
33179 | 356 |
34684 | 357 /* configuration */ |
33179 | 358 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
359 fname = get_path(gui_configuration); |
34578 | 360 file = fopen(fname, "wt+"); |
33179 | 361 |
34578 | 362 if (file) { |
34621
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
363 const m_option_t *opts = gui_opts; |
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
364 |
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
365 while (opts->name) { |
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
366 char *val = m_option_print(opts, opts->p); |
33179 | 367 |
34578 | 368 if (val == (char *)-1) { |
34621
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
369 gmp_msg(MSGT_GPLAYER, MSGL_WARN, MSGTR_UnableToSaveOption, opts->name); |
34578 | 370 val = NULL; |
33179 | 371 } |
23077 | 372 |
34578 | 373 if (val) { |
34595 | 374 char delim[] = "\""; |
34593
83f7a2f8af3b
Adjust content of GUI configuration file to MPlayer configuration files.
ib
parents:
34592
diff
changeset
|
375 |
83f7a2f8af3b
Adjust content of GUI configuration file to MPlayer configuration files.
ib
parents:
34592
diff
changeset
|
376 if (!strchr(val, ' ')) |
83f7a2f8af3b
Adjust content of GUI configuration file to MPlayer configuration files.
ib
parents:
34592
diff
changeset
|
377 *delim = 0; |
83f7a2f8af3b
Adjust content of GUI configuration file to MPlayer configuration files.
ib
parents:
34592
diff
changeset
|
378 |
34621
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
379 fprintf(file, "%s=%s%s%s\n", opts->name, delim, val, delim); |
34578 | 380 free(val); |
33179 | 381 } |
34621
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
382 |
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
383 opts++; |
33179 | 384 } |
385 | |
34578 | 386 fclose(file); |
23077 | 387 } |
33179 | 388 |
34578 | 389 free(fname); |
33179 | 390 |
34684 | 391 /* playlist */ |
33179 | 392 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
393 fname = get_path(gui_playlist); |
34578 | 394 file = fopen(fname, "wt+"); |
33179 | 395 |
34578 | 396 if (file) { |
34667 | 397 plItem *item = listMgr(PLAYLIST_GET, 0); |
33179 | 398 |
34594 | 399 while (item) { |
400 if (item->path && item->name) { | |
401 fprintf(file, "%s\n", item->path); | |
402 fprintf(file, "%s\n", item->name); | |
33179 | 403 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
404 |
34594 | 405 item = item->next; |
33179 | 406 } |
407 | |
34578 | 408 fclose(file); |
23077 | 409 } |
33179 | 410 |
34578 | 411 free(fname); |
33179 | 412 |
34684 | 413 /* URL list */ |
33179 | 414 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
415 fname = get_path(gui_urllist); |
34578 | 416 file = fopen(fname, "wt+"); |
33179 | 417 |
34578 | 418 if (file) { |
34668 | 419 urlItem *item = listMgr(URLLIST_GET, 0); |
33179 | 420 |
34594 | 421 while (item) { |
422 if (item->url) | |
423 fprintf(file, "%s\n", item->url); | |
424 | |
425 item = item->next; | |
33179 | 426 } |
23077 | 427 |
34578 | 428 fclose(file); |
23077 | 429 } |
33179 | 430 |
34578 | 431 free(fname); |
33179 | 432 |
34684 | 433 /* directory history */ |
33179 | 434 |
34596
04feb00f91be
Prefer static const char arrays for string constants to #defines.
ib
parents:
34595
diff
changeset
|
435 fname = get_path(gui_history); |
34578 | 436 file = fopen(fname, "wt+"); |
33179 | 437 |
34578 | 438 if (file) { |
34621
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
439 unsigned int i; |
97148652b0c6
Replace for loop with index by while loop with pointer.
ib
parents:
34610
diff
changeset
|
440 |
34591
73348cfa22e2
Use macro FF_ARRAY_ELEMS() instead of numeric constant.
ib
parents:
34590
diff
changeset
|
441 for (i = 0; i < FF_ARRAY_ELEMS(fsHistory); i++) |
33179 | 442 if (fsHistory[i]) |
34578 | 443 fprintf(file, "%s\n", fsHistory[i]); |
23077 | 444 |
34578 | 445 fclose(file); |
33179 | 446 } |
447 | |
34578 | 448 free(fname); |
23077 | 449 } |