aboutsummaryrefslogtreecommitdiff
path: root/mfd/snarf.m4
diff options
context:
space:
mode:
Diffstat (limited to 'mfd/snarf.m4')
-rw-r--r--mfd/snarf.m421
1 files changed, 13 insertions, 8 deletions
diff --git a/mfd/snarf.m4 b/mfd/snarf.m4
index 77d9b95d..633c2ec1 100644
--- a/mfd/snarf.m4
+++ b/mfd/snarf.m4
@@ -341,15 +341,13 @@ void
bi_$2(eval_environ_t env)
m4_pushdef([<__MF_FUNCTION__>], $2)m4_dnl
m4_pushdef([<__MF_ARGLIST__>], [<m4_shift(m4_shift(m4_shift($*)))>])
-m4_pushdef([<__MF_VARARGS__>], $1)m4_dnl
m4_divert(1)m4_dnl
va_builtin_install_ex("$2", bi_$2,m4_dnl
m4_ifdef([<__MF_STATE__>],__MF_STATE__,0),m4_dnl
- m4_ifdef([<__MF_CAPTURE__>],__MF_CAPTURE__,0),m4_dnl
__mf_argtype($3),m4_dnl
mf_argcount(m4_shift(m4_shift(m4_shift($@)))),m4_dnl
mf_optcount(m4_shift(m4_shift(m4_shift($@)))),m4_dnl
- $1,m4_dnl
+ m4_ifdef([<__MF_CAPTURE__>],[<MFD_BUILTIN_CAPTURE>],0)|$1,m4_dnl
mf_typelist(m4_shift(m4_shift(m4_shift($@)))));
m4_divert(0)m4_dnl
{
@@ -358,15 +356,22 @@ m4_divert(0)m4_dnl
mf_prog_trace($2,m4_shift(m4_shift(m4_shift($@))));
>])
-m4_define([<MF_DEFUN>],[<__mf_defun(0, $@)>])
+m4_define([<MF_DEFUN>],[<m4_pushdef([<__MF_VARARGS__>], 0)m4_dnl
+__mf_defun(0, $@)>])
-m4_define([<MF_DEFUN_VARARGS>],[<m4_dnl
-m4_ifelse(__mf_has_optarg(m4_shift(m4_shift(m4_shift($@)))),0,m4_dnl
-[<__mf_defun(1, $@)>],m4_dnl
-[<m4_errprint(m4___file__:m4___line__: A vararg function cannot take optional arguments
+m4_define([<__mf_defun_varargs>],[<m4_dnl
+m4_pushdef([<__MF_VARARGS__>], 1)m4_dnl
+m4_ifelse(__mf_has_optarg(m4_shift(m4_shift(m4_shift(m4_shift($@))))),0,m4_dnl
+[<__mf_defun($1, m4_shift($@))>],m4_dnl
+[<m4_errprint(m4___file__:m4___line__: A variadic function cannot take optional arguments
)
m4_define([<__mf_error_code>],1)>])>])
+m4_define([<MF_DEFUN_VARARGS>],[<__mf_defun_varargs(MFD_BUILTIN_VARIADIC,$@)>])
+
+m4_define([<MF_DEFUN_VARARGS_NO_PROM>],[<m4_dnl
+__mf_defun_varargs(MFD_BUILTIN_VARIADIC|MFD_BUILTIN_NO_PROMOTE,$@)>])
+
/* MF_RETURN(value) - Return a numeric value
*/
m4_define([<MF_RETURN>],[<

Return to:

Send suggestions and report system problems to the System administrator.