www.pudn.com > Ftpwork > CmdParser.cpp


#include "CmdParser.h"


#include "stdio.h"
//##ModelId=3DB112D300FD
CmdParseResult* CmdParser::ParseCommand(String* pcmdstr)
{
	sscanf(pcmdstr->buffer(),"%s %s %s %s %*s",arg0,arg1,arg2,arg3);
	
	int count=0;
	int commandtype;
	String tempcmd(arg0);
	tempcmd.lowcase();
	
	if(tempcmd == cmdcd)
	{
			commandtype=CMD_CD;
			count = 1;			
	}
	
	else if(tempcmd == cmdmd)
	{
			commandtype=CMD_MD;
			count = 1;
	}
	else if(tempcmd == cmdlist)
	{
			commandtype=CMD_LIST;
			count = 0;
	}
	else if(tempcmd == cmdget)
	{
			commandtype=CMD_GET;
			count = 2;
	}
	else if(tempcmd == cmdput)
	{
			commandtype=CMD_PUT;
			count = 2;

	}
	else if(tempcmd == cmdhelp)
	{
			commandtype=CMD_HELP;
			count = 0;

	}
	else if(tempcmd == cmdquit)
	{
			commandtype=CMD_QUIT;

	}
	else if(tempcmd == cmdlocal)
	{
			commandtype=CMD_LOCAL;

	}
	else if(tempcmd == cmdreturn)
	{
			commandtype=CMD_RETURN;

	}
	else
			commandtype=CMD_ERROR;	
			
	resultobj.SetCmdType(commandtype);
	resultobj.SetCmdArgv(arg1,0);
	resultobj.SetCmdArgv(arg2,1);
	resultobj.SetCmdArgv(arg3,2);
	resultobj.SetCmdArgc(count);	
	return &resultobj;	
}

//##ModelId=3DB22796010D
CmdParser::CmdParser()
{
	cmdlist="ls";
	cmdcd="cd";
	cmdmd="md";
	cmdget="get";
	cmdput="put";
	cmdhelp="help";
	cmdquit="q";
	cmdlocal="local";
	cmdreturn="return";
	
	

}