#include "machdefs.h" #include #include #include #include #include #include "sophyainit.h" #include "timing.h" #include "commander.h" class TCmdExecutor : public CmdExecutor { public: TCmdExecutor(Commander& cmd); virtual ~TCmdExecutor() { } virtual int Execute(string& keyw,vector& args, string& toks); }; TCmdExecutor::TCmdExecutor(Commander& cmd) { string hgrp = "TCmdExecutor"; string usage,kw; kw = "ls"; usage = "ls: Execute /usr/bin/ls \n"; cmd.RegisterCommand(kw, usage, this, hgrp); kw = "mv"; usage = "mv: Execute /usr/bin/mv \n"; cmd.RegisterCommand(kw, usage, this, hgrp); kw = "cp"; usage = "cp: Execute /usr/bin/cp \n"; cmd.RegisterCommand(kw, usage, this, hgrp); } int TCmdExecutor::Execute(string& kw, vector& args, string& toks) { if ((kw!="ls")&&(kw!="mv")&&(kw!="cp")) return 99; string cmd; if (kw == "ls") cmd = "/usr/bin/ls " ; else if (kw == "mv") cmd = "/usr/bin/mv " ; else if (kw == "cp") cmd = "/usr/bin/cp " ; else cmd = "/usr/bin/echo " ; for(int kk=0; kkD " << endl; int line = 0; bool fg = true; char buff[1024]; char * ret; while (fg) { printf("%d-%s ", line+1, cmd.GetCurrentPrompt().c_str()); fflush(stdout); buff[0] = '\0'; ret = fgets(buff, 1024, stdin); buff[1023] = '\0'; if (ret && ( (buff[0] != '\0') && (buff[0] != '\n') && (buff[0] != '\r')) ) { buff[strlen(buff)-1] = '\0'; string cline = buff; cmd.Interpret(cline); line++; } else fg = false; } cout << " \n Total " << line << " lines from stdin -> Commander " << endl; if (line > 0) return(0); else return(1); }