From 793f6307366bc810831a178a7cef335387f99faa Mon Sep 17 00:00:00 2001 From: kos Date: Thu, 31 Oct 2013 12:14:08 +0900 Subject: fixed to handle large files. --- src/eFilePumpThread.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/eFilePumpThread.cpp b/src/eFilePumpThread.cpp index 7659a4d..4cd7fa6 100644 --- a/src/eFilePumpThread.cpp +++ b/src/eFilePumpThread.cpp @@ -11,6 +11,7 @@ #include #include +#include #include "ePreDefine.h" #include "eFilePumpThread.h" @@ -36,7 +37,8 @@ void eFilePumpThread::Run() { int rc = 0; unsigned char buffer[BUFFER_SIZE]; - FILE* mediafilefd = fopen(mFileName.c_str(), "rb"); + int mediafilefd = open(mFileName.c_str(), O_RDONLY | O_LARGEFILE); + struct pollfd pollevt; pollevt.fd = mDeviceFd; @@ -48,15 +50,17 @@ void eFilePumpThread::Run() rc = poll((struct pollfd*)&pollevt, 1, 1000); if (pollevt.revents & POLLOUT) { - rc = fread(buffer, 1, BUFFER_SIZE, mediafilefd); - if(!rc) break; + rc = read(mediafilefd, buffer, BUFFER_SIZE); + if(rc < 0) { + break; + } #ifdef DEBUG_LOG LOG("%d byte write.", rc); #endif rc = write(mDeviceFd, buffer, rc); } } - fclose(mediafilefd); + close(mediafilefd); mTermFlag = false; } //------------------------------------------------------------------------------- -- cgit