2012/1/25 Rémi Denis-Courmont <span dir="ltr"><<a href="mailto:git@videolan.org">git@videolan.org</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
vlc | branch: master | Rémi Denis-Courmont <<a href="mailto:remi@remlab.net">remi@remlab.net</a>> | Wed Jan 25 18:30:36 2012 +0200| [21145a5977bd146890017d0eccfdb4d317e8e7ea] | committer: Rémi Denis-Courmont<br>
<br>
TS: fix ts-dump error handling, remove a useless variable<br>
<br>
> <a href="http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=21145a5977bd146890017d0eccfdb4d317e8e7ea" target="_blank">http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=21145a5977bd146890017d0eccfdb4d317e8e7ea</a><br>

---<br>
<br>
 modules/demux/ts.c |   64 ++++++++++++++++++++++++---------------------------<br>
 1 files changed, 30 insertions(+), 34 deletions(-)<br>
<br>
diff --git a/modules/demux/ts.c b/modules/demux/ts.c<br>
index 89602b4..bc771d7 100644<br>
--- a/modules/demux/ts.c<br>
+++ b/modules/demux/ts.c<br>
@@ -392,7 +392,6 @@ struct demux_sys_t<br>
     char        *psz_file;  /* file to dump data in */<br>
     FILE        *p_file;    /* filehandle */<br>
     uint64_t    i_write;    /* bytes written */<br>
-    bool        b_file_out; /* dump mode enabled */<br>
<br>
     /* */<br>
     bool        b_start_record;<br>
@@ -590,12 +589,9 @@ static int Open( vlc_object_t *p_this )<br>
     p_sys->i_write = 0;<br>
     p_sys->buffer = NULL;<br>
     p_sys->p_file = NULL;<br>
-    p_sys->b_file_out = false;<br>
-    p_sys->psz_file = var_CreateGetString( p_demux, "ts-dump-file" );<br>
-    if( *p_sys->psz_file != '\0' )<br>
+    p_sys->psz_file = var_InheritString( p_demux, "ts-dump-file" );<br>
+    if( p_sys->psz_file != NULL )<br>
     {<br>
-        p_sys->b_file_out = true;<br>
-<br>
         b_append = var_CreateGetBool( p_demux, "ts-dump-append" );<br>
         if ( b_append )<br>
             psz_mode = "ab";<br>
@@ -607,31 +603,33 @@ static int Open( vlc_object_t *p_this )<br>
             msg_Info( p_demux, "dumping raw stream to standard output" );<br>
             p_sys->p_file = stdout;<br>
         }<br>
-        else if( ( p_sys->p_file = vlc_fopen( p_sys->psz_file, psz_mode ) ) == NULL )<br></blockquote><div><br></div><div>Is the #include <vlc_fs.h>        /* vlc_fopen for file-dump mode */ needed anymore?</div>
<div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
-        {<br>
-            msg_Err( p_demux, "cannot create `%s' for writing", p_sys->psz_file );<br>
-            p_sys->b_file_out = false;<br>
-        }<br>
-<br>
-        if( p_sys->b_file_out )<br>
+        else<br>
         {<br>
-            /* Determine how many packets to read. */<br>
-            int bufsize = var_CreateGetInteger( p_demux, "ts-dump-size" );<br>
-            p_sys->i_ts_read = (int) (bufsize / p_sys->i_packet_size);<br>
-            if( p_sys->i_ts_read <= 0 )<br>
+            p_sys->p_file = vlc_fopen( p_sys->psz_file, psz_mode );<br>
+            if( p_sys->p_file == NULL )<br>
             {<br>
-                p_sys->i_ts_read = 1500 / p_sys->i_packet_size;<br>
+                msg_Err( p_demux, "cannot write to file `%s': %m",<br>
+                         p_sys->psz_file );<br>
+                free( p_sys->psz_file );<br>
+                vlc_mutex_destroy( &p_sys->csa_lock );<br>
+                free( p_sys );<br>
+                return VLC_EGENERIC;<br>
             }<br>
-            p_sys->buffer = xmalloc( p_sys->i_packet_size * p_sys->i_ts_read );<br>
-            msg_Info( p_demux, "%s raw stream to file `%s' reading packets %d",<br>
-                      b_append ? "appending" : "dumping", p_sys->psz_file,<br>
-                      p_sys->i_ts_read );<br>
         }<br>
