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
[email protected]
https://lists.sourceforge.net/lists/listinfo/autogen-users