packages feed

fltkhs-0.1.0.0: c-examples/howto-parse-args.c

#include <stdio.h>
#include <string.h>
#include <Fl_C.h>
#include <Fl_BoxC.h>
#include <Fl_WindowC.h>

int helpFlag = 0;
char *optionString = 0;
int arg(int argc, char **argv, int* i)
{
  printf("i: %d\n", *i);
  if (strcmp("-h", argv[*i]) == 0 || strcmp("--help", argv[*i]) == 0) {
    helpFlag = 1;
    *i += 1;
    return 1;
  }
  if (strcmp("-o", argv[*i]) == 0 || strcmp("--option", argv[*i]) == 0) {
    if (*i < argc-1 && argv[*i+1] != 0) {
      optionString = argv[*i+1];
      *i += 2;
      return 2;
    }
  }
  return 0;
}
int main(int argc, char** argv)
{
  int i = 1;
   if (Fl_args_with_handler(argc, argv, i, arg) < argc)
    // note the concatenated strings to give a single format string!
    printf("error: unknown option: %s\n"
           "usage: %s [options]\n"
           " -h | --help     : print extended help message\n"
           " -o | --option # : example option with parameter\n"
           " plus standard fltk options\n",
           argv[i], argv[0]);
  if (helpFlag)
    printf("usage: %s [options]\n"
           " -h | --help     : print extended help message\n"
           " -o | --option # : example option with parameter\n"
           " plus standard fltk options:\n"
           "\n",
           argv[0]);

  fl_Window mainWin = (fl_Window)Fl_Window_New(300,200);
  fl_Box textBox = (fl_Box)Fl_Box_New(0, 0, 300, 200);
  if (optionString != 0)
    Fl_Box_set_label(textBox, optionString);
  else
    Fl_Box_set_label(textBox, "re-run with [-o|--option] text");
  Fl_Window_show_with_args(mainWin,argc, argv);
  return Fl_run();
}