21 bump_verbosity(
const gchar *option_name, 
const gchar *optarg, gpointer 
data, GError **error) {
    37     args->
summary = strdup(summary);
    48 free_common_args(gpointer 
data) {
    64                         GOptionGroup **output_group, 
const char *param_string) {
    66     GOptionContext *context;
    67     GOptionGroup *main_group;
    69     GOptionEntry main_entries[3] = {
    70         { 
"version", 
'$', 0, G_OPTION_ARG_NONE, &(common_args->
version),
    71           "Display software version and exit",
    73         { 
"verbose", 
'V', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, bump_verbosity,
    74           "Increase debug output (may be specified multiple times)",
    80     main_group = g_option_group_new(NULL, 
"Application Options:", NULL, common_args, free_common_args);
    81     g_option_group_add_entries(main_group, main_entries);
    83     context = g_option_context_new(param_string);
    84     g_option_context_set_summary(context, common_args->
summary);
    85     g_option_context_set_description(context, desc);
    86     g_option_context_set_main_group(context, main_group);
    89         GOptionEntry output_entries[3] = {
    90             { 
"output-as", 0, 0, G_OPTION_ARG_STRING, &(common_args->
output_ty),
    93             { 
"output-to", 0, 0, G_OPTION_ARG_STRING, &(common_args->
output_dest),
    94               "Specify file name for output (or \"-\" for stdout)", 
"DEST" },
    99         if (*output_group == NULL) {
   100             *output_group = g_option_group_new(
"output", 
"Output Options:", 
"Show output help", NULL, NULL);
   105         g_option_group_add_entries(*output_group, output_entries);
   106         g_option_context_add_group(context, *output_group);
   118     if (context == NULL) {
   122     g_option_context_free(context);
   128     GOptionGroup *main_group = g_option_context_get_main_group(context);
   130     g_option_group_add_entries(main_group, entries);
   135                     const char *header, 
const char *desc,
   136                     const GOptionEntry entries[])
   138     GOptionGroup *group = NULL;
   140     group = g_option_group_new(
name, header, desc, NULL, NULL);
   141     g_option_group_add_entries(group, entries);
   142     g_option_context_add_group(context, group);
   148 string_replace(gchar *str, 
const gchar *sub, 
const gchar *repl)
   157     gchar **split = g_strsplit(str, sub, 0);
   158     gchar *retval = g_strjoinv(repl, split);
   169     if (argv == NULL || argv[0] == NULL) {
   173     gs = g_string_sized_new(100);
   175     for (
int i = 0; argv[i] != NULL; i++) {
   177             g_string_append_c(gs, 
' ');
   180         if (strchr(argv[i], 
' ') == NULL) {
   182             g_string_append(gs, argv[i]);
   183         } 
else if (strchr(argv[i], 
'\'') == NULL) {
   205             gchar *repl = string_replace(argv[i], 
"'", 
"\\\'");
   211     return g_string_free(gs, FALSE);
   216     GPtrArray *arr = NULL;
   217     bool saw_dash_dash = 
false;
   218     bool copy_option = 
false;
   224     if (g_get_prgname() == NULL && argv && *argv) {
   225         gchar *basename = g_path_get_basename(*argv);
   227         g_set_prgname(basename);
   231     arr = g_ptr_array_new();
   233     for (
int i = 0; argv[i] != NULL; i++) {
   239         if (saw_dash_dash == 
false && strcmp(argv[i], 
"--") == 0) {
   240             saw_dash_dash = 
true;
   243         if (saw_dash_dash == 
true) {
   244             g_ptr_array_add(arr, g_strdup(argv[i]));
   248         if (copy_option == 
true) {
   249             g_ptr_array_add(arr, g_strdup(argv[i]));
   258             g_ptr_array_add(arr, g_strdup(argv[i]));
   265         if (g_str_has_prefix(argv[i], 
"-") && !g_str_has_prefix(argv[i], 
"--")) {
   267             const char *ch = argv[i]+1;
   274             if (*ch != 
'\0' && *ch >= 
'1' && *ch <= 
'9') {
   275                 bool is_numeric = 
true;
   277                 while (*ch != 
'\0') {
   287                     g_ptr_array_add(arr, g_strdup_printf(
"%s", argv[i]));
   297             while (*ch != 
'\0') {
   303                 if (special != NULL && strchr(special, *ch) != NULL) {
   307                     if (*(ch+1) != 
'\0') {
   308                         g_ptr_array_add(arr, g_strdup_printf(
"-%c", *ch));
   309                         g_ptr_array_add(arr, g_strdup(ch+1));
   317                         g_ptr_array_add(arr, g_strdup_printf(
"-%c", *ch));
   324                     g_ptr_array_add(arr, g_strdup_printf(
"-%c", *ch));
   334             g_ptr_array_add(arr, g_strdup(argv[i]));
   338     g_ptr_array_add(arr, NULL);
   340     return (
char **) g_ptr_array_free(arr, FALSE);
   348     gchar **extra_args = NULL;
   350     gboolean retval = TRUE;
   352     va_start(ap, format);
   353     len = vasprintf(&buf, format, ap);
   357     if (!g_shell_parse_argv(buf, NULL, &extra_args, error)) {
   358         g_strfreev(extra_args);
   363     retval = g_option_context_parse_strv(context, &extra_args, error);
   365     g_strfreev(extra_args);
 
_Noreturn crm_exit_t crm_exit(crm_exit_t rc)
gchar ** pcmk__cmdline_preproc(char *const *argv, const char *special)
gchar * pcmk__quote_cmdline(gchar **argv)
GOptionContext * pcmk__build_arg_context(pcmk__common_args_t *common_args, const char *fmts, GOptionGroup **output_group, const char *param_string)
External (OS/environmental) problem. 
void pcmk__g_strcat(GString *buffer,...) G_GNUC_NULL_TERMINATED
pcmk__common_args_t * pcmk__new_common_args(const char *summary)
char * crm_strdup_printf(char const *format,...) G_GNUC_PRINTF(1
void pcmk__add_arg_group(GOptionContext *context, const char *name, const char *header, const char *desc, const GOptionEntry entries[])
void pcmk__free_arg_context(GOptionContext *context)
gboolean pcmk__force_args(GOptionContext *context, GError **error, const char *format,...)
void pcmk__add_main_args(GOptionContext *context, const GOptionEntry entries[])
#define PACKAGE_BUGREPORT