diff options
author | Bryan Drewery <bryan@shatow.net> | 2014-04-17 02:19:31 +0400 |
---|---|---|
committer | Bryan Drewery <bryan@shatow.net> | 2014-04-17 02:19:31 +0400 |
commit | a39bbbff6788d611054201ce4df5f6b6a830d0bc (patch) | |
tree | 52ca7e007b1a47cbd9545b450ee3009e34f34361 | |
parent | 6c31a6da64c233e3c004f55b187249ced003be17 (diff) |
leftovers: Fix modified dirs/files not showing all mtree output
MFH
-rwxr-xr-x | src/share/poudriere/common.sh | 71 |
1 files changed, 44 insertions, 27 deletions
diff --git a/src/share/poudriere/common.sh b/src/share/poudriere/common.sh index cd4aff99..0a6075af 100755 --- a/src/share/poudriere/common.sh +++ b/src/share/poudriere/common.sh @@ -1310,34 +1310,51 @@ check_leftovers() { -e -L -p / fi } | while read l ; do - case ${l} in - *extra) - if [ -d ${mnt}/${l% *} ]; then - find ${mnt}/${l% *} -exec echo "+ {}" \; - else - echo "+ ${mnt}/${l% *}" - fi - ;; - *missing) - l=${l#./} - echo "- ${mnt}/${l% *}" - ;; - *changed) - read extra - echo "M ${mnt}/${l% *} ${extra}" - ;; - extra:*) - if [ -d ${mnt}/${l#* } ]; then - find ${mnt}/${l#* } -exec echo "+ {}" \; - else - echo "+ ${mnt}/${l#* }" + local changed read_again + + changed= + while :; do + read_again=0 + case ${l} in + *extra) + if [ -d ${mnt}/${l% *} ]; then + find ${mnt}/${l% *} -exec echo "+ {}" \; + else + echo "+ ${mnt}/${l% *}" + fi + ;; + *missing) + l=${l#./} + echo "- ${mnt}/${l% *}" + ;; + *changed) + changed="M ${mnt}/${l% *}" + read_again=1 + ;; + extra:*) + if [ -d ${mnt}/${l#* } ]; then + find ${mnt}/${l#* } -exec echo "+ {}" \; + else + echo "+ ${mnt}/${l#* }" + fi + ;; + *:*) + changed="M ${mnt}/${l%:*}" + read_again=1 + ;; + *) + changed="${changed} ${l}" + read_again=1 + ;; + esac + if [ ${read_again} -eq 1 ]; then + # Need to read again to find all changes + read l || break + continue fi - ;; - *:*) - read extra - echo "M ${mnt}/${l%:*} ${extra}" - ;; - esac + [ -n "${changed}" ] && echo "${changed}" + break + done done } |