aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2017-11-14 11:14:12 -0800
committerRobin H. Johnson <robbat2@gentoo.org>2017-11-14 11:14:12 -0800
commit66dc589e7478dc380c038c29073d8e438d80ed93 (patch)
tree806c5092363abff317a26c05ab30ef86f3c08ccd
parentinit.d/net.lo: per-iface moduleslist (diff)
downloadnetifrc-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.in17
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