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