mirror of
https://github.com/tmux/tmux.git
synced 2024-10-31 22:58:49 +00:00
Don't stop at first match when updating environment.
This commit is contained in:
parent
e139f977b1
commit
cfdc5b62ad
15
environ.c
15
environ.c
@ -182,9 +182,11 @@ void
|
|||||||
environ_update(struct options *oo, struct environ *src, struct environ *dst)
|
environ_update(struct options *oo, struct environ *src, struct environ *dst)
|
||||||
{
|
{
|
||||||
struct environ_entry *envent;
|
struct environ_entry *envent;
|
||||||
|
struct environ_entry *envent1;
|
||||||
struct options_entry *o;
|
struct options_entry *o;
|
||||||
struct options_array_item *a;
|
struct options_array_item *a;
|
||||||
union options_value *ov;
|
union options_value *ov;
|
||||||
|
int found;
|
||||||
|
|
||||||
o = options_get(oo, "update-environment");
|
o = options_get(oo, "update-environment");
|
||||||
if (o == NULL)
|
if (o == NULL)
|
||||||
@ -192,14 +194,15 @@ environ_update(struct options *oo, struct environ *src, struct environ *dst)
|
|||||||
a = options_array_first(o);
|
a = options_array_first(o);
|
||||||
while (a != NULL) {
|
while (a != NULL) {
|
||||||
ov = options_array_item_value(a);
|
ov = options_array_item_value(a);
|
||||||
RB_FOREACH(envent, environ, src) {
|
found = 0;
|
||||||
if (fnmatch(ov->string, envent->name, 0) == 0)
|
RB_FOREACH_SAFE(envent, environ, src, envent1) {
|
||||||
break;
|
if (fnmatch(ov->string, envent->name, 0) == 0) {
|
||||||
|
environ_set(dst, envent->name, 0, "%s", envent->value);
|
||||||
|
found = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (envent == NULL)
|
if (!found)
|
||||||
environ_clear(dst, ov->string);
|
environ_clear(dst, ov->string);
|
||||||
else
|
|
||||||
environ_set(dst, envent->name, 0, "%s", envent->value);
|
|
||||||
a = options_array_next(a);
|
a = options_array_next(a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user