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