From: ajacoutot Date: Mon, 8 Jul 2024 14:32:44 +0000 (+0000) Subject: Prevent rewriting /etc/rc.conf.local unconditionnally. Compare the new and old X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=1f7b1864b987998d338ce25625eb7ceffbf37653;p=openbsd 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@ --- 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"