aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon J. Gerraty <sjg@FreeBSD.org>2026-04-10 16:08:02 +0000
committerSimon J. Gerraty <sjg@FreeBSD.org>2026-04-10 16:11:21 +0000
commitde9fe28ab8476ca25a63066503f5fb40dcdd5719 (patch)
tree25ad0a50461e3fb3592d998a330c81c8be17f279
parentff32dbb1d14f05bf77e356ae68c82c048c88888f (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.sh13
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'
}
##