diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2021-11-08 14:58:02 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2021-11-08 14:59:55 +0000 |
commit | cd8518854f3e96fb86dd7ed7b8f1c0258e839157 (patch) | |
tree | bb483829a506fa4eefe675c026c2913487c6bf41 | |
parent | 5c19309678ed5756df17245b0ef7dd9dbb92c405 (diff) | |
download | ports-cd8518854f3e96fb86dd7ed7b8f1c0258e839157.tar.gz ports-cd8518854f3e96fb86dd7ed7b8f1c0258e839157.zip |
fetchindex: do not leave a corrupted INDEX
When extracting the fetched index, do it in a temporary file, and only
when extraction succeed, move it to the final file, it makes it more
atomic and less likely to live a corrupted file behind
PR: 224871
-rw-r--r-- | Makefile | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -67,8 +67,13 @@ PORTSTOP= yes index: ${INDEXDIR}/${INDEXFILE} fetchindex: ${INDEXDIR}/${INDEXFILE}.bz2 - @bunzip2 < ${INDEXDIR}/${INDEXFILE}.bz2 > ${INDEXDIR}/${INDEXFILE} && \ - chmod a+r ${INDEXDIR}/${INDEXFILE} && ${RM} ${INDEXDIR}/${INDEXFILE}.bz2 + @if bunzip2 < ${INDEXDIR}/${INDEXFILE}.bz2 > ${INDEXDIR}/${INDEXFILE}.tmp ; then \ + chmod a+r ${INDEXDIR}/${INDEXFILE}.tmp; \ + ${MV} ${INDEXDIR}/${INDEXFILE}.tmp ${INDEXDIR}/${INDEXFILE}; \ + ${RM} ${INDEXDIR}/${INDEXFILE}.bz2 \ + else ; \ + ${RM} ${INDEXDIR}/${INDEXFILE}.tmp ; \ + fi ${INDEXDIR}/${INDEXFILE}.bz2: .PHONY ${FETCHINDEX} ${INDEXDIR}/${INDEXFILE}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2 |