Commandline option parser

Commandline option parser — Анализатор опций командной строки

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

#include <glib.h> enum GOptionError; #define G_OPTION_ERROR gboolean (*GOptionArgFunc) (const gchar *option_name, const gchar *value, gpointer data, GError **error); GOptionContext; GOptionContext* g_option_context_new (const gchar *parameter_string); void g_option_context_set_summary (GOptionContext *context, const gchar *summary); const gchar* g_option_context_get_summary (GOptionContext *context); void g_option_context_set_description (GOptionContext *context, const gchar *description); const gchar* g_option_context_get_description (GOptionContext *context); const gchar* (*GTranslateFunc) (const gchar *str, gpointer data); void g_option_context_set_translate_func (GOptionContext *context, GTranslateFunc func, gpointer data, GDestroyNotify destroy_notify); void g_option_context_set_translation_domain (GOptionContext *context, const gchar *domain); void g_option_context_free (GOptionContext *context); gboolean g_option_context_parse (GOptionContext *context, gint *argc, gchar ***argv, GError **error); void g_option_context_set_help_enabled (GOptionContext *context, gboolean help_enabled); gboolean g_option_context_get_help_enabled (GOptionContext *context); void g_option_context_set_ignore_unknown_options (GOptionContext *context, gboolean ignore_unknown); gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context); enum GOptionArg; enum GOptionFlags; #define G_OPTION_REMAINING GOptionEntry; void g_option_context_add_main_entries (GOptionContext *context, const GOptionEntry *entries, const gchar *translation_domain); GOptionGroup; void g_option_context_add_group (GOptionContext *context, GOptionGroup *group); void g_option_context_set_main_group (GOptionContext *context, GOptionGroup *group); GOptionGroup* g_option_context_get_main_group (GOptionContext *context); GOptionGroup* g_option_group_new (const gchar *name, const gchar *description, const gchar *help_description, gpointer user_data, GDestroyNotify destroy); void g_option_group_free (GOptionGroup *group); void g_option_group_add_entries (GOptionGroup *group, const GOptionEntry *entries); gboolean (*GOptionParseFunc) (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error); void g_option_group_set_parse_hooks (GOptionGroup *group, GOptionParseFunc pre_parse_func, GOptionParseFunc post_parse_func); void (*GOptionErrorFunc) (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error); void g_option_group_set_error_hook (GOptionGroup *group, GOptionErrorFunc error_func); void g_option_group_set_translate_func (GOptionGroup *group, GTranslateFunc func, gpointer data, GDestroyNotify destroy_notify); void g_option_group_set_translation_domain (GOptionGroup *group, const gchar *domain);

Описание

Анализатор командной строки GOption предназначен для более простой замены библиотеки popt. Он поддерживает короткие и длинные опции командной строки, как показано в следующем примере:

testtreemodel -r 1 --max-size 20 --rand --display=:1.0 -vb -- file1 file2

Пример демонстрирует множество особенностей синтаксического анализатора командной строки GOption

  • Опции могут быть одиночной буквой с предустановленным одиночным тире. Множество коротких опций могут быть сгруппированы за одним тире.

  • Длинные опцией предустанавливаются двумя последовательными тире.

  • Опции могут иметь дополнительный аргумент, который может быть числом, строкой или именем файла. Для длинных опций, дополнительный аргумент может быть присоединён с помощью знака равенства сразу после названия опции.

  • Неопциональные аргументы возвращаются как сброшенные аргументы.

  • Аргумент состоящий исключительно из двух тире предотвращает дальнейший анализ, любые аргументы (даже которые начинаются с тире) возвращаются как сброшенные аргументы.

Другая важная особенность GOption в автоматической генерации приятно оформленного вывода справки. Если это явно не выключено с помощью функции g_option_context_set_help_enabled(), GOption распознаёт --help, -?, --help-all и --help-groupname опции (где groupname это имя GOptionGroup) и пишет текст, подобный показанному в следующем примере, в stdout.

