The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование, языки" / Оглавление документа

Shell-related Utilities

Shell-related Utilities — shell-подобная обработка командной строки.

Краткое описание


#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);

Описание

Детали

enum GShellError

typedef enum
{
  /* несоответствие или иначе искажённое квотирование */
  G_SHELL_ERROR_BAD_QUOTING,
  /* анализируемая строка пустая */
  G_SHELL_ERROR_EMPTY_STRING,
  G_SHELL_ERROR_FAILED
} GShellError;

Коды ошибок возвращаемые функциями оболочки (shell functions).

G_SHELL_ERROR_BAD_QUOTING Несоответствие или искажённое квотирование.
G_SHELL_ERROR_EMPTY_STRING Анализируемая строка пустая.
G_SHELL_ERROR_FAILED Некоторые другие ошибки.

G_SHELL_ERROR

#define G_SHELL_ERROR g_shell_error_quark ()

Домен ошибки для функций оболочки. Ошибки в этом домене из перечисления GShellError. Смотрите GError для информации о доменах ошибки.


g_shell_parse_argv ()

gboolean    g_shell_parse_argv              (const gchar *command_line,
                                             gint *argcp,
                                             gchar ***argvp,
                                             GError **error);

Анализирует командную строку в одномерном массиве параметров, аналогичным с shell способом, но без многих расширений выполняемых shell (переменные, globs, операторы, расширение файлового имени, и т.д. не поддерживаются). Результат определяется в том же самом стиля как вы могли бы получить из UNIX98 /bin/sh, пока ввод не содержит не поддерживаемых shell расширений. Если ввод содержит такие расширения, они помещаются буквально. Возможные ошибки происходят из G_SHELL_ERROR домена. Освобождается одномерный массив с помощью g_strfreev().

command_line : анализируемая командная строка
argcp : расположение возвращаемого количества аргументов
argvp : расположение возвращаемого массива аргументов
error : расположение возвращаемой ошибки
Возвращает : TRUE при успешном выполнении, FALSE если установлена ошибка

g_shell_quote ()

gchar*      g_shell_quote                   (const gchar *unquoted_string);

Квотирует строку так чтобы оболочка (/bin/sh) интерпретировала её как unquoted_string. Если вы поместите имя файла в оболочку, например, вы должны сначала квотировать его с помощью этой функции. Возвращаемое значение должно освобождаться с помощью g_free(). Используемый стиль квотирования не определён (могут использоваться или одинарные или двойные кавычки).

unquoted_string : строка литерал
Возвращает : квотированная строка

g_shell_unquote ()

gchar*      g_shell_unquote                 (const gchar *quoted_string,
                                             GError **error);

Снимает квотирование строки как если бы это сделала оболочка (/bin/sh). Обрабатывает кавычки только; если строка содержит file globs, арифметические операторы, переменные, обратные кавычки, переназначения, или другие специальные shell особенности, результат будет отличаться от реального результата который дала бы shell (переменные, обратные кавычки, и т.д. будут помещены как литералы вместо интерпретации). Эта функция гарантировано завершается успешно если применяется результат g_shell_quote(). Если она завершилась неудачей, то возвращает NULL и устанавливает ошибку. quoted_string не должен фактически содержать кавычки или escaped текст; g_shell_unquote() просто проходит через строку и снимает квотирование (unquotes/unescapes) как если бы это сделала shell-оболочка. Обрабатываются и двойные и одинарные кавычки, а так же escapes включая завершающий символ новой строки. Возвращаемое значение должно освобождаться с помощью g_free(). Возможные ошибки находятся в домене G_SHELL_ERROR.

Shell правила квотирования немного странные. Единственные кавычки сохраняют литеральную строку в точности. escape-последовательность не допускается; даже \' - если вы хотите иметь ' в квотированном тексте, вы можете сделать примерно так 'foo'\''bar'. Двойные кавычки позволяют $, `, ", \, и символ новой строки выделять обратным слэшем. Иначе двойные кавычки сохраняют всё буквально.

quoted_string : shell-quoted строка
error : расположение для возвращаемой ошибки или NULL
Возвращает : unquoted строка



Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2021 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру