]> git.sesse.net Git - vlc/commitdiff
stream_out: match exactly access/mux for warnings
authorFrancois Cartegnie <fcvlcdev@free.fr>
Tue, 9 Sep 2014 11:50:56 +0000 (13:50 +0200)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Tue, 9 Sep 2014 11:53:38 +0000 (13:53 +0200)
modules/stream_out/standard.c

index 1bdcf6af6fbbd0f21fdec581753733225aba81a5..03d7336b0c74a4bcbd44af8261995694cc22d6f5 100644 (file)
@@ -292,24 +292,33 @@ static int fixAccessMux( sout_stream_t *p_stream, char **ppsz_mux,
     return 0;
 }
 
+static bool exactMatch( const char *psz_target, const char *psz_string,
+                        size_t i_len )
+{
+    if ( strncmp( psz_target, psz_string, i_len ) )
+        return false;
+    else
+        return ( psz_target[i_len] < 'a' || psz_target[i_len] > 'z' );
+}
+
 static void checkAccessMux( sout_stream_t *p_stream, char *psz_access,
                             char *psz_mux )
 {
-    if( !strncmp( psz_access, "mmsh", 4 ) && strncmp( psz_mux, "asfh", 4 ) )
+    if( exactMatch( psz_access, "mmsh", 4 ) && !exactMatch( psz_mux, "asfh", 4 ) )
         msg_Err( p_stream, "mmsh output is only valid with asfh mux" );
-    else if( strncmp( psz_access, "file", 4 ) &&
-            ( !strncmp( psz_mux, "mov", 3 ) || !strncmp( psz_mux, "mp4", 3 ) ) )
+    else if( exactMatch( psz_access, "file", 4 ) &&
+             ( exactMatch( psz_mux, "mov", 3 ) || exactMatch( psz_mux, "mp4", 3 ) ) )
         msg_Err( p_stream, "mov and mp4 mux are only valid with file output" );
-    else if( !strncmp( psz_access, "udp", 3 ) )
+    else if( exactMatch( psz_access, "udp", 3 ) )
     {
-        if( !strncmp( psz_mux, "ffmpeg", 6 ) || !strncmp( psz_mux, "avformat", 8 ) )
+        if( exactMatch( psz_mux, "ffmpeg", 6 ) || exactMatch( psz_mux, "avformat", 8 ) )
         {   /* why would you use ffmpeg's ts muxer ? YOU DON'T LOVE VLC ??? */
             char *psz_ffmpeg_mux = var_CreateGetString( p_stream, "sout-avformat-mux" );
             if( !psz_ffmpeg_mux || strncmp( psz_ffmpeg_mux, "mpegts", 6 ) )
                 msg_Err( p_stream, "UDP output is only valid with TS mux" );
             free( psz_ffmpeg_mux );
         }
-        else if( strncmp( psz_mux, "ts", 2 ) )
+        else if( !exactMatch( psz_mux, "ts", 2 ) )
             msg_Err( p_stream, "UDP output is only valid with TS mux" );
     }
 }