diff options
| author | Simon J. Gerraty <sjg@FreeBSD.org> | 2026-04-10 16:08:02 +0000 |
|---|---|---|
| committer | Simon J. Gerraty <sjg@FreeBSD.org> | 2026-04-10 16:11:21 +0000 |
| commit | de9fe28ab8476ca25a63066503f5fb40dcdd5719 (patch) | |
| tree | 25ad0a50461e3fb3592d998a330c81c8be17f279 | |
| parent | ff32dbb1d14f05bf77e356ae68c82c048c88888f (diff) | |
Allow passing xtras to safe_set
This allows safe_set to be leveraged in other contexts
where additional chars like '*' or '!' or even '\[\]' need to
be preserved in the result.
| -rw-r--r-- | libexec/rc/safe_eval.sh | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/libexec/rc/safe_eval.sh b/libexec/rc/safe_eval.sh index 6c23b4c98218..e12b17c787d2 100644 --- a/libexec/rc/safe_eval.sh +++ b/libexec/rc/safe_eval.sh @@ -1,8 +1,8 @@ : # RCSid: -# $Id: safe_eval.sh,v 1.25 2025/08/07 22:13:03 sjg Exp $ +# $Id: safe_eval.sh,v 1.26 2026/04/10 16:03:39 sjg Exp $ # -# @(#) Copyright (c) 2023-2024 Simon J. Gerraty +# @(#) Copyright (c) 2023-2026 Simon J. Gerraty # # SPDX-License-Identifier: BSD-2-Clause # @@ -23,13 +23,16 @@ else fi ## -# safe_set +# safe_set [xtras] # # return a safe variable setting -# any non-alphanumeric chars are replaced with '_' +# any non-alphanumeric chars other than those in "xtras" +# will be replaced with '_' # +# "xtras" should be used with caution and cannot include ';' +# safe_set() { - ${SED:-sed} 's/[ ]*#.*//;/^[A-Za-z_][A-Za-z0-9_]*=/!d;s;[^A-Za-z0-9_. "$,/=:+-];_;g' + ${SED:-sed} 's/[ ]*#.*//;/^[A-Za-z_][A-Za-z0-9_]*=/!d;s;[^A-Za-z0-9_. "'"$1"'$,/=:+-];_;g' } ## |
