commit: d50f77c79f3a7e2ce129ef69ff4cc662d1b95ad6 Author: Michael Orlitzky <mjo <AT> gentoo <DOT> org> AuthorDate: Fri Jan 22 18:19:34 2016 +0000 Commit: Michael Orlitzky <mjo <AT> gentoo <DOT> org> CommitDate: Fri Jan 22 18:19:34 2016 +0000 URL: https://gitweb.gentoo.org/proj/eselect-php.git/commit/?id=d50f77c7
Clean up and document the cleanup_sapi() function. src/php.eselect.in.in | 47 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 14 deletions(-) diff --git a/src/php.eselect.in.in b/src/php.eselect.in.in index 7e52f53..63b9d42 100644 --- a/src/php.eselect.in.in +++ b/src/php.eselect.in.in @@ -173,23 +173,42 @@ parse_target_major_version() { esac } +# Remove dead active symlinks for the given SAPI. +# +# If a symlink for an SAPI is dead, then that SAPI is at least +# partially broken. For example, if the symlink to php-cgi is dead, +# then CGI just isn't going to work -- the SAPI is broken. It +# therefore makes sense to run update() after we find and remove any +# broken links. The update at least has the potential to leave things +# working. +# +# There is one potential caveat to that approach, for SAPIs with more +# than one active symlink. What if "phpize" is broken but "php" is OK? +# (Forget for the moment how that might happen...). Do we want to +# update() the entire SAPI because one of the symlinks is dead? +# Answer: I guess. +# +# INPUT: +# +# The name of the SAPI to clean up. +# +# OUTPUT: +# +# If any symlinks are removed, that fact will be announced. If an +# update occurs, that will be noted as well +# cleanup_sapi() { local sapi="${1}" - local l="${sapi}_link" - local link=${!l} - if [[ -L $link && ! -e $link ]] ; then - echo -n "Broken link for ${sapi}" - if update_sapi $1 ; then - echo ", updated version to $(get_sapi_active_target "${sapi}")" - return - else - rm $link || die "failed to remove ${link}" - - return - fi - fi + local link_dir=$(sapi_active_link_dir "${sapi}") - return 1 + for link_name in $(sapi_active_link_names "${sapi}"); do + local link_path="${link_dir}/${link_name}" + if [[ -L "${link_path}" && ! -e "${link_path}" ]] ; then + rm -f "${link_path}" || die "failed to remove ${link_path}" + echo "Removed broken symlink ${link_path}." + update_sapi "${sapi}" # Try to fix it. + fi + done } update_sapi() {