X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=lexer.l.m4;h=2f360606017eb44ba2695832c90e79015f3d2f3e;hb=5043c988440a119e4f773c967be19a829582b8ba;hp=0337686c72827a52541d05fdfa6d320262423b23;hpb=9f56f874416db295bdb50d448bd99cdd34db969d;p=userv.git diff --git a/lexer.l.m4 b/lexer.l.m4 index 0337686..2f36060 100644 --- a/lexer.l.m4 +++ b/lexer.l.m4 @@ -46,7 +46,7 @@ include(language.i4) typedef int directive_fnt(int dtoken); static directive_fnt df_reject, df_execute, df_executefrompath; -static directive_fnt df_executefromdirectory; +static directive_fnt df_executefromdirectory, df_executebuiltin; static directive_fnt df_errorstostderr, df_errorstosyslog, df_errorstofile; static directive_fnt dfg_fdwant, dfg_setflag; static directive_fnt df_reset, df_cd, df_userrcfile, df_include; @@ -81,11 +81,23 @@ static parameter_fnt pf_callingusershell, pf_serviceusershell; * freeparm can be used to free such an array. */ +typedef int builtinserviceparse_fnt(char ***rnewargs); +static builtinserviceparse_fnt bispa_none, bispa_parameter; +/* These parse the arguments to a builtin service, including the + * newline at the end of the line. *rnewargs will initially be + * null, indicating that no arguments are to be set; the function + * may store a mallocd array of mallocd strings in it, + * containing the arguments it wishes to have set (null-pointer + * terminated). + */ + static int yylex(void); /* Returns a token (which may be an eof or error exception) */ static directive_fnt *lr_dir; static parmcondition_fnt *lr_parmcond; +static builtinserviceparse_fnt *lr_bispa; +static builtinserviceexec_fnt *lr_bisexec; static parameter_fnt *lr_parameter; static int lr_loglevel, lr_logfacility, lr_min, lr_max, *lr_flag; static int lr_flagval, lr_controlend;