[x264-devel] commit: Fix SIGPIPEs caused by is_regular_file checks (Anton Mitrofanov )
git at videolan.org
git at videolan.org
Fri Jun 25 09:58:05 CEST 2010
x264 | branch: master | Anton Mitrofanov <BugMaster at narod.ru> | Sat Jun 19 01:44:56 2010 +0400| [69e9d85c292cb9daa96664657352bf6c65af5825] | committer: Jason Garrett-Glaser
Fix SIGPIPEs caused by is_regular_file checks
Check to see if input file is a pipe without opening it.
> http://git.videolan.org/gitweb.cgi/x264.git/?a=commit;h=69e9d85c292cb9daa96664657352bf6c65af5825
---
common/osdep.h | 10 +++++++++-
x264.c | 1 +
2 files changed, 10 insertions(+), 1 deletions(-)
diff --git a/common/osdep.h b/common/osdep.h
index b1b357c..b3a8cd6 100644
--- a/common/osdep.h
+++ b/common/osdep.h
@@ -290,7 +290,15 @@ static inline uint8_t x264_is_regular_file( FILE *filehandle )
{
struct stat file_stat;
if( fstat( fileno( filehandle ), &file_stat ) )
- return 0;
+ return -1;
+ return S_ISREG( file_stat.st_mode );
+}
+
+static inline uint8_t x264_is_regular_file_path( const char *filename )
+{
+ struct stat file_stat;
+ if( stat( filename, &file_stat ) )
+ return -1;
return S_ISREG( file_stat.st_mode );
}
diff --git a/x264.c b/x264.c
index a124083..09bad61 100644
--- a/x264.c
+++ b/x264.c
@@ -806,6 +806,7 @@ static int select_input( const char *demuxer, char *used_demuxer, char *filename
int b_auto = !strcasecmp( demuxer, "auto" );
if( !b_regular && b_auto )
ext = "yuv";
+ b_regular = b_regular && x264_is_regular_file_path( filename );
if( b_regular )
{
FILE *f = fopen( filename, "r" );
More information about the x264-devel
mailing list