]> Creatis software - creaImageIO.git/commitdiff
Changed getopt dependency to boost program_options.
authorcaballero <caballero>
Wed, 8 Apr 2009 14:46:34 +0000 (14:46 +0000)
committercaballero <caballero>
Wed, 8 Apr 2009 14:46:34 +0000 (14:46 +0000)
appli/gimmick/CMakeLists.txt
appli/gimmick/getopt.h [deleted file]
appli/gimmick/gimmick.ggo [deleted file]
appli/gimmick/gimmick_ggo.c [deleted file]
appli/gimmick/gimmick_ggo.h [deleted file]
appli/gimmick/main.cxx

index b39fa9ed4497fb22f14519725e986deaf8f78a3f..21e988d97eeb34e2fd7ec8660368783f051f4f01 100644 (file)
@@ -1,35 +1,5 @@
-#IF(GGO)
- SET(GENGETOPT gengetopt)
-IF(WIN32)
- SET(GENGETOPT C:/Users/Juan/Downloads/gengetopt)
-ENDIF(WIN32)
-  #=========================================================
-  # Find ggo (gengetopt) files (http://www.gnu.org/software/gengetopt/)
-  FILE(GLOB ALL_GGO_FILES *.ggo)
-  #MESSAGE(${ALL_GGO_FILES})
-  
-  FOREACH(GGO_FILE ${ALL_GGO_FILES})
-    #MESSAGE(input=${GGO_FILE})  
-    STRING(REGEX REPLACE "(.*).ggo" 
-      "\\1" GGO_BASENAME
-      "${GGO_FILE}")  
-    #MESSAGE( base= ${GGO_BASENAME})
-    SET(GGO_H ${GGO_BASENAME}_ggo.h)
-    #MESSAGE(${GGO_H})
-    SET(GGO_C ${GGO_BASENAME}_ggo.c)
-    #MESSAGE(${GGO_C}) 
-    SET(GGO_OUTPUT  ${GGO_H} ${GGO_C})
-    ADD_CUSTOM_COMMAND(OUTPUT ${GGO_OUTPUT} 
-      COMMAND ${GENGETOPT} 
-      ARGS < ${GGO_FILE} --file-name=${GGO_BASENAME}_ggo -u --conf-parser
-      DEPENDS ${GGO_FILE}
-      )  
-  ENDFOREACH(GGO_FILE)
-#=========================================================
-#ENDIF(GGO)
-
 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
-SET(SOURCES main gimmick_ggo.c)
+SET(SOURCES main)
 
 IF(WIN32)
   ADD_EXECUTABLE(gimmick ${SOURCES})  
