Files
b2txt25/language_model/srilm-1.7.3/sbin/decipher-install
2025-07-02 12:18:09 -07:00

147 lines
3.4 KiB
Bash
Executable File

#!/bin/sh
#
# File: decipher-install
# Author: Tom Kuhn (original by Victor Abrash)
# Date: Fri Aug 26 12:41:03 1994
#
# Description:
# This script installs files for submodules of the DECIPHER (TM) system,
# when using the make release-* targets.
#
# It takes a variable number of arguments with this convention:
#
# decipher-install <mode> <file1> ... <fileN> <directory>
#
# Copyright (c) 1994-2011 SRI International. All Rights Reserved.
#
# RCS ID: $Id: decipher-install,v 1.8 2011/10/21 21:25:58 stolcke Exp $
#
# By using this flag, the script runs through all error checking and
# reports all errors before exiting
error=
if [ "$1" = -p ]; then
p_option=-p
shift
fi
usage() {
echo "Usage: `basename $0` [-p] <mode> <file1> ... <fileN> <directory>" >&2
echo " mode: file permission mode, in octal" >&2
echo " file1 ... fileN: files to be installed" >&2
echo " directory: where the files should be installed" >&2
echo "" >&2
echo "files = " $FILES >&2
echo "directory = " $DIR >&2
echo "mode = " $MODE >&2
echo "" >&2
exit 1
}
# Get the arguments, check usage. Have to bail completely if there
# aren't enough arguments.
if [ $# -lt 3 ]; then
usage
exit -1
fi
MODE=$1
shift
FILES=
while [ $# -gt 1 ]; do
FILES="$FILES $1"
shift
done
DIR=$1
# we should check that these are valid:
# First, check the mode
case "$MODE" in
0[1-7][0-7][0-7]) ;;
*) echo "ERROR: Mode ($MODE) is not a valid permission setting" >&2
exit 1
esac
# Now check each file
for file in $FILES
do
if [ ! -f $file ]; then
echo "ERROR: File to be installed ($file) does not exist." >&2
error=1
elif [ -z $file ]; then
echo "ERROR: File to be installed ($file) is zero length." >&2
error=1
elif [ ! -f $file ]; then
echo "ERROR: File to be installed ($file) is not a plain file." >&2
error=1
fi
done
if [ ! -d $DIR ]; then
echo "WARNING: creating directory ${DIR}" >&2
mkdir ${DIR}
fi
# Now check the directory
if [ ! -d $DIR ]; then
echo "ERROR: Installation directory ($DIR) does not exist or is not a directory." >&2
error=1
elif [ ! -w $DIR ]; then
echo "ERROR: Don't have write permission in installation directory ($DIR)." >&2
error=1
fi
# check that $DIR is a valid destination:
# currently, this means we should be able to install files under
# /include, /bin/, and /lib/ directories under /home/decipher:
case "$DIR" in
*/bin|*/bin/*|*/include|*/lib/*) ;;
*)
echo "ERROR: You can install files only in .../include, .../bin/, or .../lib/ directories." >&2
error=1
;;
esac
# Bail out if there have been errors:
if [ -n "$error" ]; then
usage
fi
# Install the files:
#echo "ginstall -p -m ${MODE} ${FILES} ${DIR}"
#ginstall -p -m ${MODE} ${FILES} ${DIR}
for file in $FILES
do
base=`basename $file`
# remove executable backups not accessed in one day
find $DIR -name "$base.~[0-9]*" -perm -0500 -atime +1 -print | \
while read file2
do
echo "removing old backup $file2"
rm -f $file2
done
# backup executables accessed within the last day
find $DIR -name $base -perm -0500 -atime -1 -print | \
while read file2
do
echo "$file2 is in use; backing up to $file2.~$$"
mv $file2 $file2.~$$
done
rm -f $DIR/$base
cp $p_option $file $DIR
chmod $MODE $DIR/$base
done
exit 0