From 1f7b1864b987998d338ce25625eb7ceffbf37653 Mon Sep 17 00:00:00 2001 From: ajacoutot Date: Mon, 8 Jul 2024 14:32:44 +0000 Subject: [PATCH] Prevent rewriting /etc/rc.conf.local unconditionnally. Compare the new and old ones and do nothing is they match. This mean that "rcctl enable foobar" will not touch anything is foobar is already enabled. spotted by robert@ using Saltstack (that runs "rcctl enable ..." on a regular basis). ok robert@ --- usr.sbin/rcctl/rcctl.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/usr.sbin/rcctl/rcctl.sh b/usr.sbin/rcctl/rcctl.sh index eda191fae7d..56ee8cb173d 100644 --- a/usr.sbin/rcctl/rcctl.sh +++ b/usr.sbin/rcctl/rcctl.sh @@ -1,6 +1,6 @@ #!/bin/ksh # -# $OpenBSD: rcctl.sh,v 1.117 2023/07/13 13:54:27 ajacoutot Exp $ +# $OpenBSD: rcctl.sh,v 1.118 2024/07/08 14:32:44 ajacoutot Exp $ # # Copyright (c) 2014, 2015-2022 Antoine Jacoutot # Copyright (c) 2014 Ingo Schwarze @@ -127,8 +127,10 @@ rcconf_edit_end() { sort -u -o ${_TMP_RCCONF} ${_TMP_RCCONF} || \ rcctl_err "cannot modify ${_TMP_RCCONF}" - cat ${_TMP_RCCONF} >/etc/rc.conf.local || \ - rcctl_err "cannot append to /etc/rc.conf.local" + if ! cmp -s ${_TMP_RCCONF} /etc/rc.conf.local; then + cat ${_TMP_RCCONF} >/etc/rc.conf.local || \ + rcctl_err "cannot write to /etc/rc.conf.local" + fi if [ ! -s /etc/rc.conf.local ]; then rm /etc/rc.conf.local || \ rcctl_err "cannot remove /etc/rc.conf.local" -- 2.20.1