#!/bin/bash #fixdatabase_ifs.sh # version: 0.3.6-r5 #(deprecated; used to upgrade systems prior 0.3.6-r1 ) #fixes the ifs of included db_files in given package MLIBDIR=/usr/lib/mage usage(){ echo echo "$(basename $0) OLD_IFS NEW_IFS /path/to/PACKAGEFILE.mpk" echo } if [ $# -ne 3 ] then usage exit 1 fi #some needed infos source ${MLIBDIR}/mage3.functions.sh source /etc/mage.rc PKGFILE=$3 PKGNAME=$(basename ${PKGFILE} .mpk) OLD_IFS=$1 NEW_IFS=$2 DB_ENTRY=${BUILDDIR}/${PKGNAME} echo -n "Unpacking ${PKGNAME} ... " tar xjmf ${PKGFILE} -C ${BUILDDIR} echo "done" echo -n "Updating ${PKGNAME}/.files ... " #updating .files db entries if [ -e ${DB_ENTRY}/.files ] then #make backup mv ${DB_ENTRY}/.files \ ${DB_ENTRY}/.files-old #sets fieldseperator to "$OLD_IFS" instead of " " IFS=${OLD_IFS} #update while read pathto posix user group mtime md5sum do echo "${pathto}${NEW_IFS}${posix}${NEW_IFS}${user}${NEW_IFS}${group}${NEW_IFS}${mtime}${NEW_IFS}${md5sum}" \ >> ${DB_ENTRY}/.files done < ${DB_ENTRY}/.files-old #remove old list rm -f ${DB_ENTRY}/.files-old #very important: unsetting the fieldseperator unset IFS else fatal_error .files fi #recreate if .files was zero if [ ! -e ${DB_ENTRY}/.files ] then touch ${DB_ENTRY}/.files fi echo "done" echo -n "Updating ${PKGNAME}/.symlinks ... " #updating .symlinks db entries if [ -e ${DB_ENTRY}/.symlinks ] then #make backup mv ${DB_ENTRY}/.symlinks \ ${DB_ENTRY}/.symlinks-old #sets fieldseperator to "$OLD_IFS" instead of " " IFS=${OLD_IFS} #update while read pathto posix link mtime do echo "${pathto}${NEW_IFS}${posix}${NEW_IFS}${link}${NEW_IFS}${mtime}" \ >> ${DB_ENTRY}/.symlinks done < ${DB_ENTRY}/.symlinks-old #remove old list rm -f ${DB_ENTRY}/.symlinks-old #very important: unsetting the fieldseperator unset IFS else fatal_error .symlinks fi #recreate if .symlinks was zero if [ ! -e ${DB_ENTRY}/.symlinks ] then touch ${DB_ENTRY}/.symlinks fi echo "done" echo -n "Updating ${PKGNAME}/.dirs ... " #updating .dirs db entries if [ -e ${DB_ENTRY}/.dirs ] then #make backup mv ${DB_ENTRY}/.dirs \ ${DB_ENTRY}/.dirs-old #sets fieldseperator to "$OLD_IFS" instead of " " IFS=${OLD_IFS} #update while read pathto posix user group do echo "${pathto}${NEW_IFS}${posix}${NEW_IFS}${user}${NEW_IFS}${group}" \ >> ${DB_ENTRY}/.dirs done < ${DB_ENTRY}/.dirs-old #remove old list rm -f ${DB_ENTRY}/.dirs-old #very important: unsetting the fieldseperator unset IFS else fatal_error .dirs fi #recreate if .dirs was zero if [ ! -e ${DB_ENTRY}/.dirs ] then touch ${DB_ENTRY}/.dirs fi echo "done" echo -n "Updating ${PKGNAME}/.pipes ... " #updating .pipes db entries if [ -e ${DB_ENTRY}/.pipes ] then #make backup mv ${DB_ENTRY}/.pipes \ ${DB_ENTRY}/.pipes-old #sets fieldseperator to "$OLD_IFS" instead of " " IFS=${OLD_IFS} #update while read pathto posix do echo "${pathto}${NEW_IFS}${posix}" \ >> ${DB_ENTRY}/.pipes done < ${DB_ENTRY}/.pipes-old #remove old list rm -f ${DB_ENTRY}/.pipes-old #very important: unsetting the fieldseperator unset IFS else fatal_error .pipes fi #recreate if .pipes was zero if [ ! -e ${DB_ENTRY}/.pipes ] then touch ${DB_ENTRY}/.pipes fi echo "done" echo -n "Updating ${PKGNAME}/.char ... " #updating .char db entries if [ -e ${DB_ENTRY}/.char ] then #make backup mv ${DB_ENTRY}/.char \ ${DB_ENTRY}/.char-old #sets fieldseperator to "$OLD_IFS" instead of " " IFS=${OLD_IFS} #update while read pathto posix do echo "${pathto}${NEW_IFS}${posix}" \ >> ${DB_ENTRY}/.char done < ${DB_ENTRY}/.char-old #remove old list rm -f ${DB_ENTRY}/.char-old #very important: unsetting the fieldseperator unset IFS else fatal_error .char fi #recreate if .char was zero if [ ! -e ${DB_ENTRY}/.char ] then touch ${DB_ENTRY}/.char fi echo "done" echo -n "Rebuilding Package ... " cd ${BUILDDIR} tar cjf ${PKGNAME}.tar.bz2 ./${PKGNAME} install -d ${PKGDIR} mv ${PKGNAME}.tar.bz2 ${PKGDIR}/${PKGNAME}.mpk echo "done" echo