-    }<br>
<br>
-    /* Fill p_demux field */<br>
-    if( p_sys->b_file_out )<br>
+        /* Determine how many packets to read. */<br>
+        int bufsize = var_CreateGetInteger( p_demux, "ts-dump-size" );<br>
+        p_sys->i_ts_read = (int) (bufsize / p_sys->i_packet_size);<br>
+        if( p_sys->i_ts_read <= 0 )<br>
+        {<br>
+            p_sys->i_ts_read = 1500 / p_sys->i_packet_size;<br>
+        }<br>
+        p_sys->buffer = xmalloc( p_sys->i_packet_size * p_sys->i_ts_read );<br>
+        msg_Info( p_demux, "%s raw stream to file `%s' reading packets %d",<br>
+                  b_append ? "appending" : "dumping", p_sys->psz_file,<br>
+                  p_sys->i_ts_read );<br>
         p_demux->pf_demux = DemuxFile;<br>
+    }<br>
     else<br>
         p_demux->pf_demux = Demux;<br>
     p_demux->pf_control = Control;<br>
@@ -709,7 +707,7 @@ static int Open( vlc_object_t *p_this )<br>
     p_sys->b_es_id_pid = var_CreateGetBool( p_demux, "ts-es-id-pid" );<br>
<br>
     char* psz_string = var_CreateGetString( p_demux, "ts-out" );<br>
-    if( psz_string && *psz_string && !p_sys->b_file_out )<br>
+    if( psz_string && *psz_string && !p_sys->p_file )<br>
     {<br>
         char *psz = strchr( psz_string, ':' );<br>
         int   i_port = 0;<br>
@@ -822,14 +820,15 @@ static int Open( vlc_object_t *p_this )<br>
         p_sys->b_force_seek_per_percent = true;<br>
     }<br>
<br>
-    while( !p_sys->b_file_out && p_sys->i_pmt_es <= 0 &&<br>
-           vlc_object_alive( p_demux ) )<br>
+    if( p_sys->p_file != NULL )<br>
+        return VLC_SUCCESS;<br>
+<br>
+    while( p_sys->i_pmt_es <= 0 && vlc_object_alive( p_demux ) )<br>
     {<br>
         if( p_demux->pf_demux( p_demux ) != 1 )<br>
             break;<br>
     }<br>
<br>
-<br>
     return VLC_SUCCESS;<br>
 }<br>
<br>
@@ -900,15 +899,12 @@ static void Close( vlc_object_t *p_this )<br>
     free( p_sys->programs_list.p_values );<br>
<br>
     /* If in dump mode, then close the file */<br>
-    if( p_sys->b_file_out )<br>
+    if( p_sys->p_file != NULL )<br>
     {<br>
         msg_Info( p_demux ,"closing %s (%"PRId64" KiB dumped)",<br>
                   p_sys->psz_file, p_sys->i_write / 1024 );<br>
-<br>
         if( p_sys->p_file != stdout )<br>
-        {<br>
             fclose( p_sys->p_file );<br>
-        }<br>
     }<br>
     /* When streaming, close the port */<br>
     if( p_sys->fd > -1 )<br>
@@ -1178,7 +1174,7 @@ static int Control( demux_t *p_demux, int i_query, va_list args )<br>
     int64_t *pi64;<br>
     int i_int;<br>
<br>
-    if( p_sys->b_file_out )<br>
+    if( p_sys->p_file != NULL )<br>
         return demux_vaControlHelper( p_demux->s, 0, -1, 0, 1, i_query, args );<br>
<br>
     switch( i_query )<br>
<br>
_______________________________________________<br>
vlc-commits mailing list<br>
<a href="mailto:vlc-commits@videolan.org">vlc-commits@videolan.org</a><br>
<a href="http://mailman.videolan.org/listinfo/vlc-commits" target="_blank">http://mailman.videolan.org/listinfo/vlc-commits</a><br>
</blockquote></div><br>