Usage: testtreemodel [OPTION...] - test tree model performance Help Options: -?, --help Показать опции справки --help-all Показать все опции справки --help-gtk Показать опции GTK+ Application Options: -r, --repeats=N Среднее число повторений N -m, --max-size=M Проверить до 2^M элементов --display=DISPLAY X display для использования -v, --verbose Подробности -b, --beep Сигнал при выполнении --rand Произвольные данные

Группы опций GOption находятся в GOptionGroups, которые облегчают включение опций из многочисленных источников. Они позволяют приложениям собирать группы опций из используемых библиотек, добавляя их к своему GOptionContext, и анализируя все опции одним вызовом g_option_context_parse(). Смотрите gtk_get_option_group() для примера.

Если задекларированная опция является печатной строкой или именем файла, GOption позаботится о преобразовании в правильную кодировку; строки возвращаются в кодировке UTF-8, имена файлов в кодировке имён файлов GLib.

Вот полный пример настроек GOption для анализа командной строки приведенной в примере выше и выполнение вывода примера справки.

static gint repeats = 2; static gint max_size = 8; static gboolean verbose = FALSE; static gboolean beep = FALSE; static gboolean rand = FALSE; static GOptionEntry entries[] = { { "repeats", 'r', 0, G_OPTION_ARG_INT, &repeats, "Среднее число повторений N", "N" }, { "max-size", 'm', 0, G_OPTION_ARG_INT, &max_size, "Проверка до 2^M элементов", "M" }, { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "Подробности", NULL }, { "beep", 'b', 0, G_OPTION_ARG_NONE, &beep, "Сигнал при выполнениии", NULL }, { "rand", 0, 0, G_OPTION_ARG_NONE, &rand, "Произовольные данные", NULL }, { NULL } }; int main (int argc, char *argv[]) { GError *error = NULL; GOptionContext *context; context = g_option_context_new ("- test tree model performance"); g_option_context_add_main_entries (context, entries, GETTEXT_PACKAGE); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, &error); /* ... */ }

Детали

enum GOptionError

typedef enum { G_OPTION_ERROR_UNKNOWN_OPTION, G_OPTION_ERROR_BAD_VALUE, G_OPTION_ERROR_FAILED } GOptionError;

Коды ошибок возвращаемые анализатором опций.

G_OPTION_ERROR_UNKNOWN_OPTION Опция неизвестна анализатору. Эта ошибка будет сообщена только если анализатор небыл проинструктирован игнорировать неизвестные опции, смотрите g_option_context_set_ignore_unknown_options().
G_OPTION_ERROR_BAD_VALUE Значение небыло проанализировано.
G_OPTION_ERROR_FAILED Функция GOptionArgFunc завершилась неудачно.

G_OPTION_ERROR

#define G_OPTION_ERROR (g_option_error_quark ())

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


GOptionArgFunc ()

gboolean (*GOptionArgFunc) (const gchar *option_name, const gchar *value, gpointer data, GError **error);

Тип функции для анализа как callback-функция для опции G_OPTION_ARG_CALLBACK.

option_name : Имя анализируемой опции. Это может быть любая буква с предустановленным одиночным тире (для коротких имён) или два последовательных тире перед длинным именем.
value : Значение для анализа.
data : Пользовательские данные добавляемые в GOptionGroup содержащую опции, которая была создана с помощью g_option_group_new()
error : Расположение для возвращаемых ошибок. Коды ошибок G_OPTION_ERROR_FAILED предназначены для использования в GOptionArgFunc.
Возвращает : TRUE если опция была полностью проанализирована, FALSE если произошла ошибка, в этом случае error должна быть установлена с помощью g_set_error()

GOptionContext

typedef struct _GOptionContext GOptionContext;

Структура GOptionContext определяет какие опции применяются анализатором опций командной строки. Структура содержит только закрытые поля и не должна использоваться непосредственно.


g_option_context_new ()

GOptionContext* g_option_context_new (const gchar *parameter_string);

