#include <stdio.h>
#include "option.h"
typedef struct config_ {
char *temperature;
char *gradient;
char *help;
} configuration;
configuration config;
#define NUMBER_OF_OPTIONS 3
Option option[NUMBER_OF_OPTIONS] =
{
{ "--temperature", 1, 10, "^[0-9]+$", &config.temperature, "temperature in Celcius" },
{ "--gradient", 1, 10, "^[0-9]+$", &config.gradient, "gradient" },
{ "--help", 0, -1, NULL, &config.help, "print the help" }
};
void print_opt_arg (Option_set *options, char *flag)
{
char *arg;
if (get_argument(options, flag, &arg))
{ fprintf (stdout, "\tUndefined option (%s), this is a programming error\n", flag); }
else
{
if (arg != NULL) {
fprintf (stdout, "\toption (%s) activated", flag);
if (is_argument_required(options, flag))
{ fprintf (stdout, ", argument is [%s]\n", arg); }
else { fprintf (stdout, "\n"); }
}
else { fprintf (stdout, "\toption (%s) not activated\n", flag); }
}
return;
}
int main (int argc, char *argv[])
{
Option_set options = { option, NUMBER_OF_OPTIONS };
char *err, *flag, *arg;
if (init_options (&options))
{
fprintf (stderr, "ERROR: function init_options() failed\n");
return 1;
}
if (parse_command_line (argv, argc, &options, &err, &flag, &arg))
{
fprintf (stderr, "ERROR: function parse_command_line() failed - %s (%s / %s)\n", err, flag, arg);
return 1;
}
fprintf (stdout, "Last ARGV index is: %d\n\n", last_argv_index(options));
print_opt_arg (&options, "--temperature");
print_opt_arg (&options, "--gradient");
print_opt_arg (&options, "--help");
fprintf (stdout, "\n\n");
return 0;
}