/*
* Copyright 2011 Perforce Software. All rights reserved.
*
* This file is part of Perforce - the FAST SCM System.
*/
# include <stdhdrs.h>
# include <error.h>
# include <errorlog.h>
# include <strbuf.h>
# include <filesys.h>
# include "filestrbuf.h"
FileStrPtr::FileStrPtr( StrPtr *s )
{
ptr = s;
offset = 0;
}
void
FileStrPtr::Open( FileOpenMode mode, Error *e )
{
if( mode == FOM_WRITE )
e->Set( E_FATAL, "can't write to a FileStrPtr!" );
offset = 0;
}
int
FileStrPtr::Read( char *buf, int len, Error * )
{
if( len < 1 )
return 0;
int avail = ptr->Length() - offset;
// Already read everything?
if( avail < 1 )
return 0;
// Asked to read more than we have?
if( avail < len )
{
memcpy( buf, ptr->Value() + offset, avail );
offset = ptr->Length();
return avail;
}
// Asked to read less than we have?
memcpy( buf, ptr->Value() + offset, len );
offset += len;
return len;
}
offL_t
FileStrPtr::GetSize()
{
return ptr->Length();
}
# |
Change |
User |
Description |
Committed |
|
#1
|
21040 |
rlranft |
Update my branches from latest |
|
|
//guest/perforce_software/p4/2015-2/sys/filestrbuf.cc |
#1
|
18917 |
Liz Lam |
Submitting 15.2 source code. |
|
|