Создаёт новый опциональный контекст.

parameter_string может служить для множества целей. Он может служить для добавления описания сброшенных аргументов, которые не проанализированы GOptionContext, обычно что-то вроде "FILES" или "FILE1 FILE2...". Если вы используете G_OPTION_REMAINING для сбора сброшенных параметров, GLib обработает это автоматически используя arg_description соответсвующий GOptionEntry в суммарном использовании.

Другое назначение может дать короткое описание функциональности программы, например " - frob strings", которое отобразится в той же строке где и "использование". Для длинных описаний функциональности программы, которые должны отображаться как параграф ниже линии описывающей использование программы, используйте g_option_context_set_summary().

Помните что parameter_string переводится (смотрите g_option_context_set_translate_func()).

parameter_string : строка которая отображается в первой линии вывода --help, после короткого описания использования programname [OPTION...]
Возвращает : вновь созданная GOptionContext, которая должна быть освобождена с помощью g_option_context_free() после использования.

Начиная с версии 2.6


g_option_context_set_summary ()

void g_option_context_set_summary (GOptionContext *context, const gchar *summary);

Добавляет строку в отображаемый вывод --help перед списком опций. Обычно это короткое описание функциональности программы.

Помните что короткое описание переводится (смотрите g_option_context_set_translate_func()).

context : GOptionContext
summary : строка для отображения в выводе --help перед списком опций, или NULL

Начиная с версии 2.12


g_option_context_get_summary ()

const gchar* g_option_context_get_summary (GOptionContext *context);

Возвращает короткое описание. Смотрите g_option_context_set_summary().

context : GOptionContext
Возвращает : короткое описание

Начиная с версии 2.12


g_option_context_set_description ()

void g_option_context_set_description (GOptionContext *context, const gchar *description);

Добавляет строку для отображения в выводе --help после списка опций. Этот текст часто включает адрес для сообщения об ошибках.

Помните что краткое описание переводится (смотрите g_option_context_set_translate_func()).

context : GOptionContext
description : строка для отображения в выводе --help после списка опций, или NULL

Начиная с версии 2.12


g_option_context_get_description ()

const gchar* g_option_context_get_description (GOptionContext *context);

Возвращает описание. Смотрите g_option_context_set_description().

context : GOptionContext
Возвращает : описание

Начиная с версии 2.12


GTranslateFunc ()

const gchar* (*GTranslateFunc) (const gchar *str, gpointer data);

Тип функции которая используется для перевода видимых пользователем строк, для вывода --help.

str : непереведённая строка
data : пользовательские данные определяемые при установке функции, например g_option_group_set_translate_func()
Возвращает : переведённую строку для текущей локализации. Возвращаемой строкой владеет GLib и она не должна освобождаться.

g_option_context_set_translate_func ()

void g_option_context_set_translate_func (GOptionContext *context, GTranslateFunc func, gpointer data, GDestroyNotify destroy_notify);

Устанавливает функцию которая используется для перевода содержимого строк видимых пользователем, для вывода --help. Если func равен NULL, строки не переводятся.

Помните что группы опций имеют собственные функции перевода, эта функция затрагивает только parameter_string (смотрите g_option_context_nex()), краткое описание (смотрите g_option_context_set_summary()) и описание (смотрите g_option_context_set_description()).

Если вы используете gettext(), вам нужно только установить область перевода, смотрите g_context_group_set_translation_domain().

context : GOptionContext
func : GTranslateFunc, или NULL
data : пользовательские данные помещаемые в func, или NULL
destroy_notify : функция которая вызывается для освобождения data, или NULL

Начиная с версии 2.12


g_option_context_set_translation_domain ()

void g_option_context_set_translation_domain (GOptionContext *context, const gchar *domain);

Удобная функция использующая gettext() для перевода видимых пользователем строк.

context : GOptionContext
domain : используемая область

Начиная с версии 2.12


g_option_context_free ()

void g_option_context_free (GOptionContext *context);

