Backport from xs.

This commit is contained in:
default 2022-10-22 05:48:44 +02:00
parent 084731fec2
commit 883902c322
2 changed files with 14 additions and 20 deletions

32
xs.h
View file

@ -475,21 +475,20 @@ int xs_list_len(char *list)
char *xs_list_get(char *list, int num) char *xs_list_get(char *list, int num)
/* returns the element #num */ /* returns the element #num */
{ {
char *v, *r = NULL; char *v;
int c = 0; int c = 0;
if (num < 0) if (num < 0)
num = xs_list_len(list) + num; num = xs_list_len(list) + num;
while (xs_list_iter(&list, &v)) { while (xs_list_iter(&list, &v)) {
if (c == num) { if (c == num)
r = v; return v;
break;
}
c++; c++;
} }
return r; return NULL;
} }
@ -497,20 +496,17 @@ int xs_list_in(char *list, char *val)
/* returns the position of val in list or -1 */ /* returns the position of val in list or -1 */
{ {
int n = 0; int n = 0;
int r = -1;
char *v; char *v;
int sz = xs_size(val); int sz = xs_size(val);
while (r == -1 && xs_list_iter(&list, &v)) { while (xs_list_iter(&list, &v)) {
int vsz = xs_size(v); if (sz == xs_size(v) && memcmp(val, v, sz) == 0)
return n;
if (sz == vsz && memcmp(val, v, sz) == 0)
r = n;
n++; n++;
} }
return r; return -1;
} }
@ -641,16 +637,14 @@ int xs_dict_iter(char **dict, char **key, char **value)
char *xs_dict_get(char *dict, const char *key) char *xs_dict_get(char *dict, const char *key)
/* returns the value directed by key */ /* returns the value directed by key */
{ {
char *k, *v, *r = NULL; char *k, *v;
while (xs_dict_iter(&dict, &k, &v)) { while (xs_dict_iter(&dict, &k, &v)) {
if (strcmp(k, key) == 0) { if (strcmp(k, key) == 0)
r = v; return v;
break;
}
} }
return r; return NULL;
} }

View file

@ -1 +1 @@
/* 5b0cf1cb8fbe10458349a8a3904b26f76cd0a415 */ /* bb26cbfdc4140e87739b15cfceeafa2e0305bf5e */