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