source file

This file has been formatted with
GNU Source-highlight, http://www.gnu.org/software/src-highlite
by Lorenzo Bettini <bettini@gnu.org>

    /*
      File autogenerated by gengetopt version 2.12rc6
      generated with the following command:
      /home/bettini/usr/local/bin/gengetopt --input cmdline.ggo --unamed-opts --no-handle-help --no-handle-version

      The developers of gengetopt consider the fixed text that goes in all
      gengetopt output files to be in the public domain:
      we make no copyright claims on it.
    */

    /* If we use autoconf.  */
    #ifdef HAVE_CONFIG_H
    #include "config.h"
    #endif

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>

    #include "getopt.h"

    #include "cmdline.h"

    static
    void clear_given (struct gengetopt_args_info *args_info);
    static
    void clear_args (struct gengetopt_args_info *args_info);

    static int
    cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error);

    static char *
    gengetopt_strdup (const char *s);

    static
    void clear_given (struct gengetopt_args_info *args_info)
    {
      args_info->help_given = 0 ;
      args_info->version_given = 0 ;
      args_info->input_given = 0 ;
      args_info->output_given = 0 ;
      args_info->src_lang_given = 0 ;
      args_info->out_format_given = 0 ;
      args_info->verbose_given = 0 ;
      args_info->doc_given = 0 ;
      args_info->no_doc_given = 0 ;
      args_info->css_given = 0 ;
      args_info->title_given = 0 ;
      args_info->tab_given = 0 ;
      args_info->header_given = 0 ;
      args_info->footer_given = 0 ;
      args_info->tags_file_given = 0 ;
      args_info->line_number_given = 0 ;
      args_info->line_number_ref_given = 0 ;
      args_info->output_dir_given = 0 ;
      args_info->gen_version_given = 0 ;
    }

    static
    void clear_args (struct gengetopt_args_info *args_info)
    {
      args_info->input_arg = NULL;
      args_info->output_arg = NULL;
      args_info->src_lang_arg = NULL;
      args_info->out_format_arg = NULL;
      args_info->css_arg = NULL;
      args_info->title_arg = NULL;
      args_info->header_arg = NULL;
      args_info->footer_arg = NULL;
      args_info->tags_file_arg = NULL;
      args_info->output_dir_arg = NULL;
      args_info->gen_version_flag = 1;
    }

    void
    cmdline_parser_print_version (void)
    {
      printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION);
    }

    void
    cmdline_parser_print_help (void)
    {
      cmdline_parser_print_version ();
      printf("\n"
      "Purpose:\n"
      "  Highlight the syntax of a source file (e.g. Java) \n"
      "  into a specific format (e.g. HTML)\n"
      "\n"
      "Usage: %s [OPTIONS]... [FILES]...\n", CMDLINE_PARSER_PACKAGE);
      printf("\n");
      printf("  -h, --help               Print help and exit\n");
      printf("  -V, --version            Print version and exit\n");
      printf("  -i, --input=STRING       input file. default std input\n");
      printf("  -o, --output=STRING      output file. default std output\n");
      printf("  -s, --src-lang=STRING    source language (e.g. java, javascript, cpp, \n                             prolog, perl, php3, python, ruby, flex, \n                             changelog,lua,caml,sml).   If not specified, the \n                             source language will be guessed from the file \n                             extension.\n");
      printf("  -f, --out-format=STRING  output format (e.g. html, xhtml, esc)\n");
      printf("  -v, --verbose            verbose mode on\n");
      printf("  -d, --doc                create html with title and header\n");
      printf("      --no-doc             cancel the --doc option even if it is implied \n                             (e.g., when css is given)\n");
      printf("  -c, --css=STRING         use a css for formatting. Implies --doc\n");
      printf("  -T, --title=STRING       give a title to the html. Implies --doc\n");
      printf("  -t, --tab=INT            specify tab length. default 8\n");
      printf("  -H, --header=STRING      file to insert as header\n");
      printf("  -F, --footer=STRING      file to insert as footer\n");
      printf("      --tags-file=STRING   specify format options (def. tags.j2h)\n");
      printf("  -n, --line-number        number all output lines\n");
      printf("      --line-number-ref    number all output lines and generate an anchor that \n                             can be referred to from another document\n");
      printf("      --output-dir=STRING  output directory\n");
      printf("      --gen-version        put gengetopt version in the generated file  \n                             (default=on)\n");
    }

    void
    cmdline_parser_init (struct gengetopt_args_info *args_info)
    {
      clear_given (args_info);
      clear_args (args_info);

      args_info->inputs = NULL;
      args_info->inputs_num = 0;
    }

    void
    cmdline_parser_free (struct gengetopt_args_info *args_info)
    {

      int i;
      if (args_info->input_arg)
        {
          free (args_info->input_arg); /* free previous argument */
          args_info->input_arg = 0;
        }
      if (args_info->output_arg)
        {
          free (args_info->output_arg); /* free previous argument */
          args_info->output_arg = 0;
        }
      if (args_info->src_lang_arg)
        {
          free (args_info->src_lang_arg); /* free previous argument */
          args_info->src_lang_arg = 0;
        }
      if (args_info->out_format_arg)
        {
          free (args_info->out_format_arg); /* free previous argument */
          args_info->out_format_arg = 0;
        }
      if (args_info->css_arg)
        {
          free (args_info->css_arg); /* free previous argument */
          args_info->css_arg = 0;
        }
      if (args_info->title_arg)
        {
          free (args_info->title_arg); /* free previous argument */
          args_info->title_arg = 0;
        }
      if (args_info->header_arg)
        {
          free (args_info->header_arg); /* free previous argument */
          args_info->header_arg = 0;
        }
      if (args_info->footer_arg)
        {
          free (args_info->footer_arg); /* free previous argument */
          args_info->footer_arg = 0;
        }
      if (args_info->tags_file_arg)
        {
          free (args_info->tags_file_arg); /* free previous argument */
          args_info->tags_file_arg = 0;
        }
      if (args_info->output_dir_arg)
        {
          free (args_info->output_dir_arg); /* free previous argument */
          args_info->output_dir_arg = 0;
        }

      for (i = 0; i < args_info->inputs_num; ++i)
        free (args_info->inputs [i]);

      if (args_info->inputs_num)
        free (args_info->inputs);

      clear_given (args_info);
    }

    /* gengetopt_strdup() */
    /* strdup.c replacement of strdup, which is not standard */
    char *
    gengetopt_strdup (const char *s)
    {
      char *result = NULL;
      if (!s)
        return result;

      result = (char*)malloc(strlen(s) + 1);
      if (result == (char*)0)
        return (char*)0;
      strcpy(result, s);
      return result;
    }

    int
    cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info)
    {
      return cmdline_parser2 (argc, argv, args_info, 0, 1);
    }

    int
    cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize)
    {
      int result;

      result = cmdline_parser_internal (argc, argv, args_info, override, initialize, 1, NULL);

      if (result == EXIT_FAILURE)
        {
          cmdline_parser_free (args_info);
          exit (EXIT_FAILURE);
        }

      return result;
    }

    int
    cmdline_parser_internal (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required, const char *additional_error)
    {
      int c;	/* Character of the parsed option.  */
      int error = 0;
      struct gengetopt_args_info local_args_info;

      if (initialize)
        cmdline_parser_init (args_info);

      cmdline_parser_init (&local_args_info);

      optarg = 0;
      optind = 1;
      opterr = 1;
      optopt = '?';

      while (1)
        {
          int option_index = 0;
          char *stop_char;

          static struct option long_options[] = {
            { "help",	0, NULL, 'h' },
            { "version",	0, NULL, 'V' },
            { "input",	1, NULL, 'i' },
            { "output",	1, NULL, 'o' },
            { "src-lang",	1, NULL, 's' },
            { "out-format",	1, NULL, 'f' },
            { "verbose",	0, NULL, 'v' },
            { "doc",	0, NULL, 'd' },
            { "no-doc",	0, NULL, 0 },
            { "css",	1, NULL, 'c' },
            { "title",	1, NULL, 'T' },
            { "tab",	1, NULL, 't' },
            { "header",	1, NULL, 'H' },
            { "footer",	1, NULL, 'F' },
            { "tags-file",	1, NULL, 0 },
            { "line-number",	0, NULL, 'n' },
            { "line-number-ref",	0, NULL, 0 },
            { "output-dir",	1, NULL, 0 },
            { "gen-version",	0, NULL, 0 },
            { NULL,	0, NULL, 0 }
          };

          stop_char = 0;
          c = getopt_long (argc, argv, "hVi:o:s:f:vdc:T:t:H:F:n", long_options, &option_index);

          if (c == -1) break;	/* Exit from `while (1)' loop.  */

          switch (c)
            {
            case 'h':	/* Print help and exit.  */
              if (local_args_info.help_given)
                {
                  fprintf (stderr, "%s: `--help' (`-h') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->help_given && ! override)
                continue;
              local_args_info.help_given = 1;
              args_info->help_given = 1;
              return 0;

            case 'V':	/* Print version and exit.  */
              if (local_args_info.version_given)
                {
                  fprintf (stderr, "%s: `--version' (`-V') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->version_given && ! override)
                continue;
              local_args_info.version_given = 1;
              args_info->version_given = 1;
              return 0;

            case 'i':	/* input file. default std input.  */
              if (local_args_info.input_given)
                {
                  fprintf (stderr, "%s: `--input' (`-i') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->input_given && ! override)
                continue;
              local_args_info.input_given = 1;
              args_info->input_given = 1;
              if (args_info->input_arg)
                free (args_info->input_arg); /* free previous string */
              args_info->input_arg = gengetopt_strdup (optarg);
              break;

            case 'o':	/* output file. default std output.  */
              if (local_args_info.output_given)
                {
                  fprintf (stderr, "%s: `--output' (`-o') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->output_given && ! override)
                continue;
              local_args_info.output_given = 1;
              args_info->output_given = 1;
              if (args_info->output_arg)
                free (args_info->output_arg); /* free previous string */
              args_info->output_arg = gengetopt_strdup (optarg);
              break;

            case 's':	/* source language (e.g. java, javascript, cpp, prolog, perl, php3, python, ruby, flex, changelog,lua,caml,sml).   If not specified, the source language will be guessed from the file extension..  */
              if (local_args_info.src_lang_given)
                {
                  fprintf (stderr, "%s: `--src-lang' (`-s') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->src_lang_given && ! override)
                continue;
              local_args_info.src_lang_given = 1;
              args_info->src_lang_given = 1;
              if (args_info->src_lang_arg)
                free (args_info->src_lang_arg); /* free previous string */
              args_info->src_lang_arg = gengetopt_strdup (optarg);
              break;

            case 'f':	/* output format (e.g. html, xhtml, esc).  */
              if (local_args_info.out_format_given)
                {
                  fprintf (stderr, "%s: `--out-format' (`-f') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->out_format_given && ! override)
                continue;
              local_args_info.out_format_given = 1;
              args_info->out_format_given = 1;
              if (args_info->out_format_arg)
                free (args_info->out_format_arg); /* free previous string */
              args_info->out_format_arg = gengetopt_strdup (optarg);
              break;

            case 'v':	/* verbose mode on.  */
              if (local_args_info.verbose_given)
                {
                  fprintf (stderr, "%s: `--verbose' (`-v') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->verbose_given && ! override)
                continue;
              local_args_info.verbose_given = 1;
              args_info->verbose_given = 1;
              break;

            case 'd':	/* create html with title and header.  */
              if (local_args_info.doc_given)
                {
                  fprintf (stderr, "%s: `--doc' (`-d') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->doc_given && ! override)
                continue;
              local_args_info.doc_given = 1;
              args_info->doc_given = 1;
              break;

            case 'c':	/* use a css for formatting. Implies --doc.  */
              if (local_args_info.css_given)
                {
                  fprintf (stderr, "%s: `--css' (`-c') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->css_given && ! override)
                continue;
              local_args_info.css_given = 1;
              args_info->css_given = 1;
              if (args_info->css_arg)
                free (args_info->css_arg); /* free previous string */
              args_info->css_arg = gengetopt_strdup (optarg);
              break;

            case 'T':	/* give a title to the html. Implies --doc.  */
              if (local_args_info.title_given)
                {
                  fprintf (stderr, "%s: `--title' (`-T') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->title_given && ! override)
                continue;
              local_args_info.title_given = 1;
              args_info->title_given = 1;
              if (args_info->title_arg)
                free (args_info->title_arg); /* free previous string */
              args_info->title_arg = gengetopt_strdup (optarg);
              break;

            case 't':	/* specify tab length. default 8.  */
              if (local_args_info.tab_given)
                {
                  fprintf (stderr, "%s: `--tab' (`-t') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->tab_given && ! override)
                continue;
              local_args_info.tab_given = 1;
              args_info->tab_given = 1;
              args_info->tab_arg = strtol (optarg,&stop_char,0);
              break;

            case 'H':	/* file to insert as header.  */
              if (local_args_info.header_given)
                {
                  fprintf (stderr, "%s: `--header' (`-H') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->header_given && ! override)
                continue;
              local_args_info.header_given = 1;
              args_info->header_given = 1;
              if (args_info->header_arg)
                free (args_info->header_arg); /* free previous string */
              args_info->header_arg = gengetopt_strdup (optarg);
              break;

            case 'F':	/* file to insert as footer.  */
              if (local_args_info.footer_given)
                {
                  fprintf (stderr, "%s: `--footer' (`-F') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->footer_given && ! override)
                continue;
              local_args_info.footer_given = 1;
              args_info->footer_given = 1;
              if (args_info->footer_arg)
                free (args_info->footer_arg); /* free previous string */
              args_info->footer_arg = gengetopt_strdup (optarg);
              break;

            case 'n':	/* number all output lines.  */
              if (local_args_info.line_number_given)
                {
                  fprintf (stderr, "%s: `--line-number' (`-n') option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                  goto failure;
                }
              if (args_info->line_number_given && ! override)
                continue;
              local_args_info.line_number_given = 1;
              args_info->line_number_given = 1;
              break;

            case 0:	/* Long option with no short option */
              /* cancel the --doc option even if it is implied (e.g., when css is given).  */
              if (strcmp (long_options[option_index].name, "no-doc") == 0)
              {
                if (local_args_info.no_doc_given)
                  {
                    fprintf (stderr, "%s: `--no-doc' option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                    goto failure;
                  }
                if (args_info->no_doc_given && ! override)
                  continue;
                local_args_info.no_doc_given = 1;
                args_info->no_doc_given = 1;
                break;
              }

              /* specify format options (def. tags.j2h).  */
              else if (strcmp (long_options[option_index].name, "tags-file") == 0)
              {
                if (local_args_info.tags_file_given)
                  {
                    fprintf (stderr, "%s: `--tags-file' option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                    goto failure;
                  }
                if (args_info->tags_file_given && ! override)
                  continue;
                local_args_info.tags_file_given = 1;
                args_info->tags_file_given = 1;
                if (args_info->tags_file_arg)
                  free (args_info->tags_file_arg); /* free previous string */
                args_info->tags_file_arg = gengetopt_strdup (optarg);
              }

              /* number all output lines and generate an anchor that can be referred to from another document.  */
              else if (strcmp (long_options[option_index].name, "line-number-ref") == 0)
              {
                if (local_args_info.line_number_ref_given)
                  {
                    fprintf (stderr, "%s: `--line-number-ref' option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                    goto failure;
                  }
                if (args_info->line_number_ref_given && ! override)
                  continue;
                local_args_info.line_number_ref_given = 1;
                args_info->line_number_ref_given = 1;
                break;
              }

              /* output directory.  */
              else if (strcmp (long_options[option_index].name, "output-dir") == 0)
              {
                if (local_args_info.output_dir_given)
                  {
                    fprintf (stderr, "%s: `--output-dir' option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                    goto failure;
                  }
                if (args_info->output_dir_given && ! override)
                  continue;
                local_args_info.output_dir_given = 1;
                args_info->output_dir_given = 1;
                if (args_info->output_dir_arg)
                  free (args_info->output_dir_arg); /* free previous string */
                args_info->output_dir_arg = gengetopt_strdup (optarg);
              }

              /* put gengetopt version in the generated file.  */
              else if (strcmp (long_options[option_index].name, "gen-version") == 0)
              {
                if (local_args_info.gen_version_given)
                  {
                    fprintf (stderr, "%s: `--gen-version' option given more than once%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
                    goto failure;
                  }
                if (args_info->gen_version_given && ! override)
                  continue;
                local_args_info.gen_version_given = 1;
                args_info->gen_version_given = 1;
                args_info->gen_version_flag = !(args_info->gen_version_flag);
              }

              break;
            case '?':	/* Invalid option.  */
              /* `getopt_long' already printed an error message.  */
              goto failure;

            default:	/* bug: option not considered.  */
              fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
              abort ();
            } /* switch */
        } /* while */

      cmdline_parser_free (&local_args_info);

      if (check_required)
        {
          if (! args_info->out_format_given)
            {
              fprintf (stderr, "%s: '--out-format' ('-f') option required%s\n", CMDLINE_PARSER_PACKAGE, (additional_error ? additional_error : ""));
              error = 1;
            }
        }

      if ( error )
        return (EXIT_FAILURE);

      if (optind < argc)
        {
          int i = 0 ;

          args_info->inputs_num = argc - optind ;
          args_info->inputs =
            (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
          while (optind < argc)
            args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind++]) ;
        }

      return 0;

    failure:
      cmdline_parser_free (&local_args_info);
      return (EXIT_FAILURE);
    }

This file was generated with the following command:

    source-highlight -s cpp -f html -i cmdline.c -o cmdline.c.html --css="cpp2html.css" --header="./header.html" --footer="./footer.html"

and these are header.html and footer.html.
`--header` and `--footer` options are an idea of Xavier Outhier <xouthier@yahoo.fr>, for an earlier version of Java2html (now GNU Source-highlight), http://www.gnu.org/software/src-highlite