Освобождает контекст и все добавленные в него группы.

context : GOptionContext

Начиная с версии 2.6


g_option_context_parse ()

gboolean g_option_context_parse (GOptionContext *context, gint *argc, gchar ***argv, GError **error);

Анализирует аргументы командной строки, распознавая опции которые были добавлены в context. Побочный эффект вызова этой функции в том, что будет вызвана g_set_prgname().

Если анализ полностью выполнен, любые анализируемые аргументы будут удалены из массива, а argc и argv соответственно обновятся. Опция '--' удаляется из argv нет не анализируемых опций перед ней и после неё, или некоторые опции после неё начинаются с '-'. В этом случае происходит ошибка, argc и argv остаются неизменёнными.

Если включена автоматическая поддержка --help (смотрите g_option_context_set_help_enabled()), а массив argv содержит одну из распознаваемых опций справки, эта функция выполнит вывод справки на stdout и вызовет exit (0).

context : GOptionContext
argc : указатель на номер аргумента командной строки.
argv : указатель на массив аргументов командной строки.
error : расположение для возвращаемой ошибки
Возвращает : TRUE если анализ полностью выполнен, FALSE если произошла ошибка

Начиная с версии 2.6


g_option_context_set_help_enabled ()

void g_option_context_set_help_enabled (GOptionContext *context, gboolean help_enabled);

Включает или выключает автоматическую генерацию вывода --help. По умолчанию, g_option_context_parse() распознаёт --help, -?, --help-all и --help-groupname и создаёт подходящий вывод на stdout.

context : GOptionContext
help_enabled : TRUE для включения --help, FALSE для отключения

Начиная с версии 2.6


g_option_context_get_help_enabled ()

gboolean g_option_context_get_help_enabled (GOptionContext *context);

Определяет включена ли автоматическая генерация --help для context. Смотрите g_option_context_set_help_enabled().

context : GOptionContext
Возвращает : TRUE если автоматическая генерация справки включена.

Начиная с версии 2.6


g_option_context_set_ignore_unknown_options ()

void g_option_context_set_ignore_unknown_options (GOptionContext *context, gboolean ignore_unknown);

Устанавливает игнорировать неизвестные опции или нет. Если опция игнорируется, то она сбрасывается в массив argv после анализа. По умолчанию, g_option_context_parse() воспринимает неизвестные опции как ошибки.

Эти настройки не затрагивают не опциональные аргументы (то есть аргументы которые начинаются не с тире). Но помните что GOption не может надёжно определить принадлежит ли не-опция к предыдущей неизвестной опции.

context : GOptionContext
ignore_unknown : TRUE для игнорирования неизвестных опций, FALSE для производства ошибки при встрече неизвестной опции

Начиная с версии 2.6


g_option_context_get_ignore_unknown_options ()

gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context);

Определяет игнорируются неизвестные опции или нет. Смотрите g_option_context_set_ignore_unknown_options().

context : GOptionContext
Возвращает : TRUE если неизвестные опции игнорируются.

Начиная с версии 2.6


enum GOptionArg

typedef enum { G_OPTION_ARG_NONE, G_OPTION_ARG_STRING, G_OPTION_ARG_INT, G_OPTION_ARG_CALLBACK, G_OPTION_ARG_FILENAME, G_OPTION_ARG_STRING_ARRAY, G_OPTION_ARG_FILENAME_ARRAY, G_OPTION_ARG_DOUBLE, G_OPTION_ARG_INT64 } GOptionArg;

GOptionArg перечисляет значения определяющие какой тип дополнительного параметра опции ожидается обнаружить. Если опции ожидает дополнительный параметр, он может быть определён несколькими способами; с короткими опциями: -x arg, с длинными опциями: --name arg или комбинировано в одном аргументе: --name=arg.

