From 925e8b79a820711989a026989d26ee8c86616d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Sat, 20 May 2017 00:05:31 +0200 Subject: [PATCH] core: allow index for hdata arrays in evaluation of expressions --- ChangeLog.adoc | 1 + src/core/wee-eval.c | 7 ++++--- src/core/wee-hdata.h | 2 ++ 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ChangeLog.adoc b/ChangeLog.adoc index 3f70b967c..82dbf9288 100644 --- a/ChangeLog.adoc +++ b/ChangeLog.adoc @@ -20,6 +20,7 @@ https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[release notes] Improvements:: + * core: allow index for hdata arrays in evaluation of expressions * buflist: add variable `${current_buffer}` (boolean "0" / "1") in bar item evaluation Bug fixes:: diff --git a/src/core/wee-eval.c b/src/core/wee-eval.c index 6864a94d6..7180c77a5 100644 --- a/src/core/wee-eval.c +++ b/src/core/wee-eval.c @@ -147,8 +147,8 @@ char * eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path) { char *value, *old_value, *var_name, str_value[128], *pos; - const char *ptr_value, *hdata_name; - int type; + const char *ptr_value, *hdata_name, *ptr_var_name; + int type, index; struct t_hashtable *hashtable; value = NULL; @@ -180,7 +180,8 @@ eval_hdata_get_value (struct t_hdata *hdata, void *pointer, const char *path) goto end; /* search type of variable in hdata */ - type = hdata_get_var_type (hdata, var_name); + hdata_get_index_and_name (var_name, &index, &ptr_var_name); + type = hdata_get_var_type (hdata, ptr_var_name); if (type < 0) goto end; diff --git a/src/core/wee-hdata.h b/src/core/wee-hdata.h index c7c615d3e..c6cde0503 100644 --- a/src/core/wee-hdata.h +++ b/src/core/wee-hdata.h @@ -110,6 +110,8 @@ extern int hdata_check_pointer (struct t_hdata *hdata, void *list, extern void *hdata_move (struct t_hdata *hdata, void *pointer, int count); extern void *hdata_search (struct t_hdata *hdata, void *pointer, const char *search, int move); +extern void hdata_get_index_and_name (const char *name, int *index, + const char **ptr_name); extern char hdata_char (struct t_hdata *hdata, void *pointer, const char *name); extern int hdata_integer (struct t_hdata *hdata, void *pointer,