Shell-related Utilities — shell-like command line handling.
glib.lib
#include <glib.h>
enum GShellError;
#define G_SHELL_ERROR
gboolean g_shell_parse_argv (const gchar *command_line, gint *argcp, gchar ***argvp, GError **error);
gchar* g_shell_quote (const gchar *unquoted_string);
gchar* g_shell_unquote (const gchar *quoted_string, GError **error);
typedef enum
{
/* mismatched or otherwise mangled quoting */
G_SHELL_ERROR_BAD_QUOTING,
/* string to be parsed was empty */
G_SHELL_ERROR_EMPTY_STRING,
G_SHELL_ERROR_FAILED
} GShellError;
Error codes returned by shell functions.
G_SHELL_ERROR_BAD_QUOTING |
Mismatched or otherwise mangled quoting. |
G_SHELL_ERROR_EMPTY_STRING |
String to be parsed was empty. |
G_SHELL_ERROR_FAILED |
Some other error. |
#define G_SHELL_ERROR g_shell_error_quark ()
Error domain for shell functions. Errors in this domain will be from the GShellError enumeration. See GError for information on error domains.
gboolean g_shell_parse_argv (const gchar *command_line, gint *argcp, gchar ***argvp, GError **error);
Parses a command line into an argument vector, in much the same way the shell
would, but without many of the expansions the shell would perform (variable
expansion, globs, operators, filename expansion, etc. are not supported). The
results are defined to be the same as those obtained from a UNIX98 /bin/sh,
as long as the input contains none of the unsupported shell expansions. If the
input does contain such expansions, they are passed through literally. Possible
errors are those from the G_SHELL_ERROR
domain. Free the returned vector with g_strfreev()
.
gchar* g_shell_quote (const gchar *unquoted_string);
Quotes a string so that the shell (/bin/sh) will interpret the quoted string to
mean unquoted_string
. If a
filename is passed to the shell, for example, first quote it with this
function. The return value must be freed with g_free()
.
The quoting style used is undefined (single or double quotes may be used).
unquoted_string : |
a literal string |
Returns : | 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
g_shell_quote()
. If it fails, it returns NULL
and sets the error. The
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 G_SHELL_ERROR domain.
Shell quoting rules are a bit strange. Single quotes preserve the literal string exactly. escape sequences are not allowed; not even \' - if include a ' in the quoted text, do something like 'foo'\''bar'. Double quotes allow $, `, ", \, and newline to be escaped with backslash. Otherwise double quotes preserve things literally.
quoted_string : |
shell-quoted string |
error : |
error return location or NULL |
Returns : | an unquoted string |
For additional information or queries on this
page send
feedback
© 2005-2007 Nokia |