#!/bin/sh -e mv=/bin/mv ln=/bin/ln cat=/bin/cat make=/usr/bin/make readlink=/usr/bin/readlink PORTSDIR=/usr/ports SYSCFDIR=/sys/i386/conf fbsd4kerndir="local/kernconfig" fbsd4kernlist="\ antique \ bazaar \ cicuta \ garkin \ glip \ gw \ hw \ ntp \ pookie \ sw \ " fbsd6kerndir="local/kern6config" fbsd6kernlist="\ deva \ " fbsd7kerndir="local/kern7config" fbsd7kernlist="\ cicuta \ blut \ gw \ " makeinclist=" \ . \ comms \ databases \ devel \ finance \ games \ graphics \ misc \ net \ net-mgmt \ russian \ shells \ sysutils \ textproc \ www \ x11 \ x11-wm \ " fbsdportlist=" \ net/scand \ " w=${1} r=${2:-4} shift eval fbsdkernlist=\$fbsd${r}kernlist eval fbsdkerndir=\$fbsd${r}kerndir for i in ${makeinclist}; do case ${i} in .) pfx= ;; *) pfx="${i}/" ;; esac fbsdportlist="${fbsdportlist} ${pfx}Makefile.local" for j in `${make} -f ${pfx}Makefile.local -V SUBDIR`; do fbsdportlist="${fbsdportlist} ${pfx}${j}" done done ex=0 case ${w} in fbsdkern) echo "${fbsdkernlist}" ;; fbsdport) echo "${fbsdportlist}" ;; in) for i in ${fbsdportlist}; do if [ -L ${i} ]; then if [ `${readlink} ${i}` != "${PORTSDIR}/${i}" ]; then echo "Ошибка: ${i} ссылается не на ${PORTSDIR}/${i}" ex=1 elif [ ! -d ${i}/ -a ! -f ${i} ]; then echo "Ошибка: ${i}/ не каталог и не файл" ex=1 fi elif [ -d ${i} -o -f ${i} ]; then if [ -e ${PORTSDIR}/${i} ]; then echo "Ошибка: ${PORTSDIR}/${i} существует" ex=1 else ${mv} ${i} ${PORTSDIR}/${i} ${ln} -s ${PORTSDIR}/${i} ${i} fi elif [ -e ${i} ]; then echo "Ошибка: ${i} существует, но не ссылка" ex=1 elif [ -d ${PORTSDIR}/${i} ]; then echo "Предупреждение: ${i} не существовало" ${ln} -s ${PORTSDIR}/${i} ${i} else echo "Ошибка: ${i} не существовует" ex=1 fi done cd ${fbsdkerndir} for i in ${fbsdkernlist}; do if [ -L ${i} ]; then if [ `${readlink} ${i}` != "${SYSCFDIR}/${i}" ]; then echo "Ошибка: ${i} ссылается не на ${SYSCFDIR}/${i}" ex=1 elif [ ! -f ${i} ]; then echo "Ошибка: ${i} не файл" ex=1 fi elif [ -f ${i} ]; then # if [ -e ${SYSCFDIR}/${i} ]; then # echo "Ошибка: ${SYSCFDIR}/${i} существует" # ex=1 # else ${mv} -f ${i} ${SYSCFDIR}/${i} ${ln} -s ${SYSCFDIR}/${i} ${i} # fi elif [ -e ${i} ]; then echo "Ошибка: ${i} существует, но не ссылка" ex=1 elif [ -f ${SYSCFDIR}/${i} ]; then echo "Предупреждение: ${i} не существовало" ${ln} -s ${SYSCFDIR}/${i} ${i} else echo "Ошибка: ${i} не существовует" ex=1 fi done ;; esac exit ${ex}