- input_thread_t *p_input = (input_thread_t *)p_this;
- demux_sys_t *p_demux;
-
- char *psz_name;
-
- /* Set the demux function */
- p_input->pf_demux = Demux;
-
- /* Initialize access plug-in structures. */
- if( p_input->i_mtu == 0 )
- {
- /* Improve speed. */
- p_input->i_bufsize = INPUT_DEFAULT_BUFSIZE;
- }
-
- psz_name = config_GetPsz( p_input, "demuxdump-file" );
- if( !psz_name || !*psz_name )
- {
- psz_name = strdup( "stream-demux.dump" );
- }
-
- p_demux = malloc( sizeof( demux_sys_t ) );
- memset( p_demux, 0, sizeof( demux_sys_t ) );
-
- if( !( p_demux->p_file = fopen( psz_name, "wb" ) ) )
- {
- msg_Err( p_input,
- "cannot create `%s' for writing",
- psz_name );
- free( p_demux );
- return( -1 );
- }
+ demux_t *p_demux = (demux_t*)p_this;
+ demux_sys_t *p_sys;
+ const char *psz_mode;
+ vlc_value_t val;
+ vlc_bool_t b_append;
+
+ /* Accept only if forced */
+ if( !p_demux->b_force )
+ return VLC_EGENERIC;
+
+ var_Create( p_demux, "demuxdump-append", VLC_VAR_BOOL|VLC_VAR_DOINHERIT );
+ var_Get( p_demux, "demuxdump-append", &val );
+ b_append = val.b_bool;
+ if ( b_append )
+ psz_mode = "ab";