On 08/08/12 23:39, Manuel H wrote:
> Hello!
>
> Currently i'm struggling with creating a portable shell-script out of my
> options-definition file. Here is my options.def file:
>
> [...]
>
> When calling autogen with my definitions-file as only option, AutoGen
> should write the generated shell script to standard output -- if i
> interpret the text in the first paragraph of chapter 7.12.2 of the
> AutoGen manual correctly.
>
> My second attempt was to use getdefs, but this will result in an error:
>
>       getdefs input=options.def

"getdefs" is for extracting special markup comments into autogen definitions.
Your "options.def" file is already in autogen definitions format.
So, no, that won't work.

WRT creating a shell script to parse options, perhaps it isn't clear enough.
You must go through several steps:

1.  generate C source
2.  compile a program that emits the shell script
3.  run that program
4.  incorporate the resulting output into your script.

That would be:

$ autogen joiner-opts.def
   # NOTE: do not use options.def as "options.h" conflicts
   # note to self:  fix this
$ cc -o gen-joiner-opts -DTEST_JOINER_OPTS joiner-opts.c $(
     autoopts-config cflags ldflags)
$ ./gen-joiner-opts -o joiner-opts.sh
$ cat joiner-opts.sh

#! /bin/bash
# # # # # # # # # # -- do not modify this marker --
#
#  DO NOT EDIT THIS SECTION OF joiner-opts.sh
#
#  From here to the next `-- do not modify this marker --',
#  the text has been generated Thursday August  9, 2012 at 07:34:59 AM PDT
#  From the JOINER option definitions
#
JOINER_LONGUSAGE_TEXT='joiner - File joiner
USAGE:  joiner [ <option-name>[{=| }<val>] ]...
    Arg Option-Name    Description
    Fil basefile       The basefile...
    no  help           Display extended usage information and exit

All arguments are named options.'

JOINER_USAGE_TEXT='joiner - File joiner
USAGE:  joiner [ <option-name>[{=| }<val>] ]...
    Arg Option-Name    Description
    Fil basefile       The basefile...
    no  help           Display extended usage information and exit

All arguments are named options.'


JOINER_BASEFILE=${JOINER_BASEFILE}
JOINER_BASEFILE_set=false
export JOINER_BASEFILE

OPT_ARG=$1
while [ $# -gt 0 ]
do
     OPT_ELEMENT=''
     OPT_ARG_VAL=''
     OPT_ARG=${1}
         OPT_CODE=`echo "X${OPT_ARG}"|sed 's/^X-*//'`
         shift
         OPT_ARG=$1
         case "${OPT_CODE}" in *=* )
             OPT_ARG_VAL=`echo "${OPT_CODE}"|sed 's/^[^=]*=//'`
             OPT_CODE=`echo "${OPT_CODE}"|sed 's/=.*$//'` ;; esac
         case "${OPT_CODE}" in
         'ba' | \
         'bas' | \
         'base' | \
         'basef' | \
         'basefi' | \
         'basefil' | \
         'basefile' )
             if [ -n "${JOINER_BASEFILE}" ] && ${JOINER_BASEFILE_set} ; then
                 echo Error:  duplicate BASEFILE option >&2
                 echo "$JOINER_USAGE_TEXT"
                 exit 1 ; fi
             JOINER_BASEFILE_set=true
             OPT_NAME='BASEFILE'
             OPT_ARG_NEEDED=YES
             ;;

         'he' | \
         'hel' | \
         'help' )
             echo "$JOINER_LONGUSAGE_TEXT"
             exit 0
             ;;
[....]

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Autogen-users mailing list
Autogen-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/autogen-users

Reply via email to