Allow fnmatch(3) wildcards in update-environment, GitHub issue 2397.

pull/2413/head
nicm 2020-10-07 08:23:55 +00:00
parent 7e319756d2
commit 3afcc6faac
1 changed files with 6 additions and 1 deletions

View File

@ -18,6 +18,7 @@
#include <sys/types.h>
#include <fnmatch.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@ -191,7 +192,11 @@ environ_update(struct options *oo, struct environ *src, struct environ *dst)
a = options_array_first(o);
while (a != NULL) {
ov = options_array_item_value(a);
if ((envent = environ_find(src, ov->string)) == NULL)
RB_FOREACH(envent, environ, src) {
if (fnmatch(ov->string, envent->name, 0) == 0)
break;
}
if (envent == NULL)
environ_clear(dst, ov->string);
else
environ_set(dst, envent->name, 0, "%s", envent->value);