diff -r 73b88125830c -r b8d1455fddc0 testconns/statdesktop/desktop/source/stat2perl/src/commandline.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/testconns/statdesktop/desktop/source/stat2perl/src/commandline.cpp Mon Oct 04 02:58:21 2010 +0300 @@ -0,0 +1,161 @@ +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + + + + +#include "stdafx.h" +#include "CommandLine.h" + +CommandLine::CommandLine() +: iCount(0), pCmdLine(NULL) +{ + char *pTmpCmdLine = GetCommandLine(); + + // see if we have one + if (pTmpCmdLine && *pTmpCmdLine) + { + char *pStart, *ptr; + unsigned int len = strlen(pTmpCmdLine); + + // save a copy + pCmdLine = new char[len + 1]; + strcpy(pCmdLine, pTmpCmdLine); + + // get a working copy + pTmpCmdLine = new char[len + 1]; + strcpy(pTmpCmdLine, pCmdLine); + ptr = pTmpCmdLine; + + // reset the array + for (int i=0;i<256;i++) + pArguments[i] = NULL; + + // limit of 256 arguments + for (i=0;i<256;i++) + { + pStart = ptr; + + // step to start of argument + while (*pStart && *pStart == ' ') + pStart++; + + // step to end of argument + ptr = pStart; + while (*ptr && *ptr != ' ') + { + // if path is enclosed in quotes, we skip any spaces that might exist within them + // NOTE: if a quote exists inside the path, we will lose the first part of the argument! + if (*ptr == '"') + { + ptr++; + pStart = ptr; // don't want first quote in the returned argument + while (*ptr && *ptr != '"') + ptr++; + + if (*ptr == '"') + { + *ptr = (char)0; // don't want last quote in the returned argument + } + } + ptr++; + } + + // not at the end so separate arguments + if (*ptr) + { + (*ptr) = (char)0; + ptr++; + } + + if (*pStart) + { + // store argument + pArguments[i] = new char[strlen(pStart) + 1]; + strcpy(pArguments[i], pStart); + iCount++; + } + else + break; + } + + delete [] pTmpCmdLine; + } +} + + +// return whole command line less the first arg (app name) +char * CommandLine::GetArgumentString() +{ + if (pCmdLine && *pCmdLine) + return pCmdLine; + + return NULL; +} + + +// return an argument match +bool CommandLine::FindArgument(const char *pArg) +{ + bool valid = false; + + for (unsigned int i=0;i