Xfce Foundation Classes
Main Page | Index | Namespace List | Alphabetical List | Class List | File List

# shell.hh File Reference

A C++ interface for the GLib shell functions. More...

`#include <xfc/utfstring.hh>`
`#include <glib/gshell.h>`
`#include <vector>`

## Namespaces

- namespace Xfc
- namespace Xfc::G

## Shell Methods

- String shell_quote (const String &unquoted_string)
    Quotes a string so that the shell (/bin/sh) will interpret the quoted string to mean unquoted_string.
- String shell_unquote (const String &quoted_string, G::Error *error=0)
    Unquotes a string as the shell (/bin/sh) would.
- bool shell_parse_argv (const String &command_line, std::vector< String > &args, G::Error *error=0)
    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, and the like are not supported).

## Detailed Description

A C++ interface for the GLib shell functions.

Provides A C++ interface for the GLib shell-like commandline handling functions.

## Function Documentation

bool shell_parse_argv | ( | const String & | command_line,
|  | std::vector< String > & | args,
|  | G::Error * | error = `0`
| ) |

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, and the like are not supported).

Parameters:

  | command_line | A command line to parse.
  | args | A reference to a vector of String to hold the argument strings.
  | error | The return location for a G::Error, or null.

Returns:
  true on success, false if error was set.

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. Possible errors are those from the G_SHELL_ERROR domain.

String shell_quote | ( | const String & | unquoted_string | ) |

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

Parameters:

  | unquoted_string | A literal string

Returns:
  The quoted 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).

String shell_unquote | ( | const String & | quoted_string,
|  | G::Error * | error = `0`
| ) |

Unquotes a string as the shell (/bin/sh) would.

Parameters:

  | quoted_string | A shell-quoted string.
  | error | The return location for a G::Error, or null.

Returns:
  An unquoted string.

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 method is guaranteed to succeed if applied to the result of shell_quote(). If it fails, it returns a null String and sets the error. 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. 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 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.

Xfce Foundation Classes

Copyright © 2004-2005 The XFC Development Team | XFC 4.3