{
ESExpResult *r;
gint truth = FALSE;
+ gboolean *pretval = data;
if (argc == 2
&& argv[0]->type == ESEXP_RES_STRING
r = e_sexp_result_new (f, ESEXP_RES_BOOL);
r->value.boolean = truth;
+ if (pretval)
+ *pretval = (*pretval) && truth;
+
return r;
}
{ "is", func_check, 0 },
{ "beginswith", func_check, 0 },
{ "endswith", func_check, 0 },
- { "exists", func_check, 0 }
+ { "exists", func_check, 0 },
+ { "exists_vcard", func_check, 0 }
};
/**
{
ESExp *sexp;
ESExpResult *r;
- gboolean retval;
+ gboolean retval = TRUE;
gint i;
gint esexp_error;
for (i = 0; i < G_N_ELEMENTS (check_symbols); i++) {
if (check_symbols[i].type == 1) {
e_sexp_add_ifunction (sexp, 0, check_symbols[i].name,
- (ESExpIFunc *) check_symbols[i].func, summary);
+ (ESExpIFunc *) check_symbols[i].func, &retval);
} else {
e_sexp_add_function (
sexp, 0, check_symbols[i].name,
- check_symbols[i].func, summary);
+ check_symbols[i].func, &retval);
}
}
esexp_error = e_sexp_parse (sexp);
if (esexp_error == -1) {
+ e_sexp_unref (sexp);
return FALSE;
}
r = e_sexp_eval (sexp);
- retval = (r && r->type == ESEXP_RES_BOOL && r->value.boolean);
+ retval = retval && (r && r->type == ESEXP_RES_BOOL && r->value.boolean);
e_sexp_result_free (sexp, r);