X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_transtreamproxy;a=blobdiff_plain;f=src%2FeFilePumpThread.cpp;h=4cd7fa65d8a9b0344816edd31390fa6a6c5eedf1;hp=7659a4d32a1d6fda2f6deeb9ac470579c64e8278;hb=793f6307366bc810831a178a7cef335387f99faa;hpb=229a94a6507196a45823b8f0d7b03784e158d9b2 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; } //-------------------------------------------------------------------------------