diff options
author | Robin H. Johnson <robbat2@gentoo.org> | 2017-11-14 11:14:12 -0800 |
---|---|---|
committer | Robin H. Johnson <robbat2@gentoo.org> | 2017-11-14 11:14:12 -0800 |
commit | 66dc589e7478dc380c038c29073d8e438d80ed93 (patch) | |
tree | 806c5092363abff317a26c05ab30ef86f3c08ccd | |
parent | init.d/net.lo: per-iface moduleslist (diff) | |
download | netifrc-66dc589e.tar.gz netifrc-66dc589e.tar.bz2 netifrc-66dc589e.zip |
init.d/net.lo: atomically create moduleslist.
Bug: https://bugs.gentoo.org/637474
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
-rw-r--r-- | init.d/net.lo.in | 17 |
1 files 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 |