/* main () ** ** Scan the command line arguments, then enter into the command loop. */ int main (int argc, char ** argv) { checkHostCompatibility (); checkArithmetic (); processCommandLine (argc, argv); /* If the "write" option (-w) was given, write a file to the DISK. */ if (commandOptionW) { writeCommand (); } else if (commandOptionI) { initializeCommand (); } else if (commandOptionL) { listCommand (); } else if (commandOptionC) { createCommand (); } else if (commandOptionR) { removeCommand (); } else if (commandOptionA) { addCommand (); } else if (commandOptionE) { extractCommand (); } else { fatalError ("No commands given; Use -h for help display"); return -1; } return 0; }
int main(int argc, char* argv[]) { // verify input u8 command = 0; std::string target = ""; //parse commands if (0 == strcmp(argv[0], "unsnag")) { if (argc < 2) { std::cerr << "ERROR: you didn't provide a server. "; std::cerr << "Type snag -h for help" << std::endl; return 1; } command = unsnag; target = argv[1]; } else if (argc == 1) { command = list; } else if (argc == 2) { if (0 == strcmp(argv[1], "-l")) { command = list; } else if (0 == strcmp(argv[1], "-h")) { command = help; } else if (0 == strcmp(argv[1], "-u") || 0 == strcmp(argv[1], "-a") || 0 == strcmp(argv[1], "-d")) { std::cerr << "ERROR: you didn't provide a server. "; std::cerr << "Type snag -h for help" << std::endl; return 1; } else if (argv[1][0] == '-') { std::cerr << "ERROR: unknown command '" << argv[1] << "', "; std::cerr << "Type snag -h for help" << std::endl; return 1; } else { command = snag; target = argv[1]; } } else if (argc > 2) { if (0 == strcmp(argv[1], "-l")) { command = list; std::cerr << "TIP: list command takes no arguments." << std::endl; } else if (0 == strcmp(argv[1], "-h")) { command = help; std::cerr << "TIP: help command takes no arguments." << std::endl; } else if (0 == strcmp(argv[1], "-u")) { command = unsnag; target = argv[2]; } else if (0 == strcmp(argv[1], "-a")) { command = add; target = argv[2]; } else if (0 == strcmp(argv[1], "-d")) { command = del; target = argv[2]; } else { std::cerr << "ERROR: invalid command '" << argv[1] << "', "; std::cerr << "Type snag -h for help" << std::endl; return 1; } } // perform commands if (command == help) { helpCommand(); return 0; } Socket clientSocket = connectToServer(); if (clientSocket == -1) { return 1; } char clientNameBuffer[20]; getlogin_r(clientNameBuffer, 20); std::string clientName(clientNameBuffer); switch(command) { case list: listCommand(clientSocket); return 0; break; case snag: doCommand("s", clientSocket, target, clientName); break; case unsnag: doCommand("u", clientSocket, target, clientName); break; case add: doCommand("a", clientSocket, target, clientName); break; case del: doCommand("d", clientSocket, target, clientName); break; } // get server reply std::cout << std::endl; char buffer[1024]; memset(buffer, 0, 1024); int readLen = read(clientSocket, buffer, 2048); if (readLen < 0) { std::cerr << "ERROR reading from socket" << std::endl; return 1; } std::cout << buffer << std::endl; std::cout << std::endl; } // end main
int commonInterface::runCommand(string command) { char commandStr[MAX_COMMAND_LEN]; memset(commandStr,0, MAX_COMMAND_LEN); sscanf(command.c_str(), "%s", commandStr); if(strlen(commandStr)<=0) return ERROR; string upperCaseCommand = commandStr; for(int i=0;i<upperCaseCommand.length();i++) { upperCaseCommand[i] = toupper(upperCaseCommand[i]); } if(strcmp(upperCaseCommand.c_str(), "CREATOR") == 0) { mWindow->displayCreator(); } else if(strcmp(upperCaseCommand.c_str(), "HELP") == 0) { mWindow->displayHelpMenu(); } else if(strcmp(upperCaseCommand.c_str(), "MYIP") == 0) { mWindow->displayMyIP(mMyIP); } else if(strcmp(upperCaseCommand.c_str(), "MYPORT") == 0) { mWindow->displayMyPort(mPort); } else if(strcmp(upperCaseCommand.c_str(), "REGISTER") == 0) { if(mMode == SERVER) { cout<<"\n Register command not available in server mode"<<endl; return true; } registerCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "CONNECT") == 0) { connectCommand(command); return 1; } else if(strcmp(upperCaseCommand.c_str(), "LIST") == 0) { listCommand(); } else if(strcmp(upperCaseCommand.c_str(), "TERMINATE") == 0) { terminateCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "EXIT") == 0) { exitCommand(); return EXIT_PROGRAM; } else if(strcmp(upperCaseCommand.c_str(), "UPLOAD") == 0) { uploadCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "DOWNLOAD") == 0) { downloadCommand(command); } else if(strcmp(upperCaseCommand.c_str(), "STATISTICS") == 0) { statCommand(); } else { //Wrong command enter cout<<"\n Command not found. Please note the commands are case sensetive\n"; return ERROR; } }