// ClientDepotUser.cpp: interface and implementation of the ClientDepotUser class. // ///////////////////////////////////////////////////////////////////////////////// //this I/O class is designed to be used in conjunction with the commands "p4 depots" and "p4 depot -o" ONLY. #include "clientdepotuser.h" /* This function is the one that gets called by Perforce - by default, it handles the * "p4 depots" case, but if specflag is set it calls OutputSpec() instead. */ void ClientDepotUser::OutputInfo( char level, const_char *data ) { if (results > MAXRESULTS) return; //If we have >MAXRESULTS depots, don't add any more! if (specflag == TRUE) //Is this a depot spec we're looking at? If so, this flag should be set. { OutputSpec(data); //Assume that "p4 depot -o" was called and act accordingly. return; } /* If we've reached this point we should be looking at a line of output from "p4 depots". It should * look sort of like this: * Depot mydepot 1999/07/15 local subdir mydepot/... 'Created by samwise. ' * The only thing we care about is the depot name, which starts on the six character of the line, * and is followed by a space. */ StrBuf depot = StrBuf(); //We're going to hold the depot name in a StrBuf. char* ptr = data+6; //This pointer is now pointing at the first letter of the depot name. while (*ptr != ' ') //Until we hit a space: { depot.Append(ptr, 1); //Add this character to the StrBuf. ptr++; //and increment the pointer to the next character. } /* All done - the StrBuf now holds the name of the depot. */ depots.Append(depot); //Add it to the list. results++; //Increment this counter so we'll know if we exceed MAXRESULTS. } /* This function is pretty simple - it just dumps the spec into the "spec" StrBuf. * Comments aren't that important, so we omit those lines. */ void ClientDepotUser::OutputSpec( const_char *data) { char* ptr = data; while (*ptr == '#') { //This loop just skips over any lines beginning with '#'. while (*ptr != '\n') { ptr++; } ptr++; } /* After this point, the pointer is looking at the first relevant character.*/ spec.Append((const char*) ptr); //Poink. All done. } ClientDepotUser::ClientDepotUser() { results = 0; } ClientDepotUser::~ClientDepotUser() { }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#2 | 937 | Sam Stafford |
Renaming my guest directory to the more conventional sam_stafford. |
||
#1 | 936 | Sam Stafford |
Adding P4HL to the public depot. See relnotes.txt for installation instructions; all relevant files are under p4hl/dist. Source code is under p4hl/src in the form of a VC++ project. |