aboutsummaryrefslogtreecommitdiff
path: root/src/getopt.m4
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-03-16 17:17:27 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2009-03-16 17:17:27 +0200
commit08057b45c5baad283f7132b64faa05018ff2f5f7 (patch)
treebbeefaa36b0542a25cfdf29cc68c71b03afd4d2f /src/getopt.m4
parent4385b872616eba08c2b8c8b7f465e81ff379b43c (diff)
downloadidest-08057b45c5baad283f7132b64faa05018ff2f5f7.tar.gz
idest-08057b45c5baad283f7132b64faa05018ff2f5f7.tar.bz2
Add framework for Guile scripting.
* am/guile.m4: New file. * Makefile.am (ACLOCAL_AMFLAGS): Add -I am * configure.ac: Check for Guile. * src/Makefile.am (idest_SOURCES): guile.c (INCLUDES,LDADD): Add guile variables. * src/cmdline.opt: New options: --script and --function. * src/getopt.m4: Support conditional compilation. * src/idest.h (guile_debug, guile_script, guile_function): New externs. * src/guile.c: New file.
Diffstat (limited to 'src/getopt.m4')
-rw-r--r--src/getopt.m451
1 files changed, 40 insertions, 11 deletions
diff --git a/src/getopt.m4 b/src/getopt.m4
index a086c76..44e2408 100644
--- a/src/getopt.m4
+++ b/src/getopt.m4
@@ -64,25 +64,40 @@ dnl GROUP(STRING)
64dnl Begin a named group of options 64dnl Begin a named group of options
65dnl 65dnl
66define([<GROUP>],[<dnl 66define([<GROUP>],[<dnl
67divert(3) 67divert(3)ifdef([<IFCOND>],[<
68 { NULL, NULL, 0, N_("prep([<$1>])") }, 68#ifdef IFCOND>])
69 { NULL, NULL, 0, N_("prep([<$1>])") },dnl
70ifdef([<IFCOND>],[<
71#endif>])
69divert(-1)>]) 72divert(-1)>])
70 73
71define([<__GATHER_OPTIONS>],[< 74define([<__GATHER_OPTIONS>],[<
72define([<KEY>],ifelse([<$2>],,[<OPTION_>]upcase(patsubst($1,-,_)),'$2')) 75define([<KEY>],ifelse([<$2>],,[<OPTION_>]upcase(patsubst($1,-,_)),'$2'))
73ifelse([<$2>],,[< 76ifelse([<$2>],,[<
74divert(1) 77divert(1)ifdef([<IFCOND>],[<
75 KEY, 78#ifdef IFCOND>])
79 KEY,dnl
80ifdef([<IFCOND>],[<
81#endif>])
76divert(-1) 82divert(-1)
77>]) 83>])
78define([<SELECTOR>],ifdef([<SELECTOR>],SELECTOR) case KEY:) 84define([<SELECTOR>],ifdef([<SELECTOR>],SELECTOR) case KEY:)
79ifelse([<$1>],,,[< 85ifelse([<$1>],,,[<
80divert(2) 86divert(2)ifdef([<IFCOND>],[<
81 { "$1", ARGTYPE, 0, KEY }, 87#ifdef IFCOND>])
88 { "$1", ARGTYPE, 0, KEY },dnl
89ifdef([<IFCOND>],[<
90#endif>])
82divert(-1)>]) 91divert(-1)>])
83dnl 92dnl
84define([<SHORT_OPTS>],SHORT_OPTS[<>]dnl 93define([<SHORT_OPTS>],SHORT_OPTS[<>]dnl
85ifelse([<$2>],,,$2[<>]ifelse(ARGTYPE,[<no_argument>],,ARGTYPE,[<required_argument>],:,ARGTYPE,[<optional_argument>],::))) 94ifelse([<$2>],,,dnl
95ifdef([<IFCOND>],[<
96#ifdef IFCOND>])
97"$2[<>]ifelse(ARGTYPE,[<no_argument>],,ARGTYPE,[<required_argument>],:,ARGTYPE,[<optional_argument>],::)"dnl
98ifdef([<IFCOND>],[<
99#endif
100>])))
86dnl 101dnl
87ifelse([<$1>],,,dnl 102ifelse([<$1>],,,dnl
88[<define([<LONG_TAG>],ifelse(LONG_TAG,,[<--$1>],[<LONG_TAG; --$1>]))>]) 103[<define([<LONG_TAG>],ifelse(LONG_TAG,,[<--$1>],[<LONG_TAG; --$1>]))>])
@@ -118,6 +133,12 @@ patsubst([<$3>],[<\[.*\]>]),,[<optional_argument>],dnl
118__GATHER_OPTIONS($@) 133__GATHER_OPTIONS($@)
119>]) 134>])
120 135
136define([<IFDEF>],[<
137pushdef([<IFCOND>],[<$1>])
138$2
139popdef([<IFCOND>])
140>])
141
121dnl ALIAS(long-opt, short-opt) 142dnl ALIAS(long-opt, short-opt)
122dnl Declare aliases for the previous OPTION statement. 143dnl Declare aliases for the previous OPTION statement.
123dnl long-opt Long option. 144dnl long-opt Long option.
@@ -135,12 +156,16 @@ dnl statement, with optional ALIAS statements in between.
135dnl 156dnl
136define([<BEGIN>],[< 157define([<BEGIN>],[<
137ifelse([<DOCSTRING>],,,[< 158ifelse([<DOCSTRING>],,,[<
138divert(3) 159divert(3)dnl
160ifdef([<IFCOND>],[<
161#ifdef IFCOND>])
139 { "translit(dnl 162 { "translit(dnl
140ifelse(SHORT_TAG,,LONG_TAG,[<SHORT_TAG[<>]ifelse(LONG_TAG,,,; LONG_TAG)>]), 163ifelse(SHORT_TAG,,LONG_TAG,[<SHORT_TAG[<>]ifelse(LONG_TAG,,,; LONG_TAG)>]),
141 [<;>],[<,>])", ifelse(ARGNAME,,[<NULL, 0>], 164 [<;>],[<,>])", ifelse(ARGNAME,,[<NULL, 0>],
142[<ifelse(ARGTYPE,[<optional_argument>], 165[<ifelse(ARGTYPE,[<optional_argument>],
143[<patsubst(ARGNAME,[<\[\(.*\)\]>],[<N_("\1"), 1>])>],[<N_("ARGNAME"), 0>])>]), N_("DOCSTRING") }, 166[<patsubst(ARGNAME,[<\[\(.*\)\]>],[<N_("\1"), 1>])>],[<N_("ARGNAME"), 0>])>]), N_("DOCSTRING") },dnl
167ifdef([<IFCOND>],[<
168#endif>])
144divert(-1)>]) 169divert(-1)>])
145popdef([<ARGTYPE>]) 170popdef([<ARGTYPE>])
146popdef([<ARGNAME>]) 171popdef([<ARGNAME>])
@@ -148,6 +173,8 @@ popdef([<DOCSTRING>])
148divert(4)dnl 173divert(4)dnl
149popdef([<LONG_TAG>])dnl 174popdef([<LONG_TAG>])dnl
150popdef([<SHORT_TAG>])dnl 175popdef([<SHORT_TAG>])dnl
176ifdef([<IFCOND>],[<
177#ifdef IFCOND>])
151 SELECTOR 178 SELECTOR
152 { 179 {
153>]) 180>])
@@ -157,7 +184,9 @@ dnl Finish the associated action
157dnl 184dnl
158define([<END>],[< 185define([<END>],[<
159 break; 186 break;
160 } 187 }dnl
188ifdef([<IFCOND>],[<
189#endif>])
161divert(-1) 190divert(-1)
162undefine([<SELECTOR>])>]) 191undefine([<SELECTOR>])>])
163 192
@@ -173,7 +202,7 @@ define([<GETOPT>],[<
173 int c; 202 int c;
174 203
175ifelse([<$#>],3,opterr = 0;) 204ifelse([<$#>],3,opterr = 0;)
176 while ((c = getopt_long($1, $2, "SHORT_OPTS", 205 while ((c = getopt_long($1, $2, SHORT_OPTS,
177 long_options, NULL)) != EOF) 206 long_options, NULL)) != EOF)
178 { 207 {
179 switch (c) 208 switch (c)

Return to:

Send suggestions and report system problems to the System administrator.