From 80adaa8ae8398403ca4e9797219ea9a501fc76a5 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Fri, 7 Jul 2023 18:57:40 +0100 Subject: patch 9.0.1673: cannot produce a status 418 or 503 message Problem: Cannot produce a status 418 or 503 message. Solution: Add err_teapot(). --- src/evalfunc.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/evalfunc.c') diff --git a/src/evalfunc.c b/src/evalfunc.c index d644a3ee54..8970ac7937 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -45,6 +45,7 @@ static void f_did_filetype(typval_T *argvars, typval_T *rettv); static void f_echoraw(typval_T *argvars, typval_T *rettv); static void f_empty(typval_T *argvars, typval_T *rettv); static void f_environ(typval_T *argvars, typval_T *rettv); +static void f_err_teapot(typval_T *argvars, typval_T *rettv); static void f_escape(typval_T *argvars, typval_T *rettv); static void f_eval(typval_T *argvars, typval_T *rettv); static void f_eventhandler(typval_T *argvars, typval_T *rettv); @@ -1881,6 +1882,8 @@ static funcentry_T global_functions[] = ret_number_bool, f_empty}, {"environ", 0, 0, 0, NULL, ret_dict_string, f_environ}, + {"err_teapot", 0, 1, 0, NULL, + ret_number_bool, f_err_teapot}, {"escape", 2, 2, FEARG_1, arg2_string, ret_string, f_escape}, {"eval", 1, 1, FEARG_1, arg1_string, @@ -3922,6 +3925,33 @@ f_environ(typval_T *argvars UNUSED, typval_T *rettv) #endif } +/* + * "err_teapot()" function + */ + static void +f_err_teapot(typval_T *argvars, typval_T *rettv UNUSED) +{ + if (argvars[0].v_type != VAR_UNKNOWN) + { + if (argvars[0].v_type == VAR_STRING) + { + char_u *s = tv_get_string_strict(&argvars[0]); + if (s == NULL || *skipwhite(s) == NUL) + return; + } + + int err = FALSE; + int do_503 = eval_expr_to_bool(&argvars[0], &err); + if (!err && do_503) + { + emsg(_(e_coffee_currently_not_available)); + return; + } + } + + emsg(_(e_im_a_teapot)); +} + /* * "escape({string}, {chars})" function */ @@ -6456,6 +6486,14 @@ f_has(typval_T *argvars, typval_T *rettv) 1 #else 0 +#endif + }, + {":tearoff", +// same #ifdef as used for ex_tearoff(). +#if defined(FEAT_GUI_MSWIN) && defined(FEAT_MENU) && defined(FEAT_TEAROFF) + 1 +#else + 0 #endif }, {NULL, 0} -- cgit v1.2.3