void prependEnvPath(string const & name, string const & prefix) { vector<string> env_var = getEnvPath(name); typedef boost::char_separator<char> Separator; typedef boost::tokenizer<Separator> Tokenizer; Separator const separator(string(1, os::path_separator()).c_str()); // Prepend each new element to the list, removing identical elements // that occur later in the list. Tokenizer const tokens(prefix, separator); vector<string> reversed_tokens(tokens.begin(), tokens.end()); typedef vector<string>::const_reverse_iterator token_iterator; token_iterator it = reversed_tokens.rbegin(); token_iterator const end = reversed_tokens.rend(); for (; it != end; ++it) { vector<string>::iterator remove_it = remove(env_var.begin(), env_var.end(), *it); env_var.erase(remove_it, env_var.end()); env_var.insert(env_var.begin(), *it); } setEnvPath(name, env_var); }
/* --------------------------------------------------------------------- * funct : Set Command handler * args : Scratchpad memory * ret : None * * Detail: 'set' type command handler * * --------------------------------------------------------------------*/ void setHandler(char *cmdOrig, char *readString, char *cmd[]) { //set command must have at least one argument if(cmd[1] == NULL || strlen(cmd[1])<1) { printf("Invalid usage of set command\n"); return; } else if(strstr(cmd[1],"path") != NULL && (strlen(cmd[1]) == strlen("path"))) { setEnvPath(cmdOrig, readString, cmd); } else if(strstr(cmd[1],"verbose") != NULL && (strlen(cmd[1]) == strlen("verbose"))) { setVerboseEnv(cmdOrig, readString, cmd); } else { printf("Invalid usage of set command\n"); } }