私はいくつかのコマンドライン オプションを解析するために GLib を使用しています。問題は、ユーザーがそれらを省略した場合にプログラムがヘルプ画面で終了するように、これらのオプションのうち 2 つを必須にしたいことです。
私のコードは次のようになります。
static gint line = -1;
static gint column = -1;
static GOptionEntry options[] =
{
{"line", 'l', 0, G_OPTION_ARG_INT, &line, "The line", "L"},
{"column", 'c', 0, G_OPTION_ARG_INT, &column, "The column", "C"},
{NULL}
};
...
int main(int argc, char** argv)
{
GError *error = NULL;
GOptionContext *context;
context = g_option_context_new ("- test");
g_option_context_add_main_entries (context, options, NULL);
if (!g_option_context_parse(context, &argc, &argv, &error))
{
usage(error->message, context);
}
...
return 0;
}
コマンドラインでこれらのパラメーターのいずれかまたは両方を省略した場合でも、g_option_context_parse() は成功し、問題の値 (行または列) は依然として -1 です。ユーザーがコマンドラインで両方のオプションを渡さない場合、GLib に解析を失敗させるにはどうすればよいですか? 多分私は目が見えないだけかもしれませんが、これらのフィールドを必須にするように GOptionEntry データ構造に入れることができるフラグが見つかりませんでした。
もちろん、これらの変数のいずれかがまだ -1 であるかどうかを確認することはできますが、ユーザーがコマンドラインでこの値を渡した可能性があり、値が範囲外の場合は別のエラー メッセージを出力したいと考えています。