ClientUser::InputData( StrBuf *, Error * )

Provide data from stdin to p4 < command> -i.

Virtual?

Yes

 

Class

ClientUser

 

Arguments

StrBuf *strbuf

the StrBuf which is to hold the data

 

Error *e

an Error object

Returns

void

 

Notes

Any command that edits a specification can take the -i option; this method supplies the data for the specification. In the default implementation, the data comes from stdin, but an alternate implementation can accept the data from any source. This method is the only way to send a specification to the server without first putting it into a local file.

Example

The default implementation is called during a normal invocation of p4 client -i.

p4 client -i < clispec.txt

In this example, clispec.txt is fed to the command as stdin. Its contents are appended to the StrBuf that is given as an argument to InputData(), and this StrBuf is given to the server after InputData() returns.

To read the data from a different source, create a subclass of ClientUser with an alternate implementation of InputData().

For example, suppose that you want to be able to edit a client specification without creating a local temp file. You’ve already written a function which generates the new client specification and stores it as a StrBuf variable in your ClientUser subclass. To send your modified client specification to the server when running p4 client -i with your modified ClientUser, implement InputData() to read data from that StrBuf.

The example below assumes that the subclass MyClientUser has a variable called mySpec that already contains the valid client specification before running p4 client -i.

void MyClientUser::InputData( StrBuf *buf, Error *e )
{
    buf->Set( mySpec );
}