Logo Search packages:      
Sourcecode: ardour version File versions  Download package

std::string Glib::shell_unquote ( const std::string &  quoted_string  ) 

Unquotes a string as the shell (/bin/sh) would. Only handles quotes; if a string contains file globs, arithmetic operators, variables, backticks, redirections, or other special-to-the-shell features, the result will be different from the result a real shell would produce (the variables, backticks, etc. will be passed through literally instead of being expanded). This function is guaranteed to succeed if applied to the result of shell_quote(). If it fails, it throws a Glib::ShellError exception. The quoted_string need not actually contain quoted or escaped text; shell_unquote() simply goes through the string and unquotes/unescapes anything that the shell would. Both single and double quotes are handled, as are escapes including escaped newlines.

Shell quoting rules are a bit strange. Single quotes preserve the literal string exactly. Escape sequences are not allowed; not even \' -- if you want a ' in the quoted text, you have to do something like 'foo'\''bar'. Double quotes allow $, `, ", \, and newline to be escaped with backslash. Otherwise double quotes preserve things literally.

Parameters:
quoted_string Shell-quoted string.
Returns:
An unquoted string.
Exceptions:
Glib::ShellError 

Definition at line 54 of file shell.cc.

{
  GError* error = 0;
  char *const buf = g_shell_unquote(quoted_string.c_str(), &error);

  if(error)
    Glib::Error::throw_exception(error);

  return std::string(ScopedPtr<char>(buf).get());
}


Generated by  Doxygen 1.6.0   Back to index