G_OPTION_ARG_NONE Нет дополнительного параметра. Это полезно для простых флагов.
G_OPTION_ARG_STRING Опция принимает строковый параметр.
G_OPTION_ARG_INT Опция принимает целочисленный параметр.
G_OPTION_ARG_CALLBACK Опция обеспечивает callback-функцию для анализа дополнительного параметра.
G_OPTION_ARG_FILENAME Опция принимает имя файла как параметр.
G_OPTION_ARG_STRING_ARRAY Опция принимает строковый параметр, многократное использование опции собирается в строковый массив.
G_OPTION_ARG_FILENAME_ARRAY Опция принимает имя файла как параметр, многократное использование опции собирается в строковый массив.
G_OPTION_ARG_DOUBLE Опция принимает двойной параметр. Параметр может быть в формате пользовательской локализации или в "C" locale. Начиная с версии 2.12
G_OPTION_ARG_INT64 Опция принимает 64-битное целочисленное. Как G_OPTION_ARG_INT но для большего числа. Число может быть десятичным, шестнадцатиричным (когда префикс 0x, например, 0xffffffff). Начиная с версии 2.12

enum GOptionFlags

typedef enum { G_OPTION_FLAG_HIDDEN = 1 << 0, G_OPTION_FLAG_IN_MAIN = 1 << 1, G_OPTION_FLAG_REVERSE = 1 << 2, G_OPTION_FLAG_NO_ARG = 1 << 3, G_OPTION_FLAG_FILENAME = 1 << 4, G_OPTION_FLAG_OPTIONAL_ARG = 1 << 5, G_OPTION_FLAG_NOALIAS = 1 << 6 } GOptionFlags;

Флаги которые модифицируют отдельные опции.

G_OPTION_FLAG_HIDDEN Опция не появляется в выводе --help.
G_OPTION_FLAG_IN_MAIN Опция появляется в основном разделе вывода --help, даже если она определена в группе.
G_OPTION_FLAG_REVERSE Для опции вида G_OPTION_ARG_NONE, этот флаг указывает что опция имеет обратный смысл.
G_OPTION_FLAG_NO_ARG Для опции вида G_OPTION_ARG_CALLBACK, этот флаг указывает что callback-функция не принимает аргументов (как опция G_OPTION_ARG_NONE). Начиная с версии 2.8
G_OPTION_FLAG_FILENAME Для опции вида G_OPTION_ARG_CALLBACK, этот флаг указывает что аргумент должен быть помещён в callback-функцию в кодировке имён файлов GLib, а не в UTF-8. Начиная с версии 2.8
G_OPTION_FLAG_OPTIONAL_ARG Для опции вида G_OPTION_ARG_CALLBACK, этот флаг указывает что аргумент является опциональным. Если нет аргумента, то данные для GOptionParseFunc будут установлены в значение NULL. Начиная с версии 2.8
G_OPTION_FLAG_NOALIAS Этот флаг выключает автоматическое разрешение противоречий префиксов имён длинных опций с groupname-, если есть конфликты. Эта опция должна использоваться только в ситуациях где псевдоним необходим для некоторого устаревшего интерфейса командной строки. Использование этой опции небезопасно, если все все группы опций не находятся под вашим прямым контролем. Начиная с версии 2.8.

G_OPTION_REMAINING

#define G_OPTION_REMAINING ""

Если длинная опция в основной группе имеет это имя, она не обрабатывается как обычная опция. Вместо этого она собирает все неопциональные аргументы которые в противном случае будут сброшены в argv. Опция должна быть типа G_OPTION_ARG_STRING_ARRAY или G_OPTION_ARG_FILENAME_ARRAY.

Использование G_OPTION_REMAINING, вместо простого сканирования argv для просмотра оставшихся параметров, имеет преимущество, так как GOption заботится о необходимом перекодировании строк или имён файлов.

Начиная с версии 2.6


GOptionEntry

typedef struct { const gchar *long_name; gchar short_name; gint flags; GOptionArg arg; gpointer arg_data; const gchar *description; const gchar *arg_description; } GOptionEntry;

