filestrbuf.cc #1

  • //
  • guest/
  • dannyz_snps/
  • p4/
  • 2016-1/
  • sys/
  • filestrbuf.cc
  • View
  • Commits
  • Open Download .zip Download (996 B)
/*
 * 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 21443 dannyz_snps "Forking branch 2016-1 of perforce_software-p4 to dannyz_snps-p4."
//guest/perforce_software/p4/2016-1/sys/filestrbuf.cc
#1 19472 Liz Lam Initial add of the 2016.1 p4/p4api source code.