Remove character limit in WriteText().
- vfprintf can be used directly here, removing the need for the interim buffer. This change allows us to remove the artificial character limit. - Fix bugs with _text. It wasn't actually getting set earlier, and the check was wrong. - Remove asserts that should use real error checks. TEST=DataLog and VoECallReport (through voe_auto_test), the only users of WriteText(). Review URL: http://webrtc-codereview.appspot.com/323001 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1156 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -22,7 +22,6 @@ class FileWrapper : public InStream, public OutStream
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum { kMaxFileNameSize = 1024};
|
enum { kMaxFileNameSize = 1024};
|
||||||
enum { kFileMaxTextMessageSize = 1024};
|
|
||||||
|
|
||||||
// Factory method. Constructor disabled.
|
// Factory method. Constructor disabled.
|
||||||
static FileWrapper* Create();
|
static FileWrapper* Create();
|
||||||
@ -52,15 +51,14 @@ public:
|
|||||||
|
|
||||||
// Write text to the opened file. The written text can contain plain text
|
// Write text to the opened file. The written text can contain plain text
|
||||||
// and text with type specifiers in the same way as sprintf works.
|
// and text with type specifiers in the same way as sprintf works.
|
||||||
virtual WebRtc_Word32 WriteText(const WebRtc_Word8* text, ...) = 0;
|
virtual WebRtc_Word32 WriteText(const char* format, ...) = 0;
|
||||||
|
|
||||||
// Reads len number of bytes from buf to file.
|
// Reads len number of bytes from buf to file.
|
||||||
virtual int Read(void* buf, int len) = 0;
|
virtual int Read(void* buf, int len) = 0;
|
||||||
|
|
||||||
// Writes len number of bytes to buf from file. Please note that the actual
|
// Writes len number of bytes to buf from file. The actual writing to file
|
||||||
// writing to file may happen some time later. Call flush to force a write
|
// may happen some time later. Call flush to force a write to take effect.
|
||||||
// to take affect
|
virtual bool Write(const void *buf, int len) = 0;
|
||||||
virtual bool Write(const void *buf,int len) = 0;
|
|
||||||
|
|
||||||
// Rewinds the file to the start. Only available when OpenFile() has been
|
// Rewinds the file to the start. Only available when OpenFile() has been
|
||||||
// called with loop argument set to true. Or readOnly argument has been set
|
// called with loop argument set to true. Or readOnly argument has been set
|
||||||
|
@ -10,13 +10,13 @@
|
|||||||
|
|
||||||
#include "file_impl.h"
|
#include "file_impl.h"
|
||||||
|
|
||||||
#include <cassert>
|
#include <assert.h>
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#else
|
#else
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
@ -125,6 +125,7 @@ WebRtc_Word32 FileWrapperImpl::OpenFile(const WebRtc_Word8 *fileNameUTF8,
|
|||||||
}
|
}
|
||||||
|
|
||||||
_readOnly = readOnly;
|
_readOnly = readOnly;
|
||||||
|
_text = text;
|
||||||
|
|
||||||
FILE *tmpId = NULL;
|
FILE *tmpId = NULL;
|
||||||
#if defined _WIN32
|
#if defined _WIN32
|
||||||
@ -174,7 +175,7 @@ WebRtc_Word32 FileWrapperImpl::OpenFile(const WebRtc_Word8 *fileNameUTF8,
|
|||||||
|
|
||||||
if (tmpId != NULL)
|
if (tmpId != NULL)
|
||||||
{
|
{
|
||||||
// + 1 comes fro copying the NULL termination charachter too
|
// +1 comes from copying the NULL termination character.
|
||||||
memcpy(_fileNameUTF8, fileNameUTF8, length + 1);
|
memcpy(_fileNameUTF8, fileNameUTF8, length + 1);
|
||||||
if (_id != NULL)
|
if (_id != NULL)
|
||||||
{
|
{
|
||||||
@ -196,7 +197,7 @@ int FileWrapperImpl::Read(void *buf, int len)
|
|||||||
}
|
}
|
||||||
if (_id != NULL)
|
if (_id != NULL)
|
||||||
{
|
{
|
||||||
WebRtc_Word32 res = static_cast<WebRtc_Word32>(fread(buf, 1, len, _id));
|
int res = static_cast<int>(fread(buf, 1, len, _id));
|
||||||
if (res != len)
|
if (res != len)
|
||||||
{
|
{
|
||||||
if(!_looping)
|
if(!_looping)
|
||||||
@ -209,41 +210,43 @@ int FileWrapperImpl::Read(void *buf, int len)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
WebRtc_Word32 FileWrapperImpl::WriteText(const WebRtc_Word8* text, ...)
|
WebRtc_Word32 FileWrapperImpl::WriteText(const char* format, ...)
|
||||||
{
|
{
|
||||||
assert(!_readOnly);
|
if (_readOnly)
|
||||||
assert(!_text);
|
return -1;
|
||||||
|
|
||||||
|
if (!_text)
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (_id == NULL)
|
if (_id == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (format == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
va_list args;
|
||||||
|
va_start(args, format);
|
||||||
|
int num_bytes = vfprintf(_id, format, args);
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
if (num_bytes > 0)
|
||||||
{
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CloseFile();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
char tempBuff[kFileMaxTextMessageSize];
|
|
||||||
if (text)
|
|
||||||
{
|
|
||||||
va_list args;
|
|
||||||
va_start(args, text);
|
|
||||||
#ifdef _WIN32
|
|
||||||
_vsnprintf(tempBuff, kFileMaxTextMessageSize-1, text, args);
|
|
||||||
#else
|
|
||||||
vsnprintf(tempBuff, kFileMaxTextMessageSize-1, text, args);
|
|
||||||
#endif
|
|
||||||
va_end(args);
|
|
||||||
WebRtc_Word32 nBytes;
|
|
||||||
nBytes = fprintf(_id, "%s", tempBuff);
|
|
||||||
if (nBytes > 0)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
CloseFile();
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FileWrapperImpl::Write(const void* buf, int len)
|
bool FileWrapperImpl::Write(const void* buf, int len)
|
||||||
{
|
{
|
||||||
assert(!_readOnly);
|
if (!_readOnly)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (_id != NULL)
|
if (_id != NULL)
|
||||||
{
|
{
|
||||||
// Check if it's time to stop writing.
|
// Check if it's time to stop writing.
|
||||||
|
@ -40,7 +40,7 @@ public:
|
|||||||
virtual bool Write(const void *buf, int len);
|
virtual bool Write(const void *buf, int len);
|
||||||
virtual int Rewind();
|
virtual int Rewind();
|
||||||
|
|
||||||
virtual WebRtc_Word32 WriteText(const WebRtc_Word8* text, ...);
|
virtual WebRtc_Word32 WriteText(const char* format, ...);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FILE* _id;
|
FILE* _id;
|
||||||
|
Reference in New Issue
Block a user