Unquotes a string as the shell (/bin/sh) would.
This function 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
g_shell_quote(). If it fails, it returns
NULL and sets the error.
quoted_string need not actually contain quoted or escaped text;
g_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.
The return value must be freed with g_free().
Possible errors are in the
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
'foo'\''bar'. Double quotes allow
newline to be escaped with backslash. Otherwise double quotes
preserve things literally.
The data is owned by the caller of the function. The value is a file system path, using the OS encoding.
The return location for a recoverable error.
The argument can be
If the return location is not
NULL, then you must initialize it to a
The argument will left initialized to
NULLby the function if there are no errors.
In case of error, the argument will be set to a newly allocated
GError; the caller will take ownership of the data, and be responsible for freeing it.