diff --git a/usr.sbin/freebsd-update/freebsd-update.sh b/usr.sbin/freebsd-update/freebsd-update.sh index 83770373191..bccb4df47d8 100644 --- a/usr.sbin/freebsd-update/freebsd-update.sh +++ b/usr.sbin/freebsd-update/freebsd-update.sh @@ -2782,29 +2782,43 @@ install_from_index () { sort -k 1,1 -t '|' $1 | tr '|' ' ' | while read FPATH TYPE OWNER GROUP PERM FLAGS HASH LINK; do + _FILE_INSTALL_STATUS=0 case ${TYPE} in d) # Create a directory install -d -o ${OWNER} -g ${GROUP} \ -m ${PERM} ${BASEDIR}/${FPATH} + _FILE_INSTALL_STATUS=$? ;; f) if [ -z "${LINK}" ]; then # Create a file, without setting flags. gunzip < files/${HASH}.gz > ${HASH} - install -S -o ${OWNER} -g ${GROUP} \ - -m ${PERM} ${HASH} ${BASEDIR}/${FPATH} - rm ${HASH} + _FILE_INSTALL_STATUS=$? + if [ ${_FILE_INSTALL_STATUS} -eq 0 ]; then + install -S -o ${OWNER} -g ${GROUP} \ + -m ${PERM} ${HASH} ${BASEDIR}/${FPATH} + _FILE_INSTALL_STATUS=$? + rm ${HASH} + fi else # Create a hard link. ln -f ${BASEDIR}/${LINK} ${BASEDIR}/${FPATH} + _FILE_INSTALL_STATUS=$? fi ;; L) # Create a symlink ln -sfh ${HASH} ${BASEDIR}/${FPATH} + _FILE_INSTALL_STATUS=$? ;; esac + if [ ${_FILE_INSTALL_STATUS} -ne 0 ]; then + echo "Failed to install file ${BASEDDIR}/${FPATH}." + echo -n "Please verify that there is enough space " + echo "in ${BASEDIR} to install new files." + return 1 + fi done # Perform a second pass, adding file flags.