Mercurial > mplayer.hg
annotate gui/cfg.c @ 32938:29ce708287dd
Reduce item arrays to reasonable size.
The current maximum of items used in skins is 46 (for main), 27 (for bar)
and 15 (for menu), so 64 seems to be a reasonable value.
The symbolic constant will allow to check for out-of-bounds array access later
(which currently isn't performed) and issue an appropriate error message.
author | ib |
---|---|
date | Fri, 04 Mar 2011 13:58:48 +0000 |
parents | fbe5c829c69b |
children | 6e22bcc85ac5 |
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 | |
23 #include "config.h" | |
32461 | 24 #include "sub/ass_mp.h" |
23077 | 25 #include "mp_msg.h" |
26 #include "help_mp.h" | |
27 #include "mixer.h" | |
32043
f6249bc89c38
Move extern declarations used by both mplayer.c and mencoder.c to mpcommon.h.
diego
parents:
32020
diff
changeset
|
28 #include "mpcommon.h" |
23077 | 29 #include "mplayer.h" |
30 #include "m_config.h" | |
31 #include "m_option.h" | |
32020
6c48f42a9c75
Replace m_config_parse_config_file() forward declaration by proper #include.
diego
parents:
31385
diff
changeset
|
32 #include "parser-cfg.h" |
30901 | 33 #include "path.h" |
30653
3d23e24c5c60
Declare externally used variables from vd.c as extern in vd.h.
diego
parents:
30633
diff
changeset
|
34 #include "libmpcodecs/vd.h" |
32467 | 35 #include "sub/sub.h" |
23077 | 36 #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
|
37 #include "libvo/x11_common.h" |
24149
35fcce39b121
Remove redundant extern variable declarations, include proper headers instead.
diego
parents:
23795
diff
changeset
|
38 #include "stream/stream.h" |
35fcce39b121
Remove redundant extern variable declarations, include proper headers instead.
diego
parents:
23795
diff
changeset
|
39 #include "libmpdemux/demuxer.h" |
23077 | 40 |
41 #include "cfg.h" | |
42 #include "app.h" | |
43 #include "interface.h" | |
30536
39a4dd7ec420
Move GUI-related extern declarations to a GUI header file.
diego
parents:
30535
diff
changeset
|
44 #include "mplayer/gmplayer.h" |
23077 | 45 #include "mplayer/play.h" |
46 | |
47 // --- params | |
48 | |
49 int gtkEnableAudioEqualizer = 0; | |
50 | |
51 int gtkVfPP = 0; | |
32117 | 52 int gtkVfLAVC = 0; |
23077 | 53 |
54 int gtkAONorm = 0; | |
55 int gtkAOSurround = 0; | |
56 int gtkAOExtraStereo = 0; | |
57 float gtkAOExtraStereoMul = 1.0; | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
58 #ifdef CONFIG_OSS_AUDIO |
23077 | 59 char * gtkAOOSSMixer; |
60 char * gtkAOOSSMixerChannel; | |
61 char * gtkAOOSSDevice; | |
62 #endif | |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
63 #ifdef CONFIG_ALSA |
23077 | 64 char * gtkAOALSAMixer; |
65 char * gtkAOALSAMixerChannel; | |
66 char * gtkAOALSADevice; | |
67 #endif | |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
68 #ifdef CONFIG_SDL |
23077 | 69 char * gtkAOSDLDriver; |
70 #endif | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
71 #ifdef CONFIG_ESD |
23077 | 72 char * gtkAOESDDevice; |
73 #endif | |
74 | |
75 int gtkCacheOn = 0; | |
76 int gtkCacheSize = 2048; | |
77 | |
78 int gtkAutoSyncOn = 0; | |
79 int gtkAutoSync = 0; | |
80 | |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
81 #ifdef CONFIG_DXR3 |
23077 | 82 char * gtkDXR3Device; |
83 #endif | |
84 | |
85 int gtkSubDumpMPSub = 0; | |
86 int gtkSubDumpSrt = 0; | |
87 | |
88 int gtkLoadFullscreen = 0; | |
89 int gtkShowVideoWindow = 1; | |
90 int gtkEnablePlayBar = 1; | |
91 | |
92 int gui_save_pos = 1; | |
93 int gui_main_pos_x = -2; | |
94 int gui_main_pos_y = -2; | |
95 int gui_sub_pos_x = -1; | |
96 int gui_sub_pos_y = -1; | |
97 | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
98 #ifdef CONFIG_ASS |
23077 | 99 gtkASS_t gtkASS; |
100 #endif | |
101 // --- | |
102 | |
103 static m_config_t * gui_conf; | |
25710 | 104 static const m_option_t gui_opts[] = |
23077 | 105 { |
106 { "enable_audio_equ",>kEnableAudioEqualizer,CONF_TYPE_FLAG,0,0,1,NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
107 |
23077 | 108 { "vo_driver",&video_driver_list,CONF_TYPE_STRING_LIST,0,0,0,NULL }, |
109 { "vo_panscan",&vo_panscan,CONF_TYPE_FLOAT,CONF_RANGE,0.0,1.0,NULL }, | |
110 { "vo_doublebuffering",&vo_doublebuffering,CONF_TYPE_FLAG,0,0,1,NULL }, | |
111 { "vo_direct_render",&vo_directrendering,CONF_TYPE_FLAG,0,0,1,NULL }, | |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
112 #ifdef CONFIG_DXR3 |
23077 | 113 { "vo_dxr3_device",>kDXR3Device,CONF_TYPE_STRING,0,0,0,NULL }, |
114 #endif | |
115 | |
116 { "v_framedrop",&frame_dropping,CONF_TYPE_INT,CONF_RANGE,0,2,NULL }, | |
117 { "v_flip",&flip,CONF_TYPE_INT,CONF_RANGE,-1,1,NULL }, | |
118 { "v_ni",&force_ni,CONF_TYPE_FLAG,0,0,1,NULL }, | |
119 { "v_idx",&index_mode,CONF_TYPE_INT,CONF_RANGE,-1,2,NULL }, | |
120 { "v_vfm",&video_fm_list,CONF_TYPE_STRING_LIST,0,0,0,NULL }, | |
121 { "a_afm",&audio_fm_list,CONF_TYPE_STRING_LIST,0,0,0,NULL }, | |
122 | |
123 { "vf_pp",>kVfPP,CONF_TYPE_FLAG,0,0,1,NULL }, | |
124 { "vf_autoq",&auto_quality,CONF_TYPE_INT,CONF_RANGE,0,100,NULL }, | |
125 { "vf_lavc",>kVfLAVC,CONF_TYPE_FLAG,0,0,1,NULL }, | |
126 | |
127 { "ao_driver",&audio_driver_list,CONF_TYPE_STRING_LIST,0,0,0,NULL }, | |
128 { "ao_volnorm",>kAONorm,CONF_TYPE_FLAG,0,0,1,NULL }, | |
129 { "softvol",&soft_vol,CONF_TYPE_FLAG,0,0,1,NULL }, | |
130 { "ao_surround",>kAOSurround,CONF_TYPE_FLAG,0,0,1,NULL }, | |
131 { "ao_extra_stereo",>kAOExtraStereo,CONF_TYPE_FLAG,0,0,1,NULL }, | |
132 { "ao_extra_stereo_coefficient",>kAOExtraStereoMul,CONF_TYPE_FLOAT,CONF_RANGE,-10,10,NULL }, | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
133 #ifdef CONFIG_OSS_AUDIO |
23077 | 134 { "ao_oss_mixer",>kAOOSSMixer,CONF_TYPE_STRING,0,0,0,NULL }, |
135 { "ao_oss_mixer_channel",>kAOOSSMixerChannel,CONF_TYPE_STRING,0,0,0,NULL }, | |
136 { "ao_oss_device",>kAOOSSDevice,CONF_TYPE_STRING,0,0,0,NULL }, | |
137 #endif | |
27390
9d95dc936e66
Introduce CONFIG_ALSA preprocessor directive for ALSA 0.9 and 1.x.
diego
parents:
27387
diff
changeset
|
138 #ifdef CONFIG_ALSA |
23077 | 139 { "ao_alsa_mixer",>kAOALSAMixer,CONF_TYPE_STRING,0,0,0,NULL }, |
140 { "ao_alsa_mixer_channel",>kAOALSAMixerChannel,CONF_TYPE_STRING,0,0,0,NULL }, | |
141 { "ao_alsa_device",>kAOALSADevice,CONF_TYPE_STRING,0,0,0,NULL }, | |
142 #endif | |
27370
14c5017f40d2
Change a bunch of video/audio-output-specific preprocessor directives from
diego
parents:
27359
diff
changeset
|
143 #ifdef CONFIG_SDL |
23077 | 144 { "ao_sdl_subdriver",>kAOSDLDriver,CONF_TYPE_STRING,0,0,0,NULL }, |
145 #endif | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
146 #ifdef CONFIG_ESD |
23077 | 147 { "ao_esd_device",>kAOESDDevice,CONF_TYPE_STRING,0,0,0,NULL }, |
148 #endif | |
149 | |
150 { "dvd_device",&dvd_device,CONF_TYPE_STRING,0,0,0,NULL }, | |
151 { "cdrom_device",&cdrom_device,CONF_TYPE_STRING,0,0,0,NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
152 |
23077 | 153 { "osd_level",&osd_level,CONF_TYPE_INT,CONF_RANGE,0,3,NULL }, |
154 { "sub_auto_load",&sub_auto,CONF_TYPE_FLAG,0,0,1,NULL }, | |
155 { "sub_unicode",&sub_unicode,CONF_TYPE_FLAG,0,0,1,NULL }, | |
27341
e7c989f7a7c9
Start unifying names of internal preprocessor directives.
diego
parents:
26458
diff
changeset
|
156 #ifdef CONFIG_ASS |
23077 | 157 { "ass_enabled",&ass_enabled,CONF_TYPE_FLAG,0,0,1,NULL }, |
158 { "ass_use_margins",&ass_use_margins,CONF_TYPE_FLAG,0,0,1,NULL }, | |
159 { "ass_top_margin",&ass_top_margin,CONF_TYPE_INT,CONF_RANGE,0,512,NULL }, | |
160 { "ass_bottom_margin",&ass_bottom_margin,CONF_TYPE_INT,CONF_RANGE,0,512,NULL }, | |
161 #endif | |
162 { "sub_pos",&sub_pos,CONF_TYPE_INT,CONF_RANGE,0,200,NULL }, | |
163 { "sub_overlap",&suboverlap_enabled,CONF_TYPE_FLAG,0,0,0,NULL }, | |
27393 | 164 #ifdef CONFIG_ICONV |
23077 | 165 { "sub_cp",&sub_cp,CONF_TYPE_STRING,0,0,0,NULL }, |
166 #endif | |
167 { "font_factor",&font_factor,CONF_TYPE_FLOAT,CONF_RANGE,0.0,10.0,NULL }, | |
168 { "font_name",&font_name,CONF_TYPE_STRING,0,0,0,NULL }, | |
27393 | 169 #ifdef CONFIG_FREETYPE |
23077 | 170 { "font_encoding",&subtitle_font_encoding,CONF_TYPE_STRING,0,0,0,NULL }, |
171 { "font_text_scale",&text_font_scale_factor,CONF_TYPE_FLOAT,CONF_RANGE,0,100,NULL }, | |
172 { "font_osd_scale",&osd_font_scale_factor,CONF_TYPE_FLOAT,CONF_RANGE,0,100,NULL }, | |
173 { "font_blur",&subtitle_font_radius,CONF_TYPE_FLOAT,CONF_RANGE,0,8,NULL }, | |
174 { "font_outline",&subtitle_font_thickness,CONF_TYPE_FLOAT,CONF_RANGE,0,8,NULL }, | |
175 { "font_autoscale",&subtitle_autoscale,CONF_TYPE_INT,CONF_RANGE,0,3,NULL }, | |
176 #endif | |
177 | |
178 { "cache",>kCacheOn,CONF_TYPE_FLAG,0,0,1,NULL }, | |
179 { "cache_size",>kCacheSize,CONF_TYPE_INT,CONF_RANGE,-1,65535,NULL }, | |
180 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
181 { "playbar",>kEnablePlayBar,CONF_TYPE_FLAG,0,0,1,NULL }, |
23077 | 182 { "load_fullscreen",>kLoadFullscreen,CONF_TYPE_FLAG,0,0,1,NULL }, |
183 { "show_videowin", >kShowVideoWindow,CONF_TYPE_FLAG,0,0,1,NULL }, | |
184 { "stopxscreensaver",&stop_xscreensaver,CONF_TYPE_FLAG,0,0,1,NULL }, | |
185 | |
186 { "autosync",>kAutoSyncOn,CONF_TYPE_FLAG,0,0,1,NULL }, | |
187 { "autosync_size",>kAutoSync,CONF_TYPE_INT,CONF_RANGE,0,10000,NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
188 |
23077 | 189 { "gui_skin",&skinName,CONF_TYPE_STRING,0,0,0,NULL }, |
190 | |
191 { "gui_save_pos", &gui_save_pos, CONF_TYPE_FLAG,0,0,1,NULL}, | |
192 { "gui_main_pos_x", &gui_main_pos_x, CONF_TYPE_INT,0,0,0,NULL}, | |
193 { "gui_main_pos_y", &gui_main_pos_y, CONF_TYPE_INT,0,0,0,NULL}, | |
194 { "gui_video_out_pos_x", &gui_sub_pos_x, CONF_TYPE_INT,0,0,0,NULL}, | |
195 { "gui_video_out_pos_y", &gui_sub_pos_y, CONF_TYPE_INT,0,0,0,NULL}, | |
196 | |
197 { "equ_channel_1",>kEquChannel1,CONF_TYPE_STRING,0,0,0,NULL }, | |
198 { "equ_channel_2",>kEquChannel2,CONF_TYPE_STRING,0,0,0,NULL }, | |
199 { "equ_channel_3",>kEquChannel3,CONF_TYPE_STRING,0,0,0,NULL }, | |
200 { "equ_channel_4",>kEquChannel4,CONF_TYPE_STRING,0,0,0,NULL }, | |
201 { "equ_channel_5",>kEquChannel5,CONF_TYPE_STRING,0,0,0,NULL }, | |
202 { "equ_channel_6",>kEquChannel6,CONF_TYPE_STRING,0,0,0,NULL }, | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
203 |
23077 | 204 #define audio_equ_row( i,j ) { "equ_band_"#i#j,>kEquChannels[i][j],CONF_TYPE_FLOAT,CONF_RANGE,-15.0,15.0,NULL }, |
205 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 ) | |
206 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 ) | |
207 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 ) | |
208 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 ) | |
209 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 ) | |
210 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 ) | |
211 #undef audio_equ_row | |
212 | |
213 { NULL, NULL, 0, 0, 0, 0, NULL } | |
214 }; | |
215 | |
30535
016e5fc1dead
GUI: Mark functions that are not used outside their files as static.
diego
parents:
30063
diff
changeset
|
216 static char * gfgets( char * str, int size, FILE * f ) |
23077 | 217 { |
218 char * s = fgets( str,size,f ); | |
219 char c; | |
220 if ( s ) | |
221 { | |
222 c=s[ strlen( s ) - 1 ]; if ( c == '\n' || c == '\r' ) s[ strlen( s ) - 1 ]=0; | |
223 c=s[ strlen( s ) - 1 ]; if ( c == '\n' || c == '\r' ) s[ strlen( s ) - 1 ]=0; | |
224 } | |
225 return s; | |
226 } | |
227 | |
228 int cfg_read( void ) | |
229 { | |
230 char * cfg = get_path( "gui.conf" ); | |
231 FILE * f; | |
232 | |
233 // -- read configuration | |
234 mp_msg( MSGT_GPLAYER,MSGL_V,"[cfg] reading config file: %s\n",cfg ); | |
235 gui_conf=m_config_new(); | |
236 m_config_register_options( gui_conf,gui_opts ); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
237 if ( !disable_gui_conf && m_config_parse_config_file( gui_conf,cfg ) < 0 ) |
23077 | 238 { |
239 mp_msg( MSGT_GPLAYER,MSGL_FATAL,MSGTR_ConfigFileError ); | |
240 // exit( 1 ); | |
241 } | |
242 free( cfg ); | |
243 | |
244 // -- read pl | |
245 cfg=get_path( "gui.pl" ); | |
246 if ( (f=fopen( cfg,"rt" )) ) | |
247 { | |
248 while ( !feof( f ) ) | |
249 { | |
250 char tmp[512]; plItem * item; | |
251 if ( gfgets( tmp,512,f ) == NULL ) continue; | |
252 item=calloc( 1,sizeof( plItem ) ); | |
253 item->path=strdup( tmp ); | |
254 gfgets( tmp,512,f ); | |
255 item->name=strdup( tmp ); | |
256 gtkSet( gtkAddPlItem,0,(void*)item ); | |
257 } | |
258 fclose( f ); | |
259 } | |
260 free( cfg ); | |
261 | |
262 //-- read previously visited urls | |
263 cfg=get_path( "gui.url" ); | |
264 if ( (f=fopen( cfg,"rt" )) ) | |
265 { | |
266 while ( !feof( f ) ) | |
267 { | |
268 char tmp[512]; URLItem * item; | |
269 if ( gfgets( tmp,512,f ) == NULL ) continue; | |
270 item=calloc( 1,sizeof( URLItem ) ); | |
271 item->url=strdup( tmp ); | |
272 gtkSet( gtkAddURLItem,0,(void*)item ); | |
273 } | |
274 fclose( f ); | |
275 } | |
276 free( cfg ); | |
277 | |
278 // -- reade file loader history | |
279 cfg=get_path( "gui.history" ); | |
280 if ( (f=fopen( cfg,"rt+" )) ) | |
281 { | |
282 int i = 0; | |
283 while ( !feof( f ) ) | |
284 { | |
285 char tmp[512]; | |
286 if ( gfgets( tmp,512,f ) == NULL ) continue; | |
287 fsHistory[i++]=gstrdup( tmp ); | |
288 } | |
289 fclose( f ); | |
290 } | |
291 free( cfg ); | |
292 | |
293 return 0; | |
294 } | |
295 | |
296 int cfg_write( void ) | |
297 { | |
298 char * cfg = get_path( "gui.conf" ); | |
299 FILE * f; | |
300 int i; | |
301 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
302 // -- save configuration |
23077 | 303 if ( (f=fopen( cfg,"wt+" )) ) |
304 { | |
305 for ( i=0;gui_opts[i].name;i++ ) | |
306 { | |
307 char* v = m_option_print(&gui_opts[i],gui_opts[i].p); | |
25711
25b40c769b06
Fix 100l: error check for m_option_print was unreachable
reimar
parents:
25710
diff
changeset
|
308 if(v == (char *)-1) { |
25b40c769b06
Fix 100l: error check for m_option_print was unreachable
reimar
parents:
25710
diff
changeset
|
309 mp_msg(MSGT_GPLAYER,MSGL_WARN,MSGTR_UnableToSaveOption, gui_opts[i].name); |
25b40c769b06
Fix 100l: error check for m_option_print was unreachable
reimar
parents:
25710
diff
changeset
|
310 v = NULL; |
25b40c769b06
Fix 100l: error check for m_option_print was unreachable
reimar
parents:
25710
diff
changeset
|
311 } |
23077 | 312 if(v) { |
313 fprintf( f,"%s = \"%s\"\n",gui_opts[i].name, v); | |
314 free(v); | |
25711
25b40c769b06
Fix 100l: error check for m_option_print was unreachable
reimar
parents:
25710
diff
changeset
|
315 } |
23077 | 316 } |
317 fclose( f ); | |
318 } | |
319 free( cfg ); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
320 |
23077 | 321 // -- save playlist |
322 cfg=get_path( "gui.pl" ); | |
323 if ( (f=fopen( cfg,"wt+" )) ) | |
324 { | |
325 plCurrent=plList; | |
326 while ( plCurrent ) | |
327 { | |
328 if ( plCurrent->path && plCurrent->name ) | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28051
diff
changeset
|
329 { |
23077 | 330 fprintf( f,"%s\n",plCurrent->path ); |
331 fprintf( f,"%s\n",plCurrent->name ); | |
332 } | |
333 plCurrent=plCurrent->next; | |
334 } | |
335 fclose( f ); | |
336 } | |
337 free( cfg ); | |
338 | |
339 // -- save URL's | |
340 cfg=get_path( "gui.url" ); | |
341 if ( (f=fopen( cfg,"wt+" )) ) | |
342 { | |
343 while ( URLList ) | |
344 { | |
345 if ( URLList->url ) fprintf( f,"%s\n",URLList->url ); | |
346 URLList=URLList->next; | |
347 } | |
348 fclose( f ); | |
349 } | |
350 free( cfg ); | |
351 | |
352 // -- save file loader history | |
353 cfg=get_path( "gui.history" ); | |
354 if ( (f=fopen( cfg,"wt+" )) ) | |
355 { | |
356 int i = 0; | |
357 // while ( fsHistory[i] != NULL ) | |
358 for ( i=0;i < 5; i++) | |
359 if( fsHistory[i] ) fprintf( f,"%s\n",fsHistory[i] ); | |
360 fclose( f ); | |
361 } | |
362 free( cfg ); | |
363 | |
364 return 0; | |
365 } |