Google

logo top
Main Page   Widgets   Namespaces   Book  

Shell-related Utilities

Shell-like command line handling. More...

Compounds

class  ShellError
 Exception class for shell utility errors. More...


Functions

Glib::ArrayHandle<std::string> shell_parse_argv (const std::string& command_line)
 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).

std::string shell_quote (const std::string& unquoted_string)
 Quotes a string so that the shell (/bin/sh) will interpret the quoted string to mean unquoted_string.

std::string shell_unquote (const std::string& quoted_string)
 Unquotes a string as the shell (/bin/sh) would.


Detailed Description

Shell-like command line handling.


Function Documentation

Glib::ArrayHandle<std::string> shell_parse_argv ( const std::string&    command_line
 

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 you would get 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.

Parameters:
command_line Command line to parse.
Returns:
Array of args (The generic ArrayHandle will be implicitly converted to any STL compatible container type).
Exceptions:
Glib::ShellError 

std::string shell_quote ( const std::string&    unquoted_string
 

Quotes a string so that the shell (/bin/sh) will interpret the quoted string to mean unquoted_string.

If you pass a filename to the shell, for example, you should first quote it with this function. The quoting style used is undefined (single or double quotes may be used).

Parameters:
unquoted_string A literal string.
Returns:
A quoted string.

std::string 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 


Generated for gtkmm by Doxygen 1.3-rc1 © 1997-2001