int commandHandler(void* data) { CannonBall* ball = (CannonBall*)data; std::string command; std::string args[10]; std::cout << "Welcome to Cannonball Marksman. For a list of commands, type help" << std::endl; std::cout << "You control the cannonball by typing in commands here.\n"; std::cout << "Format of commands are <command> <arg1> <arg2> ... <argn>\n"; while (args[0].compare("exit") != 0 && args[0].compare("quit") != 0) { std::getline(std::cin, command); int index = 0; for (unsigned int i = 0; i < command.size() && index < 10; i++) { args[index].clear(); while (command[i] != ' ' && command[i] != '\0') { args[index].push_back(command[i++]); } ++index; } SDL_LockMutex(gBallLock); cmdHelp(args, ball); SDL_UnlockMutex(gBallLock); } exitCond = true; return 0; }
void cliInterpret(const char *line) { char cmd[64]; const char *tail; const char *psep; int icmd; psep = strchr(line, ' '); cmd[0] = 0; if (psep == NULL) { strncat(cmd, line, sizeof(cmd) - 1); tail = NULL; } else { strncat(cmd, line, psep - line); for (tail = psep; *tail == ' '; ++tail); if (*tail == 0) tail = NULL; } icmd = cmdFind(cmd); if (icmd < 0) { printf("Unknown command - try help\n"); return; } else { //printf("Command idx: %d\n", icmd); if (!cmdset[icmd].handler(tail)) { cmdHelp(cmd); } } }
int main(int argc, char* argv[]) { int listenfd,connfd,nread; SAIN servaddr, cliaddr; socklen_t clilen; MSG databuf; listenfd = Socket(AF_INET, SOCK_STREAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(PORT); servaddr.sin_addr.s_addr = inet_addr(IP); Bind(listenfd, (SA*)&servaddr, sizeof(servaddr)); Listen(listenfd, 10); //忽略SIGCHILD,避免僵尸 signal(SIGCHLD, clearZ); clilen = sizeof(cliaddr); while(1) { printf("parent: Waiting....\n"); connfd = Accept(listenfd, (SA*) &cliaddr, &clilen); printf("Connection from [%s:%d] \n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port)); while(1) { if((nread = Recv(connfd, &databuf, sizeof(databuf), 0)) >0) { printf("recv: sockfd = %d, sig = %d.\n", databuf.sockfd, databuf.sig); int recvsig = (*databuf).sig; switch (recvsig){ case LIST: cmdList(MSG* databuf, int connfd); break; case DLOAD: cmdDownload(); break; case ULOAD: cmdUpload(); break; case HELP: cmdHelp(); break; case QUIT: cmdQuit(); break; } } } sleep(1); } close(connfd); close(listenfd); exit(0); }
void cmdQuestion(char *buf) { int v; if( get_arg(buf) < 1) { cmdHelp(""); }else{ v = portAddress(arg_ptr[0]); if(v) printf("%s=0x%x\n",arg_ptr[0],v); } }
static int doBatchCmd (int argc, char *argv[]) { int cmdRet = 0, myIndex; if ((myIndex = adminCmdIndex (argv[optind - 1], cmdList)) == -1) { fprintf (stderr, _i18n_msg_get (ls_catd, NL_SETN, 2554, "Invalid command <%s>. Try help\n"), /* catgets 2554 */ argv[optind - 1]); return -1; } switch (myIndex) { case BADMIN_MBDRESTART: cmdRet = breconfig (argc, argv, MBD_RESTART); break; case BADMIN_RECONFIG: cmdRet = breconfig (argc, argv, MBD_RECONFIG); break; case BADMIN_CKCONFIG: cmdRet = breconfig (argc, argv, MBD_CKCONFIG); break; case BADMIN_QOPEN: case BADMIN_QCLOSE: case BADMIN_QACT: case BADMIN_QINACT: cmdRet = bqc (argc, argv, opCodeList[myIndex]); break; case BADMIN_HOPEN: case BADMIN_HCLOSE: case BADMIN_HREBOOT: case BADMIN_HSHUT: cmdRet = bhc (argc, argv, opCodeList[myIndex]); break; case BADMIN_HSTARTUP: startup (argc, argv, myIndex); break; case BADMIN_QHIST: case BADMIN_HHIST: case BADMIN_MBDHIST: case BADMIN_HIST: cmdRet = sysHist (argc, argv, opCodeList[myIndex]); break; case BADMIN_MBDDEBUG: case BADMIN_MBDTIME: case BADMIN_SBDDEBUG: case BADMIN_SBDTIME: cmdRet = badminDebug (argc, argv, opCodeList[myIndex]); break; case BADMIN_HELP: case BADMIN_QES: cmdHelp (argc, argv, cmdList, _i18n_msgArray_get (ls_catd, NL_SETN, cmdInfo_ID, cmdInfo), cmdSyntax); break; case BADMIN_QUIT: exit (0); default: fprintf (stderr, I18N_FUNC_S_ERROR, "adminCmdIndex()"); exit (-1); } if (cmdRet == -2) oneCmdUsage (myIndex, cmdList, cmdSyntax); fflush (stderr); return (cmdRet); }
QString Commands::execute() { if (strDataList.size() == 0) return QString::null; QString strCmd = strDataList.at(0).toLower(); if ((strCmd == "amsg") || (strCmd == "all")) return cmdAmsg(); else if (strCmd == "away") return cmdAway(); else if (strCmd == "busy") return cmdBusy(); else if (strCmd == "clear") return cmdClear(); else if (strCmd == "friend") return cmdFriend(); else if (strCmd == "help" || (Settings::instance()->get("language") == "pl" && strCmd == "pomoc")) return cmdHelp(); else if (strCmd == "ignore") return cmdIgnore(); else if ((strCmd == "join") || (strCmd == "j")) return cmdJoin(); else if ((strCmd == "logout") || (strCmd == "quit") || (strCmd == "q")) return cmdQuit(); else if ((strCmd == "mp3") || (strCmd == "winamp")) return cmdMp3(); else if (strCmd == "offmsg") return cmdOffmsg(); else if ((strCmd == "priv") || (strCmd == "query")) return cmdPriv(); else if ((strCmd == "raw") || (strCmd == "quote")) return cmdRaw(); else if ((strCmd == "whereis") || (strCmd == "whois")) return cmdWhereis(); if ((strChan != DEBUG_WINDOW) && (strChan != STATUS_WINDOW)) { if (strCmd == "ban") return cmdBan(); else if (strCmd == "banip") return cmdBanip(); else if ((strCmd == "cycle") || (strCmd == "hop")) return cmdCycle(); else if (strCmd == "invite") return cmdInvite(); else if (strCmd == "kban") return cmdKBan(); else if (strCmd == "kbanip") return cmdKBanip(); else if ((strCmd == "kick") || (strCmd == "k")) return cmdKick(); else if (strCmd == "me") return cmdMe(); else if ((strCmd == "moder") || (strCmd == "moderator")) return cmdModer(); else if (strCmd == "op") return cmdOp(); else if ((strCmd == "part") || (strCmd == "p")) return cmdPart(); else if (strCmd == "sop") return cmdSop(); else if (strCmd == "topic") return cmdTopic(); else if (strCmd == "vip") return cmdVip(); } return strData; }
static int doLsCmd (int argc, char *argv[]) { int cmdRet = 0, cc, myIndex; if ((myIndex = adminCmdIndex(argv[optind-1], cmdList)) == -1) { fprintf(stderr, "Invalid command <%s>. Try help\n", argv[optind - 1]); return -1; } switch (myIndex) { case LSADM_CKCONFIG : if ((argc == optind + 1) && strcmp(argv[optind], "-v") == 0) cc = checkConf(1, 1); else if (argc == optind) { cc = checkConf(0, 1); if (cc == -1 || cc == -2) if (getConfirm("Do you want to see detailed messages? [y/n] ")); cc = checkConf(1, 1); } else cmdRet = -2; if (cmdRet == 0 && cc != 0) cmdRet = -1; break; case LSADM_RECONFIG : case LSADM_LIMREBOOT : case LSADM_LIMSHUTDOWN : cmdRet = limCtrl(argc, argv, opCodeList[myIndex]); break; case LSADM_LIMSTARTUP : cmdRet = startup(argc, argv, myIndex); break; case LSADM_LIMLOCK : cmdRet = limLock(argc, argv); break; case LSADM_LIMUNLOCK : cmdRet = limUnlock(argc, argv); break; case LSADM_RESREBOOT : case LSADM_RESSHUTDOWN : case LSADM_RESLOGON : case LSADM_RESLOGOFF : cmdRet = resCtrl(argc, argv, opCodeList[myIndex]); break; case LSADM_LIMDEBUG: case LSADM_LIMTIME: case LSADM_RESDEBUG: case LSADM_RESTIME: cmdRet = lsadminDebug(argc, argv, opCodeList[myIndex]); break; case LSADM_RESSTARTUP : cmdRet = startup(argc, argv, myIndex); break; case LSADM_HELP : case LSADM_QES : cmdHelp(argc, argv, cmdList, cmdInfo, cmdSyntax); break; case LSADM_QUIT : exit(0); default : fprintf(stderr, "adminCmdIndex: Error"); exit(-1); } if (cmdRet == -2) oneCmdUsage(myIndex, cmdList, cmdSyntax); fflush(stderr); return (cmdRet); }