GOptionEntry определяет единственную опцию. Для эффективности, она должна быть добавлена в GOptionGroup с помощью g_option_context_add_main_entries() или g_option_group_add_entries().

const gchar *long_name; Длинное имя опции может использоваться для определения в командной строке как --long_name. Все опции должны иметь длинные имена. Для решения конфликтов, если множество групп опций содержат одинаковое длинное имя, опцию также возможно определить как --groupname-long_name.
gchar short_name; Если опция имеет короткое имя, она может быть определена в командной строке как -short_name. short_name должен быть печатным ASCII символом не тире '-', или нулём если опция не имеет короткого имени.
gint flags; Флаги из GOptionFlags.
GOptionArg arg; Тип опции, как GOptionArg.
gpointer arg_data; Если тип arg это G_OPTION_ARG_CALLBACK, тогда arg_data должен указывать на GOptionArgFunc callback-функцию, которая будет вызвана для обработки дополнительных параметров. Иначе, arg_data это указатель на расположение для сохраняемого значения, требуемый тип расположения зависит от типа arg:
const gchar *description; описание для опции в выводе --help. description переводится с помощью translate_func группы, смотрите g_option_group_set_translation_domain().
const gchar *arg_description; метка-заполнитель для используемого дополнительного параметра анализируемой опции в выводе --help. arg_description переводится используя translate_func группы, смотрите g_option_group_set_translation_domain().

g_option_context_add_main_entries ()

void g_option_context_add_main_entries (GOptionContext *context, const GOptionEntry *entries, const gchar *translation_domain);

Удобная функция которая создаёт основную группу если она не существует, добавляет в неё entries и устанавливает область перевода.

context : GOptionContext
entries : NULL-завершённый массив GOptionEntrys
translation_domain : область перевода используемая для перевода вывода --help опций в entries с помощью gettext(), или NULL

Начиная с версии 2.6


GOptionGroup

typedef struct _GOptionGroup GOptionGroup;

Структура GOptionGroup определяет опции в единственной группе. Структура имеет только закрытые поля и не должна использоваться непосредственно.

Все опции в группе используют совместно одну функцию перевода. Библиотеки которые необходимы для анализа опций командной строки обеспечат функцию для получения GOptionGroup содержащую эти опции, которую приложение может добавить в свой GOptionContext.


g_option_context_add_group ()

void g_option_context_add_group (GOptionContext *context, GOptionGroup *group);

Добавляет GOptionGroup в context, так чтобы анализ context распознал опции в группе. Помните что группа будет освобождена вместе с контекстом когда будет вызвана g_option_context_free(), поэтому вы не должны освобождать группу самостоятельно после добавления её в контекст.

context : GOptionContext
group : добавляемая группа

Начиная с версии 2.6


g_option_context_set_main_group ()

void g_option_context_set_main_group (GOptionContext *context, GOptionGroup *group);

Устанавливает GOptionGroup как основную группу context. Это имеет тот же эффект как вызов g_option_context_add_group(), только разница в том, что опции в основной группе обрабатываются по другому когда генерируется вывод --help.

context : GOptionContext
group : группа для установки в качестве основной

Начиная с версии 2.6


g_option_context_get_main_group ()

GOptionGroup* g_option_context_get_main_group (GOptionContext *context);

Возвращает указатель на основную группу которая принадлежит к context.

context : GOptionContext
Возвращает : основная группа для context, или NULL если context не имеет основной группы. Помните что группа принадлежит context и не должна изменяться или освобождаться.

Начиная с версии 2.6


g_option_group_new ()

GOptionGroup* g_option_group_new (const gchar *name, const gchar *description, const gchar *help_description, gpointer user_data, GDestroyNotify destroy);

Создаёт новую GOptionGroup.

