aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon J. Gerraty <sjg@FreeBSD.org>2025-10-30 18:09:13 +0000
committerSimon J. Gerraty <sjg@FreeBSD.org>2025-10-30 18:09:13 +0000
commita797702be077c4671e3d437d6b9ffd37f2e86277 (patch)
treeee025f40029ef8b50fce518295fe01ccb61dd085
parentee1f417a8609b8742332950521800502759dd185 (diff)
rc.subr set dot_dir and dot_file in dot
Files read by '.' cannot workout for themselves where they are or what they are called, so set dot_dir and dot_file to pass this information to them. Reviewed by: obrien, stevek Differential Revision: https://reviews.freebsd.org/D53476
-rw-r--r--libexec/rc/rc.subr14
1 files changed, 12 insertions, 2 deletions
diff --git a/libexec/rc/rc.subr b/libexec/rc/rc.subr
index 8317ff5c0922..e4ad14f582d6 100644
--- a/libexec/rc/rc.subr
+++ b/libexec/rc/rc.subr
@@ -121,11 +121,22 @@ dotted=
dot()
{
local f verify
+ local dot_dir dot_file
o_verify_set off verify
for f in "$@"; do
if [ -f $f -a -s $f ]; then
dotted="$dotted $f"
+ case $f in
+ */*)
+ dot_dir=${f%/*}
+ dot_file=${f##*/}
+ ;;
+ *)
+ dot_dir=.
+ dot_file=$f
+ ;;
+ esac
. $f
fi
done
@@ -152,8 +163,7 @@ vdot()
for f in "$@"; do
[ -f $f -a -s $f ] || continue
if is_verified $f 2> /dev/null; then
- dotted="$dotted $f"
- . $f
+ dot $f
else
rc=80 # EAUTH
fi