diff --git a/appli/gimmick/getopt.h b/appli/gimmick/getopt.h
deleted file mode 100644 (file)
index b7a026c..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/* Declarations for getopt.
-   Copyright (C) 1989-1994,1996-1999,2001,2003,2004
-   Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#ifndef _GETOPT_H
-
-#ifndef __need_getopt
-# define _GETOPT_H 1
-#endif
-
-/* If __GNU_LIBRARY__ is not already defined, either we are being used
-   standalone, or this is the first header included in the source file.
-   If we are being used with glibc, we need to include <features.h>, but
-   that does not exist if we are standalone.  So: if __GNU_LIBRARY__ is
-   not defined, include <ctype.h>, which will pull in <features.h> for us
-   if it's from glibc.  (Why ctype.h?  It's guaranteed to exist and it
-   doesn't flood the namespace with stuff the way some other headers do.)  */
-#if !defined __GNU_LIBRARY__
-# include <ctype.h>
-#endif
-
-#ifndef __THROW
-# ifndef __GNUC_PREREQ
-#  define __GNUC_PREREQ(maj, min) (0)
-# endif
-# if defined __cplusplus && __GNUC_PREREQ (2,8)
-#  define __THROW      throw ()
-# else
-#  define __THROW
-# endif
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-extern int optopt;
-
-#ifndef __need_getopt
-/* Describe the long-named options requested by the application.
-   The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
-   of `struct option' terminated by an element containing a name which is
-   zero.
-
-   The field `has_arg' is:
-   no_argument         (or 0) if the option does not take an argument,
-   required_argument   (or 1) if the option requires an argument,
-   optional_argument   (or 2) if the option takes an optional argument.
-
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
-   left unchanged if the option is not found.
-
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
-   value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
-
-struct option
-{
-  const char *name;
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-
-# define no_argument           0
-# define required_argument     1
-# define optional_argument     2
-#endif /* need getopt */
-
-
-/* Get definitions and prototypes for functions to process the
-   arguments in ARGV (ARGC of them, minus the program name) for
-   options given in OPTS.
-
-   Return the option character from OPTS just read.  Return -1 when
-   there are no more options.  For unrecognized options, or options
-   missing arguments, `optopt' is set to the option letter, and '?' is
-   returned.
-
-   The OPTS string is a list of characters which are recognized option
-   letters, optionally followed by colons, specifying that that letter
-   takes an argument, to be placed in `optarg'.
-
-   If a letter in OPTS is followed by two colons, its argument is
-   optional.  This behavior is specific to the GNU `getopt'.
-
-   The argument `--' causes premature termination of argument
-   scanning, explicitly telling `getopt' that there are no more
-   options.
-
-   If OPTS begins with `--', then non-option arguments are treated as
-   arguments to the option '\0'.  This behavior is specific to the GNU
-   `getopt'.  */
-
-#ifdef __GNU_LIBRARY__
-/* Many other libraries have conflicting prototypes for getopt, with
-   differences in the consts, in stdlib.h.  To avoid compilation
-   errors, only prototype getopt for the GNU C library.  */
-extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
-       __THROW;
-#else /* not __GNU_LIBRARY__ */
-extern int getopt ();
-#endif /* __GNU_LIBRARY__ */
-
-#ifndef __need_getopt
-extern int getopt_long (int ___argc, char *const *___argv,
-                       const char *__shortopts,
-                       const struct option *__longopts, int *__longind)
-       __THROW;
-extern int getopt_long_only (int ___argc, char *const *___argv,
-                            const char *__shortopts,
-                            const struct option *__longopts, int *__longind)
-       __THROW;
-
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Make sure we later can get all the definitions and declarations.  */
-#undef __need_getopt
-
-#endif /* getopt.h */
diff --git a/appli/gimmick/gimmick.ggo b/appli/gimmick/gimmick.ggo
deleted file mode 100644 (file)
index f698d5b..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# file gimmick.ggo
-package "gimmick"
-version "0.1.0"
-purpose ""
-description ""
-usage "gimmick COMMAND [OPTIONS]"
-
-section "COMMANDS"
-option "print" p "Prints the local database tree" flag off
-option "file" f "Adds the file to local database" typestr="<file name>" string optional
-option "dir" d "Adds the directory to local database" typestr="<path>" string optional
-option "recurse" r "Recurse into sub-directories" flag off dependon="dir"
-
-section "OPTIONS" 
-option "verbose" v "Verbosity level" int default="1" optional
-option "debug" D "Debug messages level" int default="0" optional
-
-#package "<packname>"
-#     version "<version>"
-#     purpose "<purpose>"
-#     usage "<usage>"
-#     description "<description>"
-    
-#     args "<command line options>"
-     
-#     option <long> <short> "<desc>"
-#         {details="<detailed description>"}
-#         {argtype} {typestr="<type descr>"}
-#         {values="<value1>","<value2>",...}
-#         {default="<default value>"}
-#         {dependon="<other option>"}
-#         {required} {argoptional} {multiple}
-#         {hidden}
-     
-#     option <long> <short> "<desc>" flag <on/off>
-     
-#     section "section name" {sectiondesc="optional section description"}
-     
-#     text "a textual sentence"
diff --git a/appli/gimmick/gimmick_ggo.c b/appli/gimmick/gimmick_ggo.c
deleted file mode 100644 (file)
index 4eda3b8..0000000
+++ /dev/null
@@ -1,1127 +0,0 @@
-/*
-  File autogenerated by gengetopt version 2.20
-  generated with the following command:
-  gengetopt --file-name=gimmick_ggo --include-getopt 
-
-  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 "gimmick_ggo.h"
-
-const char *gengetopt_args_info_purpose = "";
-
-const char *gengetopt_args_info_usage = "Usage: gimmick COMMAND [OPTIONS]";
-
-const char *gengetopt_args_info_description = "";
-
-const char *gengetopt_args_info_help[] = {
-  "  -h, --help              Print help and exit",
-  "  -V, --version           Print version and exit",
-  "\nCOMMANDS:",
-  "  -p, --print             Prints the local database tree  (default=off)",
-  "  -f, --file=<file name>  Adds the file to local database",
-  "  -d, --dir=<path>        Adds the directory to local database",
-  "  -r, --recurse           Recurse into sub-directories  (default=off)",
-  "\nOPTIONS:",
-  "  -v, --verbose=INT       Verbosity level  (default=`1')",
-  "  -D, --debug=INT         Debug messages level  (default=`0')",
-    0
-};
-
-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 int
-cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, 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->print_given = 0 ;
-  args_info->file_given = 0 ;
-  args_info->dir_given = 0 ;
-  args_info->recurse_given = 0 ;
-  args_info->verbose_given = 0 ;
-  args_info->debug_given = 0 ;
-}
-
-static
-void clear_args (struct gengetopt_args_info *args_info)
-{
-  args_info->print_flag = 0;
-  args_info->file_arg = NULL;
-  args_info->file_orig = NULL;
-  args_info->dir_arg = NULL;
-  args_info->dir_orig = NULL;
-  args_info->recurse_flag = 0;
-  args_info->verbose_arg = 1;
-  args_info->verbose_orig = NULL;
-  args_info->debug_arg = 0;
-  args_info->debug_orig = NULL;
-  
-}
-
-static
-void init_args_info(struct gengetopt_args_info *args_info)
-{
-  args_info->help_help = gengetopt_args_info_help[0] ;
-  args_info->version_help = gengetopt_args_info_help[1] ;
-  args_info->print_help = gengetopt_args_info_help[3] ;
-  args_info->file_help = gengetopt_args_info_help[4] ;
-  args_info->dir_help = gengetopt_args_info_help[5] ;
-  args_info->recurse_help = gengetopt_args_info_help[6] ;
-  args_info->verbose_help = gengetopt_args_info_help[8] ;
-  args_info->debug_help = gengetopt_args_info_help[9] ;
-  
-}
-
-void
-cmdline_parser_print_version (void)
-{
-  printf ("%s %s\n", CMDLINE_PARSER_PACKAGE, CMDLINE_PARSER_VERSION);
-}
-
-void
-cmdline_parser_print_help (void)
-{
-  int i = 0;
-  cmdline_parser_print_version ();
-
-  if (strlen(gengetopt_args_info_purpose) > 0)
-    printf("\n%s\n", gengetopt_args_info_purpose);
-
-  printf("\n%s\n\n", gengetopt_args_info_usage);
-
-  if (strlen(gengetopt_args_info_description) > 0)
-    printf("%s\n", gengetopt_args_info_description);
-
-  while (gengetopt_args_info_help[i])
-    printf("%s\n", gengetopt_args_info_help[i++]);
-}
-
-void
-cmdline_parser_init (struct gengetopt_args_info *args_info)
-{
-  clear_given (args_info);
-  clear_args (args_info);
-  init_args_info (args_info);
-}
-
-static void
-cmdline_parser_release (struct gengetopt_args_info *args_info)
-{
-  
-  if (args_info->file_arg)
-    {
-      free (args_info->file_arg); /* free previous argument */
-      args_info->file_arg = 0;
-    }
-  if (args_info->file_orig)
-    {
-      free (args_info->file_orig); /* free previous argument */
-      args_info->file_orig = 0;
-    }
-  if (args_info->dir_arg)
-    {
-      free (args_info->dir_arg); /* free previous argument */
-      args_info->dir_arg = 0;
-    }
-  if (args_info->dir_orig)
-    {
-      free (args_info->dir_orig); /* free previous argument */
-      args_info->dir_orig = 0;
-    }
-  if (args_info->verbose_orig)
-    {
-      free (args_info->verbose_orig); /* free previous argument */
-      args_info->verbose_orig = 0;
-    }
-  if (args_info->debug_orig)
-    {
-      free (args_info->debug_orig); /* free previous argument */
-      args_info->debug_orig = 0;
-    }
-  
-  clear_given (args_info);
-}
-
-int
-cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
-{
-  FILE *outfile;
-  int i = 0;
-
-  outfile = fopen(filename, "w");
-
-  if (!outfile)
-    {
-      fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
-      return EXIT_FAILURE;
-    }
-
-  if (args_info->help_given) {
-    fprintf(outfile, "%s\n", "help");
-  }
-  if (args_info->version_given) {
-    fprintf(outfile, "%s\n", "version");
-  }
-  if (args_info->print_given) {
-    fprintf(outfile, "%s\n", "print");
-  }
-  if (args_info->file_given) {
-    if (args_info->file_orig) {
-      fprintf(outfile, "%s=\"%s\"\n", "file", args_info->file_orig);
-    } else {
-      fprintf(outfile, "%s\n", "file");
-    }
-  }
-  if (args_info->dir_given) {
-    if (args_info->dir_orig) {
-      fprintf(outfile, "%s=\"%s\"\n", "dir", args_info->dir_orig);
-    } else {
-      fprintf(outfile, "%s\n", "dir");
-    }
-  }
-  if (args_info->recurse_given) {
-    fprintf(outfile, "%s\n", "recurse");
-  }
-  if (args_info->verbose_given) {
-    if (args_info->verbose_orig) {
-      fprintf(outfile, "%s=\"%s\"\n", "verbose", args_info->verbose_orig);
-    } else {
-      fprintf(outfile, "%s\n", "verbose");
-    }
-  }
-  if (args_info->debug_given) {
-    if (args_info->debug_orig) {
-      fprintf(outfile, "%s=\"%s\"\n", "debug", args_info->debug_orig);
-    } else {
-      fprintf(outfile, "%s\n", "debug");
-    }
-  }
-  
-  fclose (outfile);
-
-  i = EXIT_SUCCESS;
-  return i;
-}
-
-void
-cmdline_parser_free (struct gengetopt_args_info *args_info)
-{
-  cmdline_parser_release (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, 1);
-}
-
-int
-cmdline_parser2 (int argc, char * const *argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
-{
-  int result;
-
-  result = cmdline_parser_internal (argc, argv, args_info, override, initialize, check_required, NULL);
-
-  if (result == EXIT_FAILURE)
-    {
-      cmdline_parser_free (args_info);
-      exit (EXIT_FAILURE);
-    }
-  
-  return result;
-}
-
-int
-cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
-{
-  int result = EXIT_SUCCESS;
-
-  if (cmdline_parser_required2(args_info, prog_name, NULL) > 0)
-    result = EXIT_FAILURE;
-
-  if (result == EXIT_FAILURE)
-    {
-      cmdline_parser_free (args_info);
-      exit (EXIT_FAILURE);
-    }
-  
-  return result;
-}
-
-int
-cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
-{
-  int error = 0;
-
-  /* checks for required options */
-  
-  /* checks for dependences among options */
-  if (args_info->recurse_given && ! args_info->dir_given)
-    {
-      fprintf (stderr, "%s: '--recurse' ('-r') option depends on option 'dir'%s\n", prog_name, (additional_error ? additional_error : ""));
-      error = 1;
-    }
-
-  return error;
-}
-
-/*
- * Extracted from the glibc source tree, version 2.3.6
- *
- * Licensed under the GPL as per the whole glibc source tree.
- *
- * This file was modified so that getopt_long can be called
- * many times without risking previous memory to be spoiled.
- *
- * Modified by Andre Noll and Lorenzo Bettini for use in
- * GNU gengetopt generated files.
- *
- */
-
-/* 
- * we must include anything we need since this file is not thought to be
- * inserted in a file already using getopt.h
- *
- * Lorenzo
- */
-
-struct option
-{
-  const char *name;
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-static char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-static int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-static int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-static int optopt;
-
-/* This version of `getopt' appears to the caller like standard Unix `getopt'
-   but it behaves differently for the user, since it allows the user
-   to intersperse the options with the other arguments.
-
-   As `getopt' works, it permutes the elements of ARGV so that,
-   when it is done, all the options precede everything else.  Thus
-   all application programs are extended to handle flexible argument order.
-*/
-/*
-   If the field `flag' is not NULL, it points to a variable that is set
-   to the value given in the field `val' when the option is found, but
-   left unchanged if the option is not found.
-
-   To have a long-named option do something other than set an `int' to
-   a compiled-in constant, such as set a value from `custom_optarg', set the
-   option's `flag' field to zero and its `val' field to a nonzero
-   value (the equivalent single-letter option character, if there is
-   one).  For long options that have a zero `flag' field, `getopt'
-   returns the contents of the `val' field.  */
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-#ifndef no_argument
-#define no_argument            0
-#endif
-
-#ifndef required_argument
-#define required_argument      1
-#endif
-
-#ifndef optional_argument
-#define optional_argument      2
-#endif
-
-struct custom_getopt_data {
-       /*
-        * These have exactly the same meaning as the corresponding global variables,
-        * except that they are used for the reentrant versions of getopt.
-        */
-       int custom_optind;
-       int custom_opterr;
-       int custom_optopt;
-       char *custom_optarg;
-
-       /* True if the internal members have been initialized.  */
-       int initialized;
-
-       /*
-        * The next char to be scanned in the option-element in which the last option
-        * character we returned was found.  This allows us to pick up the scan where
-        * we left off.  If this is zero, or a null string, it means resume the scan by
-        * advancing to the next ARGV-element.
-        */
-       char *nextchar;
-
-       /*
-        * Describe the part of ARGV that contains non-options that have been skipped.
-        * `first_nonopt' is the index in ARGV of the first of them; `last_nonopt' is
-        * the index after the last of them.
-        */
-       int first_nonopt;
-       int last_nonopt;
-};
-
-/*
- * the variables optarg, optind, opterr and optopt are renamed with
- * the custom_ prefix so that they don't interfere with getopt ones.
- *
- * Moreover they're static so they are visible only from within the
- * file where this very file will be included.
- */
-
-/*
- * For communication from `custom_getopt' to the caller.  When `custom_getopt' finds an
- * option that takes an argument, the argument value is returned here.
- */
-static char *custom_optarg;
-
-/*
- * Index in ARGV of the next element to be scanned.  This is used for
- * communication to and from the caller and for communication between
- * successive calls to `custom_getopt'.
- *
- * On entry to `custom_getopt', 1 means this is the first call; initialize.
- *
- * When `custom_getopt' returns -1, this is the index of the first of the non-option
- * elements that the caller should itself scan.
- *
- * Otherwise, `custom_optind' communicates from one call to the next how much of ARGV
- * has been scanned so far.
- *
- * 1003.2 says this must be 1 before any call.
- */
-static int custom_optind = 1;
-
-/*
- * Callers store zero here to inhibit the error message for unrecognized
- * options.
- */
-static int custom_opterr = 1;
-
-/*
- * Set to an option character which was unrecognized.  This must be initialized
- * on some systems to avoid linking in the system's own getopt implementation.
- */
-static int custom_optopt = '?';
-
-/*
- * Exchange two adjacent subsequences of ARGV.  One subsequence is elements
- * [first_nonopt,last_nonopt) which contains all the non-options that have been
- * skipped so far.  The other is elements [last_nonopt,custom_optind), which contains
- * all the options processed since those non-options were skipped.
- * `first_nonopt' and `last_nonopt' are relocated so that they describe the new
- * indices of the non-options in ARGV after they are moved.
- */
-static void exchange(char **argv, struct custom_getopt_data *d)
-{
-       int bottom = d->first_nonopt;
-       int middle = d->last_nonopt;
-       int top = d->custom_optind;
-       char *tem;
-
-       /*
-        * Exchange the shorter segment with the far end of the longer segment.
-        * That puts the shorter segment into the right place.  It leaves the
-        * longer segment in the right place overall, but it consists of two
-        * parts that need to be swapped next.
-        */
-       while (top > middle && middle > bottom) {
-               if (top - middle > middle - bottom) {
-                       /* Bottom segment is the short one.  */
-                       int len = middle - bottom;
-                       int i;
-
-                       /* Swap it with the top part of the top segment.  */
-                       for (i = 0; i < len; i++) {
-                               tem = argv[bottom + i];
-                               argv[bottom + i] =
-                                       argv[top - (middle - bottom) + i];
-                               argv[top - (middle - bottom) + i] = tem;
-                       }
-                       /* Exclude the moved bottom segment from further swapping.  */
-                       top -= len;
-               } else {
-                       /* Top segment is the short one.  */
-                       int len = top - middle;
-                       int i;
-
-                       /* Swap it with the bottom part of the bottom segment.  */
-                       for (i = 0; i < len; i++) {
-                               tem = argv[bottom + i];
-                               argv[bottom + i] = argv[middle + i];
-                               argv[middle + i] = tem;
-                       }
-                       /* Exclude the moved top segment from further swapping.  */
-                       bottom += len;
-               }
-       }
-       /* Update records for the slots the non-options now occupy.  */
-       d->first_nonopt += (d->custom_optind - d->last_nonopt);
-       d->last_nonopt = d->custom_optind;
-}
-
-/* Initialize the internal data when the first call is made.  */
-static void custom_getopt_initialize(struct custom_getopt_data *d)
-{
-       /*
-        * Start processing options with ARGV-element 1 (since ARGV-element 0
-        * is the program name); the sequence of previously skipped non-option
-        * ARGV-elements is empty.
-        */
-       d->first_nonopt = d->last_nonopt = d->custom_optind;
-       d->nextchar = NULL;
-       d->initialized = 1;
-}
-
-#define NONOPTION_P (argv[d->custom_optind][0] != '-' || argv[d->custom_optind][1] == '\0')
-
-/* return: zero: continue, nonzero: return given value to user */
-static int shuffle_argv(int argc, char *const *argv,const struct option *longopts,
-       struct custom_getopt_data *d)
-{
-       /*
-        * Give FIRST_NONOPT & LAST_NONOPT rational values if CUSTOM_OPTIND has been
-        * moved back by the user (who may also have changed the arguments).
-        */
-       if (d->last_nonopt > d->custom_optind)
-               d->last_nonopt = d->custom_optind;
-       if (d->first_nonopt > d->custom_optind)
-               d->first_nonopt = d->custom_optind;
-       /*
-        * If we have just processed some options following some
-        * non-options, exchange them so that the options come first.
-        */
-       if (d->first_nonopt != d->last_nonopt &&
-                       d->last_nonopt != d->custom_optind)
-               exchange((char **) argv, d);
-       else if (d->last_nonopt != d->custom_optind)
-               d->first_nonopt = d->custom_optind;
-       /*
-        * Skip any additional non-options and extend the range of
-        * non-options previously skipped.
-        */
-       while (d->custom_optind < argc && NONOPTION_P)
-               d->custom_optind++;
-       d->last_nonopt = d->custom_optind;
-       /*
-        * The special ARGV-element `--' means premature end of options.  Skip
-        * it like a null option, then exchange with previous non-options as if
-        * it were an option, then skip everything else like a non-option.
-        */
-       if (d->custom_optind != argc && !strcmp(argv[d->custom_optind], "--")) {
-               d->custom_optind++;
-               if (d->first_nonopt != d->last_nonopt
-                               && d->last_nonopt != d->custom_optind)
-                       exchange((char **) argv, d);
-               else if (d->first_nonopt == d->last_nonopt)
-                       d->first_nonopt = d->custom_optind;
-               d->last_nonopt = argc;
-               d->custom_optind = argc;
-       }
-       /*
-        * If we have done all the ARGV-elements, stop the scan and back over
-        * any non-options that we skipped and permuted.
-        */
-       if (d->custom_optind == argc) {
-               /*
-                * Set the next-arg-index to point at the non-options that we
-                * previously skipped, so the caller will digest them.
-                */
-               if (d->first_nonopt != d->last_nonopt)
-                       d->custom_optind = d->first_nonopt;
-               return -1;
-       }
-       /*
-        * If we have come to a non-option and did not permute it, either stop
-        * the scan or describe it to the caller and pass it by.
-        */
-       if (NONOPTION_P) {
-               d->custom_optarg = argv[d->custom_optind++];
-               return 1;
-       }
-       /*
-        * We have found another option-ARGV-element. Skip the initial
-        * punctuation.
-        */
-       d->nextchar = (argv[d->custom_optind] + 1 + (longopts != NULL && argv[d->custom_optind][1] == '-'));
-       return 0;
-}
-
-/*
- * Check whether the ARGV-element is a long option.
- *
- * If there's a long option "fubar" and the ARGV-element is "-fu", consider
- * that an abbreviation of the long option, just like "--fu", and not "-f" with
- * arg "u".
- *
- * This distinction seems to be the most useful approach.
- *
- */
-static int check_long_opt(int argc, char *const *argv, const char *optstring,
-               const struct option *longopts, int *longind,
-               int print_errors, struct custom_getopt_data *d)
-{
-       char *nameend;
-       const struct option *p;
-       const struct option *pfound = NULL;
-       int exact = 0;
-       int ambig = 0;
-       int indfound = -1;
-       int option_index;
-
-       for (nameend = d->nextchar; *nameend && *nameend != '='; nameend++)
-               /* Do nothing.  */ ;
-
-       /* Test all long options for either exact match or abbreviated matches */
-       for (p = longopts, option_index = 0; p->name; p++, option_index++)
-               if (!strncmp(p->name, d->nextchar, nameend - d->nextchar)) {
-                       if ((unsigned int) (nameend - d->nextchar)
-                                       == (unsigned int) strlen(p->name)) {
-                               /* Exact match found.  */
-                               pfound = p;
-                               indfound = option_index;
-                               exact = 1;
-                               break;
-                       } else if (pfound == NULL) {
-                               /* First nonexact match found.  */
-                               pfound = p;
-                               indfound = option_index;
-                       } else if (pfound->has_arg != p->has_arg
-                                       || pfound->flag != p->flag
-                                       || pfound->val != p->val)
-                               /* Second or later nonexact match found.  */
-                               ambig = 1;
-               }
-       if (ambig && !exact) {
-               if (print_errors) {
-                       fprintf(stderr,
-                               "%s: option `%s' is ambiguous\n",
-                               argv[0], argv[d->custom_optind]);
-               }
-               d->nextchar += strlen(d->nextchar);
-               d->custom_optind++;
-               d->custom_optopt = 0;
-               return '?';
-       }
-       if (pfound) {
-               option_index = indfound;
-               d->custom_optind++;
-               if (*nameend) {
-                       if (pfound->has_arg != no_argument)
-                               d->custom_optarg = nameend + 1;
-                       else {
-                               if (print_errors) {
-                                       if (argv[d->custom_optind - 1][1] == '-') {
-                                               /* --option */
-                                               fprintf(stderr, "%s: option `--%s' doesn't allow an argument\n",
-                                                       argv[0], pfound->name);
-                                       } else {
-                                               /* +option or -option */
-                                               fprintf(stderr, "%s: option `%c%s' doesn't allow an argument\n",
-                                                       argv[0], argv[d->custom_optind - 1][0], pfound->name);
-                                       }
-
-                               }
-                               d->nextchar += strlen(d->nextchar);
-                               d->custom_optopt = pfound->val;
-                               return '?';
-                       }
-               } else if (pfound->has_arg == required_argument) {
-                       if (d->custom_optind < argc)
-                               d->custom_optarg = argv[d->custom_optind++];
-                       else {
-                               if (print_errors) {
-                                       fprintf(stderr,
-                                               "%s: option `%s' requires an argument\n",
-                                               argv[0],
-                                               argv[d->custom_optind - 1]);
-                               }
-                               d->nextchar += strlen(d->nextchar);
-                               d->custom_optopt = pfound->val;
-                               return optstring[0] == ':' ? ':' : '?';
-                       }
-               }
-               d->nextchar += strlen(d->nextchar);
-               if (longind != NULL)
-                       *longind = option_index;
-               if (pfound->flag) {
-                       *(pfound->flag) = pfound->val;
-                       return 0;
-               }
-               return pfound->val;
-       }
-       /*
-        * Can't find it as a long option.  If this is not getopt_long_only, or
-        * the option starts with '--' or is not a valid short option, then
-        * it's an error.  Otherwise interpret it as a short option.
-        */
-       if (print_errors) {
-               if (argv[d->custom_optind][1] == '-') {
-                       /* --option */
-                       fprintf(stderr,
-                               "%s: unrecognized option `--%s'\n",
-                               argv[0], d->nextchar);
-               } else {
-                       /* +option or -option */
-                       fprintf(stderr,
-                               "%s: unrecognized option `%c%s'\n",
-                               argv[0], argv[d->custom_optind][0],
-                               d->nextchar);
-               }
-       }
-       d->nextchar = (char *) "";
-       d->custom_optind++;
-       d->custom_optopt = 0;
-       return '?';
-}
-
-static int check_short_opt(int argc, char *const *argv, const char *optstring,
-               int print_errors, struct custom_getopt_data *d)
-{
-       char c = *d->nextchar++;
-       char *temp = strchr(optstring, c);
-
-       /* Increment `custom_optind' when we start to process its last character.  */
-       if (*d->nextchar == '\0')
-               ++d->custom_optind;
-       if (!temp || c == ':') {
-               if (print_errors)
-                       fprintf(stderr, "%s: invalid option -- %c\n", argv[0], c);
-
-               d->custom_optopt = c;
-               return '?';
-       }
-       if (temp[1] == ':') {
-               if (temp[2] == ':') {
-                       /* This is an option that accepts an argument optionally.  */
-                       if (*d->nextchar != '\0') {
-                               d->custom_optarg = d->nextchar;
-                               d->custom_optind++;
-                       } else
-                               d->custom_optarg = NULL;
-                       d->nextchar = NULL;
-               } else {
-                       /* This is an option that requires an argument.  */
-                       if (*d->nextchar != '\0') {
-                               d->custom_optarg = d->nextchar;
-                               /*
-                                * If we end this ARGV-element by taking the
-                                * rest as an arg, we must advance to the next
-                                * element now.
-                                */
-                               d->custom_optind++;
-                       } else if (d->custom_optind == argc) {
-                               if (print_errors) {
-                                       fprintf(stderr,
-                                               "%s: option requires an argument -- %c\n",
-                                               argv[0], c);
-                               }
-                               d->custom_optopt = c;
-                               if (optstring[0] == ':')
-                                       c = ':';
-                               else
-                                       c = '?';
-                       } else
-                               /*
-                                * We already incremented `custom_optind' once;
-                                * increment it again when taking next ARGV-elt
-                                * as argument.
-                                */
-                               d->custom_optarg = argv[d->custom_optind++];
-                       d->nextchar = NULL;
-               }
-       }
-       return c;
-}
-
-/*
- * Scan elements of ARGV for option characters given in OPTSTRING.
- *
- * If an element of ARGV starts with '-', and is not exactly "-" or "--",
- * then it is an option element.  The characters of this element
- * (aside from the initial '-') are option characters.  If `getopt'
- * is called repeatedly, it returns successively each of the option characters
- * from each of the option elements.
- *
- * If `getopt' finds another option character, it returns that character,
- * updating `custom_optind' and `nextchar' so that the next call to `getopt' can
- * resume the scan with the following option character or ARGV-element.
- *
- * If there are no more option characters, `getopt' returns -1.
- * Then `custom_optind' is the index in ARGV of the first ARGV-element
- * that is not an option.  (The ARGV-elements have been permuted
- * so that those that are not options now come last.)
- *
- * OPTSTRING is a string containing the legitimate option characters.
- * If an option character is seen that is not listed in OPTSTRING,
- * return '?' after printing an error message.  If you set `custom_opterr' to
- * zero, the error message is suppressed but we still return '?'.
- *
- * If a char in OPTSTRING is followed by a colon, that means it wants an arg,
- * so the following text in the same ARGV-element, or the text of the following
- * ARGV-element, is returned in `custom_optarg'.  Two colons mean an option that
- * wants an optional arg; if there is text in the current ARGV-element,
- * it is returned in `custom_optarg', otherwise `custom_optarg' is set to zero.
- *
- * If OPTSTRING starts with `-' or `+', it requests different methods of
- * handling the non-option ARGV-elements.
- * See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
- *
- * Long-named options begin with `--' instead of `-'.
- * Their names may be abbreviated as long as the abbreviation is unique
- * or is an exact match for some defined option.  If they have an
- * argument, it follows the option name in the same ARGV-element, separated
- * from the option name by a `=', or else the in next ARGV-element.
- * When `getopt' finds a long-named option, it returns 0 if that option's
- * `flag' field is nonzero, the value of the option's `val' field
- * if the `flag' field is zero.
- *
- * The elements of ARGV aren't really const, because we permute them.
- * But we pretend they're const in the prototype to be compatible
- * with other systems.
- *
- * LONGOPTS is a vector of `struct option' terminated by an
- * element containing a name which is zero.
- *
- * LONGIND returns the index in LONGOPT of the long-named option found.
- * It is only valid when a long-named option has been found by the most
- * recent call.
- *
- * Return the option character from OPTS just read.  Return -1 when there are
- * no more options.  For unrecognized options, or options missing arguments,
- * `custom_optopt' is set to the option letter, and '?' is returned.
- *
- * The OPTS string is a list of characters which are recognized option letters,
- * optionally followed by colons, specifying that that letter takes an
- * argument, to be placed in `custom_optarg'.
- *
- * If a letter in OPTS is followed by two colons, its argument is optional.
- * This behavior is specific to the GNU `getopt'.
- *
- * The argument `--' causes premature termination of argument scanning,
- * explicitly telling `getopt' that there are no more options.  If OPTS begins
- * with `--', then non-option arguments are treated as arguments to the option
- * '\0'.  This behavior is specific to the GNU `getopt'.
- */
-
-static int getopt_internal_r(int argc, char *const *argv, const char *optstring,
-               const struct option *longopts, int *longind,
-               struct custom_getopt_data *d)
-{
-       int ret, print_errors = d->custom_opterr;
-
-       if (optstring[0] == ':')
-               print_errors = 0;
-       if (argc < 1)
-               return -1;
-       d->custom_optarg = NULL;
-
-       /* 
-        * This is a big difference with GNU getopt, since optind == 0
-        * means initialization while here 1 means first call.
-        */
-       if (d->custom_optind == 0 || !d->initialized) {
-               if (d->custom_optind == 0)
-                       d->custom_optind = 1;   /* Don't scan ARGV[0], the program name.  */
-               custom_getopt_initialize(d);
-       }
-       if (d->nextchar == NULL || *d->nextchar == '\0') {
-               ret = shuffle_argv(argc, argv, longopts, d);
-               if (ret)
-                       return ret;
-       }
-       if (longopts && (argv[d->custom_optind][1] == '-' ))
-               return check_long_opt(argc, argv, optstring, longopts,
-                       longind, print_errors, d);
-       return check_short_opt(argc, argv, optstring, print_errors, d);
-}
-
-static int custom_getopt_internal(int argc, char *const *argv, const char *optstring,
-       const struct option *longopts, int *longind)
-{
-       int result;
-       /* Keep a global copy of all internal members of d */
-       static struct custom_getopt_data d;
-
-       d.custom_optind = custom_optind;
-       d.custom_opterr = custom_opterr;
-       result = getopt_internal_r(argc, argv, optstring, longopts,
-               longind, &d);
-       custom_optind = d.custom_optind;
-       custom_optarg = d.custom_optarg;
-       custom_optopt = d.custom_optopt;
-       return result;
-}
-
-static int custom_getopt_long (int argc, char *const *argv, const char *options,
-       const struct option *long_options, int *opt_index)
-{
-       return custom_getopt_internal(argc, argv, options, long_options,
-               opt_index);
-}
-
-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 = 0;
-  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' },
-        { "print",     0, NULL, 'p' },
-        { "file",      1, NULL, 'f' },
-        { "dir",       1, NULL, 'd' },
-        { "recurse",   0, NULL, 'r' },
-        { "verbose",   1, NULL, 'v' },
-        { "debug",     1, NULL, 'D' },
-        { NULL,        0, NULL, 0 }
-      };
-
-      stop_char = 0;
-      custom_optarg = optarg;
-      custom_optind = optind;
-      custom_opterr = opterr;
-      custom_optopt = optopt;
-
-      c = custom_getopt_long (argc, argv, "hVpf:d:rv:D:", long_options, &option_index);
-
-      optarg = custom_optarg;
-      optind = custom_optind;
-      opterr = custom_opterr;
-      optopt = custom_optopt;
-
-      if (c == -1) break;      /* Exit from `while (1)' loop.  */
-
-      switch (c)
-        {
-        case 'h':      /* Print help and exit.  */
-          cmdline_parser_print_help ();
-          cmdline_parser_free (&local_args_info);
-          exit (EXIT_SUCCESS);
-
-        case 'V':      /* Print version and exit.  */
-          cmdline_parser_print_version ();
-          cmdline_parser_free (&local_args_info);
-          exit (EXIT_SUCCESS);
-
-        case 'p':      /* Prints the local database tree.  */
-          if (local_args_info.print_given)
-            {
-              fprintf (stderr, "%s: `--print' (`-p') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
-              goto failure;
-            }
-          if (args_info->print_given && ! override)
-            continue;
-          local_args_info.print_given = 1;
-          args_info->print_given = 1;
-          args_info->print_flag = !(args_info->print_flag);
-          break;
-
-        case 'f':      /* Adds the file to local database.  */
-          if (local_args_info.file_given)
-            {
-              fprintf (stderr, "%s: `--file' (`-f') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
-              goto failure;
-            }
-          if (args_info->file_given && ! override)
-            continue;
-          local_args_info.file_given = 1;
-          args_info->file_given = 1;
-          if (args_info->file_arg)
-            free (args_info->file_arg); /* free previous string */
-          args_info->file_arg = gengetopt_strdup (optarg);
-          if (args_info->file_orig)
-            free (args_info->file_orig); /* free previous string */
-          args_info->file_orig = gengetopt_strdup (optarg);
-          break;
-
-        case 'd':      /* Adds the directory to local database.  */
-          if (local_args_info.dir_given)
-            {
-              fprintf (stderr, "%s: `--dir' (`-d') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
-              goto failure;
-            }
-          if (args_info->dir_given && ! override)
-            continue;
-          local_args_info.dir_given = 1;
-          args_info->dir_given = 1;
-          if (args_info->dir_arg)
-            free (args_info->dir_arg); /* free previous string */
-          args_info->dir_arg = gengetopt_strdup (optarg);
-          if (args_info->dir_orig)
-            free (args_info->dir_orig); /* free previous string */
-          args_info->dir_orig = gengetopt_strdup (optarg);
-          break;
-
-        case 'r':      /* Recurse into sub-directories.  */
-          if (local_args_info.recurse_given)
-            {
-              fprintf (stderr, "%s: `--recurse' (`-r') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
-              goto failure;
-            }
-          if (args_info->recurse_given && ! override)
-            continue;
-          local_args_info.recurse_given = 1;
-          args_info->recurse_given = 1;
-          args_info->recurse_flag = !(args_info->recurse_flag);
-          break;
-
-        case 'v':      /* Verbosity level.  */
-          if (local_args_info.verbose_given)
-            {
-              fprintf (stderr, "%s: `--verbose' (`-v') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
-              goto failure;
-            }
-          if (args_info->verbose_given && ! override)
-            continue;
-          local_args_info.verbose_given = 1;
-          args_info->verbose_given = 1;
-          args_info->verbose_arg = strtol (optarg, &stop_char, 0);
-          if (!(stop_char && *stop_char == '\0')) {
-            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
-            goto failure;
-          }
-          if (args_info->verbose_orig)
-            free (args_info->verbose_orig); /* free previous string */
-          args_info->verbose_orig = gengetopt_strdup (optarg);
-          break;
-
-        case 'D':      /* Debug messages level.  */
-          if (local_args_info.debug_given)
-            {
-              fprintf (stderr, "%s: `--debug' (`-D') option given more than once%s\n", argv[0], (additional_error ? additional_error : ""));
-              goto failure;
-            }
-          if (args_info->debug_given && ! override)
-            continue;
-          local_args_info.debug_given = 1;
-          args_info->debug_given = 1;
-          args_info->debug_arg = strtol (optarg, &stop_char, 0);
-          if (!(stop_char && *stop_char == '\0')) {
-            fprintf(stderr, "%s: invalid numeric value: %s\n", argv[0], optarg);
-            goto failure;
-          }
-          if (args_info->debug_orig)
-            free (args_info->debug_orig); /* free previous string */
-          args_info->debug_orig = gengetopt_strdup (optarg);
-          break;
-
-
-        case 0:        /* Long option with no short option */
-        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 */
-
-
-
-  if (check_required)
-    {
-      error += cmdline_parser_required2 (args_info, argv[0], additional_error);
-    }
-
-  cmdline_parser_release (&local_args_info);
-
-  if ( error )
-    return (EXIT_FAILURE);
-
-  return 0;
-
-failure:
-  
-  cmdline_parser_release (&local_args_info);
-  return (EXIT_FAILURE);
-}
diff --git a/appli/gimmick/gimmick_ggo.h b/appli/gimmick/gimmick_ggo.h
deleted file mode 100644 (file)
index c9f2443..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/* gimmick_ggo.h */
-
-/* File autogenerated by gengetopt version 2.20  */
-
-#ifndef GIMMICK_GGO_H
-#define GIMMICK_GGO_H
-
-/* If we use autoconf.  */
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-#ifndef CMDLINE_PARSER_PACKAGE
-#define CMDLINE_PARSER_PACKAGE "gimmick"
-#endif
-
-#ifndef CMDLINE_PARSER_VERSION
-#define CMDLINE_PARSER_VERSION "0.1.0"
-#endif
-
-struct gengetopt_args_info
-{
-  const char *help_help; /* Print help and exit help description.  */
-  const char *version_help; /* Print version and exit help description.  */
-  int print_flag;      /* Prints the local database tree (default=off).  */
-  const char *print_help; /* Prints the local database tree help description.  */
-  char * file_arg;     /* Adds the file to local database.  */
-  char * file_orig;    /* Adds the file to local database original value given at command line.  */
-  const char *file_help; /* Adds the file to local database help description.  */
-  char * dir_arg;      /* Adds the directory to local database.  */
-  char * dir_orig;     /* Adds the directory to local database original value given at command line.  */
-  const char *dir_help; /* Adds the directory to local database help description.  */
-  int recurse_flag;    /* Recurse into sub-directories (default=off).  */
-  const char *recurse_help; /* Recurse into sub-directories help description.  */
-  int verbose_arg;     /* Verbosity level (default='1').  */
-  char * verbose_orig; /* Verbosity level original value given at command line.  */
-  const char *verbose_help; /* Verbosity level help description.  */
-  int debug_arg;       /* Debug messages level (default='0').  */
-  char * debug_orig;   /* Debug messages level original value given at command line.  */
-  const char *debug_help; /* Debug messages level help description.  */
-  
-  int help_given ;     /* Whether help was given.  */
-  int version_given ;  /* Whether version was given.  */
-  int print_given ;    /* Whether print was given.  */
-  int file_given ;     /* Whether file was given.  */
-  int dir_given ;      /* Whether dir was given.  */
-  int recurse_given ;  /* Whether recurse was given.  */
-  int verbose_given ;  /* Whether verbose was given.  */
-  int debug_given ;    /* Whether debug was given.  */
-
-} ;
-
-extern const char *gengetopt_args_info_purpose;
-extern const char *gengetopt_args_info_usage;
-extern const char *gengetopt_args_info_help[];
-
-int cmdline_parser (int argc, char * const *argv,
-  struct gengetopt_args_info *args_info);
-int cmdline_parser2 (int argc, char * const *argv,
-  struct gengetopt_args_info *args_info,
-  int override, int initialize, int check_required);
-int cmdline_parser_file_save(const char *filename,
-  struct gengetopt_args_info *args_info);
-
-void cmdline_parser_print_help(void);
-void cmdline_parser_print_version(void);
-
-void cmdline_parser_init (struct gengetopt_args_info *args_info);
-void cmdline_parser_free (struct gengetopt_args_info *args_info);
-
-int cmdline_parser_required (struct gengetopt_args_info *args_info,
-  const char *prog_name);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-#endif /* GIMMICK_GGO_H */
index 1ce38ed72a6ad3cc28d1333d129fdcfc90307cb0..274efe70ee6f7d48cbf1fd82c677fa545513c0f1 100644 (file)
@@ -1,53 +1,89 @@
+#include <boost/program_options.hpp>
+
+using namespace boost;
+namespace po = boost::program_options;
+
 #include <creaImageIOGimmick.h>
 #include <creaMessageManager.h>
-#include <gimmick_ggo.h>
 
+using namespace std;
 
-int main(int argc, char* argv[])
+int main(int ac, char* av[])
 {
 
-  gengetopt_args_info args;
-  if (cmdline_parser (argc, argv, &args) != 0) return 0 ;
-     
-  creaImageIO::Gimmick g;
-  if (args.verbose_given) g.SetMessageLevel(args.verbose_arg);
-  if (args.debug_given) g.SetDebugMessageLevel(args.debug_arg);
-    
-  bool something_to_do = 
-    args.dir_given |
-    args.file_given |
-    args.print_given;
-
-  if (!something_to_do)
-    {
-      std::cout << "Nothing to do !" << std::endl;
-      return 0;
-    }
+       creaImageIO::Gimmick g;
+       int verb,deb;
+       std::string handler("Local database");
+
+       //Describes first group of options
+       po::options_description generic("GENERIC");
+       generic.add_options()
+    ("help,h", "Print help and exit")
+       ("version,V", "Print version and exit");
+
+       //Describes second group of options
+       po::options_description command("COMMANDS");
+       command.add_options()
+    ("print,p","Prints the local database tree  (default=off)")
+    ("file,f",po::value< vector<string> >(),"Adds the file to the local database")
+       ("dir,d",po::value< vector<string> >(),"Adds the directory to the local database")
+       ("recurse,r","Recurse into sub-directories  (default=off)");
+
+       //Describes third group of options
+       po::options_description option("OPTIONS");
+       option.add_options()
+    ("verbose,v",po::value<int>(&verb),"Verbosity level (default=`1')")
+       ("debug,D",po::value<int>(&deb),"Debug messages level (default=`0')");
+
+
+       //Adds the groups into a big one
+       po::options_description cmdline_options;
+       cmdline_options.add(generic).add(command).add(option);
+
+       //Adds the corresponding variables
+       po::variables_map vm;
+       po::store(po::parse_command_line(ac, av, cmdline_options), vm);
+       po::notify(vm);    
+
+       //Does something on each option
+       //GENERIC
+       if (vm.count("help")) {
+               cout << "Usage: gimmick COMMAND [OPTIONS]:\n";
+               cout << cmdline_options << "\n";
+       }
+       if (vm.count("version")) {
+               cout << "gimmick 0.1.0\n";
+       }
+
+       //OPTIONS
+       if (vm.count("verbose")) {
+               g.SetMessageLevel(verb);
+               cout << "Verbose level is now "<<verb<<"\n";
+       }
+       if (vm.count("debug")) {
+               g.SetDebugMessageLevel(deb);
+               cout << "Debug level is now "<<deb<<"\n";
+       }
 
-  std::string handler("Local database");
-  try
+       //COMMANDS
+       if(vm.count("print")||vm.count("file")||vm.count("dir"))
+       try
     {
-      g.Initialize();
-      
-      if (args.file_given) 
-       {
-         std::vector<std::string> files;
-         // TO DO : multiple files given
-         files.push_back(args.file_arg);
-         g.AddFiles(handler,files);
+     g.Initialize();
+       if (vm.count("print")) {
+               g.GetTreeHandler(handler)->LoadChildren(0,0);
+               g.Print(handler);
        }
-      if (args.dir_given) 
-       {
-         g.AddDir(handler,args.dir_arg, args.recurse_given);
+       if (vm.count("file")) {
+               std::vector<std::string> files=vm["file"].as< vector<string> >();
+               cout << "Include paths are: " << vm["file"].as< vector<string> >().front() << "\n";
+        g.AddFiles(handler,files);
        }
-      
-      if (args.print_given) 
-       {
-         g.GetTreeHandler(handler)->LoadChildren(0,0);
-         g.Print(handler);
+       if (vm.count("dir")) {
+               std::vector<std::string> dirs=vm["dir"].as< vector<string> >();
+         g.AddDir(handler,dirs.front(), vm.count("recurse"));
        }
-      
-      g.Finalize();
+        g.Finalize();
     }
   catch (crea::Exception e)
     {