#!/bin/sh # InstallEpics # # InstallEpics is used within makefiles to copy new versions of # files into a destination directory. # ########################################################## TOOL=`basename $0` MODE=755 CREATE_DIR=0 USAGE="Usage: $TOOL [ -m mode ] file ... directory -m mode Set the mode for the installed file (0755 by default) file Name of file directory Destination directory " # get command line options set -- `getopt m:g:o:csd $*` for i do case $i in -m) MODE=$2; shift 2;; -g | -o) echo "$USAGE"; echo "$i not implemented"; shift 2;; -c | -s) echo "$USAGE"; echo "$i not implemented"; shift;; -d) CREATE_DIR=1;shift;; --) shift; break;; esac done # at least two args required if [ $# -lt 2 ] then echo "$USAGE" exit 1 fi INSTALL_DIR= FILELIST= for i do FILELIST="${FILELIST} ${INSTALL_DIR}"; INSTALL_DIR=$i; shift; done if [ ! -d "${INSTALL_DIR}" ] ;then if [ "${CREATE_DIR}" ] ;then OLDIFS=${IFS} IFS=/ DIRNAME= for DIR in ${INSTALL_DIR} do DIRNAME=${DIRNAME}/${DIR} if [ ! -d "${DIRNAME}" ] ;then mkdir "${DIRNAME}" fi done IFS=${OLDIFS} else echo "$USAGE\n Can't find directory '${INSTALL_DIR}'" exit 1 fi fi for FILE in ${FILELIST} do if [ ! -f ${FILE} ] ;then echo "$USAGE\n Can't find file '${FILE}'" exit 1 fi TEST= FILEBASENAME=`basename ${FILE}` if [ -f ${INSTALL_DIR}/${FILEBASENAME} ] ; then #Is ${INSTALL_DIR}/${FILEBASENAME} link timestamp newer than ${FILE} TEST=`find ${INSTALL_DIR} -name "${FILEBASENAME}" -newer ${FILE} -print` fi if [ "${TEST}x" = "x" ] ; then #echo "Installing ${FILEBASENAME}" /bin/rm -f ${INSTALL_DIR}/${FILEBASENAME} /bin/cp -p ${FILE} ${INSTALL_DIR}/${FILEBASENAME} /bin/chmod ${MODE} ${INSTALL_DIR}/${FILEBASENAME} else echo "${INSTALL_DIR}/${FILEBASENAME} is up to date" fi done exit 0