changeset 17050:cd540846d052

Add support to get the list of files from a file containing one filename per line. Patch from devik (devik .at. cdi .dot. cz).
author albeu
date Sat, 26 Nov 2005 17:10:17 +0000
parents 4b04284b7a92
children c2fc23703ef9
files libmpdemux/mf.c
diffstat 1 files changed, 30 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/mf.c	Sat Nov 26 16:01:43 2005 +0000
+++ b/libmpdemux/mf.c	Sat Nov 26 17:10:17 2005 +0000
@@ -40,9 +40,38 @@
 
  mf=calloc( 1,sizeof( mf_t ) );
 
+ if( filename[0] == '@' )
+  { 
+   FILE *lst_f=fopen(filename + 1,"r");
+   if ( lst_f ) 
+    {
+     fname=malloc( 255 );
+     while ( fgets( fname,255,lst_f ) ) 
+      {
+       /* remove spaces from end of fname */
+       char *t=fname + strlen( fname ) - 1;
+       while ( t > fname && isspace( *t ) ) *(t--)=0;
+       if ( stat( fname,&fs ) ) 
+        {
+         mp_msg( MSGT_STREAM,MSGL_V,"[mf] file not found: '%s'\n",fname );
+        }
+        else
+        {
+         mf->names=realloc( mf->names,( mf->nr_of_files + 1 ) * sizeof( char* ) );
+         mf->names[mf->nr_of_files]=strdup( fname );
+         mf->nr_of_files++;
+        }
+      }
+      fclose( lst_f );
+	     
+      mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] number of files: %d\n",mf->nr_of_files );
+      goto exit_mf;
+    }
+    mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] %s is not indirect filelist\n",filename+1 );
+  }
+
  if( strchr( filename,',') )
   { 
-   fname=malloc( 255 ); 
    mp_msg( MSGT_STREAM,MSGL_INFO,"[mf] filelist: %s\n",filename );
  
    while ( ( fname=strsep( &filename,"," ) ) )