- eString str(cmd?cmd:"");
-
- while( str.length() && str[0] == ' ' ) // kill spaces at beginning
- str = str.mid(1);
-
- while( str.length() && str[str.length()-1] == ' ' ) // kill spaces at the end
- str = str.left( str.length() - 1 );
-
- if (!str.length())
- return;
-
- unsigned int idx=0;
- eString path = str.left( (idx = str.find(' ')) != eString::npos ? idx : str.length() );
+ std::string str(cmd.length()?cmd:"");
+
+ // kill spaces at beginning
+ unsigned int pos = str.find_first_not_of(' ');
+ if (pos != std::string::npos && pos)
+ str = str.substr(pos);
+
+ // kill spaces at the end
+ pos = str.find_last_not_of(' ');
+ if (pos != std::string::npos && (pos+1) < str.length())
+ str = str.erase(pos+1);
+
+ unsigned int slen=str.length();
+ if (!slen)
+ return -2;
+
+ std::map<char,char> brackets;
+ brackets.insert(std::pair<char,char>('\'','\''));
+ brackets.insert(std::pair<char,char>('"','"'));
+ brackets.insert(std::pair<char,char>('`','`'));
+ brackets.insert(std::pair<char,char>('(',')'));
+ brackets.insert(std::pair<char,char>('{','}'));
+ brackets.insert(std::pair<char,char>('[',']'));
+ brackets.insert(std::pair<char,char>('<','>'));
+
+ unsigned int idx=str.find(' ');
+ std::string path = str.substr(0, idx != std::string::npos ? idx : slen );