Example #1
0
/* 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;
}
Example #2
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;
	}
}