git: 82cb2a4158fa - main - Update safe_eval.sh to support --export
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 15 Aug 2024 22:44:02 UTC
The branch main has been updated by sjg: URL: https://cgit.FreeBSD.org/src/commit/?id=82cb2a4158fa79ec230a5ab41a2f61c253e65c0b commit 82cb2a4158fa79ec230a5ab41a2f61c253e65c0b Author: Simon J. Gerraty <sjg@FreeBSD.org> AuthorDate: 2024-08-15 22:42:39 +0000 Commit: Simon J. Gerraty <sjg@FreeBSD.org> CommitDate: 2024-08-15 22:42:39 +0000 Update safe_eval.sh to support --export This update allows safe_dot --export file ... to export any variables that get set. Reviewed by: obrien --- libexec/rc/safe_eval.sh | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/libexec/rc/safe_eval.sh b/libexec/rc/safe_eval.sh index 10b6ed09c769..0e1410b771cb 100644 --- a/libexec/rc/safe_eval.sh +++ b/libexec/rc/safe_eval.sh @@ -1,9 +1,9 @@ # SPDX-License-Identifier: BSD-2-Clause # RCSid: -# $Id: safe_eval.sh,v 1.12 2023/10/12 18:46:53 sjg Exp $ +# $Id: safe_eval.sh,v 1.16 2024/08/15 02:28:30 sjg Exp $ # -# @(#) Copyright (c) 2023 Simon J. Gerraty +# @(#) Copyright (c) 2023-2024 Simon J. Gerraty # # This file is provided in the hope that it will # be of use. There is absolutely NO WARRANTY. @@ -37,14 +37,33 @@ safe_eval() { eval `cat "$@" | safe_set` } +## +# safe_eval_export [file] +# +# eval variable assignments only from file +# taking care to eliminate any shell meta chars +# export any variables thus set +# +safe_eval_export() { + eval `cat "$@" | safe_set | ${SED:-sed} 's/^\([^=]*\)=.*/&; export \1/'` +} + ## # safe_dot file [...] # # feed all "file" that exist to safe_eval # safe_dot() { - local ef= f - + eval ${local:-:} ef ex f + ef= + ex= + while : + do + case "$1" in + --export) ex=_export; shift;; + *) break;; + esac + done for f in "$@" do test -s $f || continue @@ -52,7 +71,7 @@ safe_dot() { dotted="$dotted $f" done test -z "$ef" && return 1 - safe_eval $ef + safe_eval$ex $ef return 0 }