name : имя для группы опции, оно используется для получения справки об опциях в этой группе с помощью --help-name
description : описание для этой группы которое должно показываться в выводе --help. Эта строка переводится используя область перевода или функцию перевода в группе.
help_description : описание для --help-name опции. Эта строка переводится используя область перевода или функцию перевода в группе.
user_data : пользовательские данные которые будут помещены в обработчик перед и после анализа, обработчик ошибок и callbacks-функции G_OPTION_ARG_CALLBACK опций, или NULL
destroy : функция для освобождения user_data, или NULL
Возвращает : вновь созданная группа опций. Она должна быть добавлена в GOptionContext или освобождена с помощью g_option_group_free().

Начиная с версии 2.6


g_option_group_free ()

void g_option_group_free (GOptionGroup *group);

Освобождает GOptionGroup. Помните что вы не должны освобождать группы добавленные в GOptionContext.

group : GOptionGroup

Начиная с версии 2.6


g_option_group_add_entries ()

void g_option_group_add_entries (GOptionGroup *group, const GOptionEntry *entries);

Добавляет опцию определённую в entries к group.

group : GOptionGroup
entries : NULL-завершённый массив GOptionEntrys

Начиная с версии 2.6


GOptionParseFunc ()

gboolean (*GOptionParseFunc) (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error);

Тип функции которая может быть вызвана перед и после анализа.

context : Активный GOptionContext
group : группа с которой связана функция
data : пользовательские данные добавляемые в GOptionGroup содержащую опцию где она была создана с помощью g_option_group_new()
error : расположение для возвращаемой ошибки
Возвращает : TRUE если функция полностью выполнена, FALSE если произошла ошибка, в этом случае должна быть установлена error с помощью g_set_error()

g_option_group_set_parse_hooks ()

void g_option_group_set_parse_hooks (GOptionGroup *group, GOptionParseFunc pre_parse_func, GOptionParseFunc post_parse_func);

Связывает две функции с group которые будут вызваны из g_option_context_parse() перед анализом первой опции и после анализа последней опции соответственно.

Помните что пользовательские данные помещаемые в pre_parse_func и post_parse_func могут быть определены при создании группы с помощью g_option_group_new().

group : GOptionGroup
pre_parse_func : функция вызываемая перед анализом, или NULL
post_parse_func : функция вызываемая после анализа, или NULL

Начиная с версии 2.6


GOptionErrorFunc ()

void (*GOptionErrorFunc) (GOptionContext *context, GOptionGroup *group, gpointer data, GError **error);

Тип функции используемая как callback-функция когда происходит ошибка анализа.

context : Активный GOptionContext
group : группа с которой связана функция
data : пользовательские данные добавляемые в GOptionGroup содержащую опцию где она была создана с помощью g_option_group_new()
error : GError содержащая детали произошедшей ошибки анализа

g_option_group_set_error_hook ()

void g_option_group_set_error_hook (GOptionGroup *group, GOptionErrorFunc error_func);

Связывает функцию с group которая будет вызвана из g_option_context_parse() когда произойдёт ошибка.

Помните что пользовательские данные помещаемые в pre_parse_func и post_parse_func могут быть определены при создании группы с помощью g_option_group_new().

group : GOptionGroup
error_func : функция вызываемая при возникновении ошибки

Начиная с версии 2.6


g_option_group_set_translate_func ()

void g_option_group_set_translate_func (GOptionGroup *group, GTranslateFunc func, gpointer data, GDestroyNotify destroy_notify);

Устанавливает функцию которая используется для перевода строк видимых пользователем, для вывода --help. Разные группы могут использовать разные GTranslateFuncs. Если func это NULL, строки не переводятся.

Если вы используете gettext() , вам нужно только установить область перевода, смотрите g_option_group_set_translation_domain().

group : GOptionGroup
func : GTranslateFunc, или NULL
data : пользовательские данные помещаемые в func, или NULL
destroy_notify : функция которая вызывается для освобождения data, или NULL

Начиная с версии 2.6


g_option_group_set_translation_domain ()

void g_option_group_set_translation_domain (GOptionGroup *group, const gchar *domain);

Удобная функция использующая gettext() для перевода видимых пользователем строк.

group : GOptionGroup
domain : используемая область

Начиная с версии 2.6