commit:     66dc589e7478dc380c038c29073d8e438d80ed93
Author:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
AuthorDate: Tue Nov 14 19:14:12 2017 +0000
Commit:     Robin H. Johnson <robbat2 <AT> gentoo <DOT> org>
CommitDate: Tue Nov 14 19:14:12 2017 +0000
URL:        https://gitweb.gentoo.org/proj/netifrc.git/commit/?id=66dc589e

init.d/net.lo: atomically create moduleslist.

Bug: https://bugs.gentoo.org/637474
Signed-off-by: Robin H. Johnson <robbat2 <AT> gentoo.org>

 init.d/net.lo.in | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/init.d/net.lo.in b/init.d/net.lo.in
index 33cc932..b78a342 100644
--- a/init.d/net.lo.in
+++ b/init.d/net.lo.in
@@ -353,21 +353,24 @@ _gen_module_list()
                visit "${MODULE}"
        done
 
-       printf "" > "${MODULESLIST}"
+       # Create atomically
+       TMPMODULESLIST=${MODULESLIST}.$$
+       printf "" > "${TMPMODULESLIST}"
        i=0
        for MODULE in ${SORTED}; do
                eval PROGRAM=\$${MODULE}_program
                eval PROGRAM_START=\$${MODULE}_program_start
                eval PROGRAM_STOP=\$${MODULE}_program_stop
                eval PROVIDE=\$${MODULE}_provide
-               echo "module_${i}='${MODULE}'" >> "${MODULESLIST}"
-               echo "module_${i}_program='${PROGRAM}'" >> "${MODULESLIST}"
-               echo "module_${i}_program_start='${PROGRAM_START}'" >> 
"${MODULESLIST}"
-               echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> 
"${MODULESLIST}"
-               echo "module_${i}_provide='${PROVIDE}'" >> "${MODULESLIST}"
+               echo "module_${i}='${MODULE}'" >> "${TMPMODULESLIST}"
+               echo "module_${i}_program='${PROGRAM}'" >> "${TMPMODULESLIST}"
+               echo "module_${i}_program_start='${PROGRAM_START}'" >> 
"${TMPMODULESLIST}"
+               echo "module_${i}_program_stop='${PROGRAM_STOP}'" >> 
"${TMPMODULESLIST}"
+               echo "module_${i}_provide='${PROVIDE}'" >> "${TMPMODULESLIST}"
                : $(( i += 1 ))
        done
-       echo "module_${i}=" >> "${MODULESLIST}"
+       echo "module_${i}=" >> "${TMPMODULESLIST}"
+       mv -f "${TMPMODULESLIST}" "${MODULESLIST}"
        )
 
        return 0

Reply via email to