diff --git a/modules/access/linsys/linsys_sdi.c b/modules/access/linsys/linsys_sdi.c index d2f918483319e29a10db9acc22ef636f3ec53808..c479ad94ff514476fbaa6faea4b18bdf8012c5b4 100644 --- a/modules/access/linsys/linsys_sdi.c +++ b/modules/access/linsys/linsys_sdi.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -1660,47 +1661,35 @@ static int HandleSDBuffer( demux_t *p_demux, uint8_t *p_buffer, static int ReadULSysfs( const char *psz_fmt, unsigned int i_link ) { - char psz_file[MAXLEN], psz_data[MAXLEN]; - char *psz_tmp; - int i_fd; - ssize_t i_ret; + char psz_file[MAXLEN]; unsigned int i_data; - snprintf( psz_file, sizeof(psz_file) - 1, psz_fmt, i_link ); + snprintf( psz_file, sizeof(psz_file), psz_fmt, i_link ); - if ( (i_fd = vlc_open( psz_file, O_RDONLY )) < 0 ) - return i_fd; - - i_ret = read( i_fd, psz_data, sizeof(psz_data) ); - close( i_fd ); - - if ( i_ret < 0 ) - return i_ret; - - i_data = strtoul( psz_data, &psz_tmp, 0 ); - if ( *psz_tmp != '\n' ) + FILE *stream = vlc_fopen( psz_file, "rt" ); + if( stream == NULL ) return -1; - return i_data; + int ret = fscanf( stream, "%u", &i_data ); + fclose( stream ); + + return (ret == 1 && i_data <= INT_MAX) ? (int)i_data : -1; } -static ssize_t WriteULSysfs( const char *psz_fmt, unsigned int i_link, - unsigned int i_buf ) +static int WriteULSysfs( const char *psz_fmt, unsigned int i_link, + unsigned int i_buf ) { - char psz_file[MAXLEN], psz_data[MAXLEN]; - int i_fd; - ssize_t i_ret; - - snprintf( psz_file, sizeof(psz_file) -1, psz_fmt, i_link ); + char psz_file[MAXLEN]; - snprintf( psz_data, sizeof(psz_data) -1, "%u\n", i_buf ); + snprintf( psz_file, sizeof(psz_file), psz_fmt, i_link ); - if ( (i_fd = vlc_open( psz_file, O_WRONLY )) < 0 ) - return i_fd; + FILE *stream = vlc_fopen( psz_file, "wt" ); + if( stream == NULL ) + return -1; - i_ret = write( i_fd, psz_data, strlen(psz_data) + 1 ); - close( i_fd ); - return i_ret; + int ret = fprintf( stream, "%u\n", i_buf ); + fclose( stream ); + return ret; } static int InitCapture( demux_t *p_demux )