--- trunk/mage/usr/lib/mage/mage4.functions.sh 2005/10/04 14:35:21 258 +++ trunk/mage/usr/lib/mage/mage4.functions.sh 2005/10/21 14:50:13 273 @@ -1,6 +1,6 @@ #!/bin/bash # Magellan Linux Installer Functions (mage.functions.sh) -# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.7 2005-10-04 14:35:21 niro Exp $ +# $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/mage4.functions.sh,v 1.8 2005-10-21 14:50:13 niro Exp $ mage_setup() { @@ -432,6 +432,7 @@ local magefile local dbrecorddir local provide + local i # very basic getops for i in $* @@ -473,7 +474,6 @@ # create fake file descriptors # used by virtual and source packages - local i for i in .dirs .symlinks .files .pipes .char do touch ${dbrecorddir}/${i} @@ -504,7 +504,10 @@ provide="$(get_value_from_magefile PROVIDE ${magefile})" if [ -n "${provide}" ] then - virtuals_add "${provide}" "${pcat}/${pname}" + for i in ${provide} + do + virtuals_add "${i}" "${pcat}/${pname}" + done fi } @@ -523,6 +526,7 @@ local magefile local dbrecorddir local provide + local i # very basic getops for i in $* @@ -556,7 +560,10 @@ provide="$(get_value_from_magefile PROVIDE ${magefile})" if [ -n "${provide}" ] then - virtuals_del "${provide}" "${pcat}/${pname}" + for i in ${provide} + do + virtuals_del "${i}" "${pcat}/${pname}" + done fi # removes database entry @@ -1490,6 +1497,7 @@ local oldline local line i local installed_file + local OLDIFS if virtuals_read ${virtualname} then @@ -1512,6 +1520,7 @@ # make a backup mv ${MROOT}${VIRTUALDB_FILE} ${MROOT}${VIRTUALDB_FILE}.old + OLDIFS="${IFS}" IFS=$'\n' for line in $(< ${MROOT}${VIRTUALDB_FILE}.old) do @@ -1523,10 +1532,10 @@ echo "${line}" >> ${MROOT}${VIRTUALDB_FILE} fi done - - #unset IFS + # unset IFS + IFS="${OLDIFS}" else - echo -ne "${COLBLUE} *** ${COLDEFAULT}" + echo -ne "${COLBLUE} >>> ${COLDEFAULT}" echo "register ${pkgname} as ${virtualname} ..." echo "${virtualname} ${pkgname}" >> ${MROOT}${VIRTUALDB_FILE} fi @@ -1538,61 +1547,68 @@ #$1 virtualname; $2 pkgname virtuals_del() { - local VIRTUAL_NAME PKG_NAME OLD_LINE METHOD line i x PKG_INSTALLED - - VIRTUAL_NAME=$1 - PKG_NAME=$2 - - #first check if exists - if virtuals_read ${VIRTUAL_NAME} + local virtualname="$1" + local pkgname="$2" + local oldline + local method + local line i x + local pkg_installed + local OLDIFS + + # first check if exists + if virtuals_read ${virtualname} then - #get method -> delall or update and check if ${PKG_NAME} exists in ${VIRTUAL_NAME} + # get method -> delall or update and check if ${PKG_NAME} exists in ${VIRTUAL_NAME} declare -i x=0 - for i in $(virtuals_read ${VIRTUAL_NAME} showpkgs) + for i in $(virtuals_read ${virtualname} showpkgs) do - if [ "${i}" == "${PKG_NAME}" ] + if [[ ${i} = ${pkgname} ]] then - PKG_INSTALLED=true + pkg_installed=true fi ((x++)) done - - #abort if not installed - if [ "${PKG_INSTALLED}" != "true" ] + + # abort if not installed + if [[ ${pkg_installed} != true ]] then - echo "!!!! ${PKG_NAME} does not exists in ${VIRTUAL_NAME}." + echo -ne "${COLBLUE} --- ${COLDEFAULT}" + echo "${pkgname} does not exists in ${virtualname}." return 0 fi - + if [ ${x} -ge 2 ] then - METHOD=update + method=update else - METHOD=delall + method=delall fi - - #get the complete line - OLD_LINE="$(virtuals_read ${VIRTUAL_NAME} showline)" - - #make a backup + + # get the complete line + oldline="$(virtuals_read ${virtualname} showline)" + + # make a backup of the db mv ${VIRTUALDB_FILE} ${VIRTUALDB_FILE}.old - - #parse virtualdb + + # parse virtualdb + OLDIFS="${IFS}" IFS=$'\n' for line in $(< ${VIRTUALDB_FILE}.old) do - if [ "${line}" == "${OLD_LINE}" ] + if [[ ${line} = ${oldline} ]] then #delall or update? - case ${METHOD} in + case ${method} in update) - echo "<<<< Unlinking ${PKG_NAME} from ${VIRTUAL_NAME} in virtual database ..." - #del PKG_NAME from line - echo "${line/ ${PKG_NAME}/}" >> ${VIRTUALDB_FILE} + echo -ne "${COLBLUE} *** ${COLDEFAULT}" + echo "Unlinking ${pkgname} from ${virtualname} in virtual database ..." + # del PKG_NAME from line + echo "${line/ ${pkgname}/}" >> ${VIRTUALDB_FILE} ;; delall) - echo "<<<< Deleting ${VIRTUAL_NAME} in virtual database ..." - #continue; do not write anything + echo -ne "${COLBLUE} <<< ${COLDEFAULT}" + echo "Deleting ${virtualname} in virtual database ..." + # continue; do not write anything continue ;; esac @@ -1600,9 +1616,11 @@ echo "${line}" >> ${VIRTUALDB_FILE} fi done - unset IFS + # unset IFS + IFS="${OLDIFS}" else - echo "!!!! ${VIRTUAL_NAME} does not exists in virtual database." + echo -ne "${COLBLUE} --- ${COLDEFAULT}" + echo "${virtualname} does not exists in virtual database." fi }