118 lines
2.5 KiB
Bash
118 lines
2.5 KiB
Bash
#!/bin/sh
|
|
|
|
VERSION_MJ="1"
|
|
VERSION_MN="0"
|
|
VERSION_RV="0000"
|
|
VERSION_AP=""
|
|
VERSION="${VERSION_MJ}.${VERSION_MN}${VERSION_AP}"
|
|
|
|
PATCHDIR="/usr/share/timidity"
|
|
|
|
# Below is the user's local patchset
|
|
HOME_TARGET="$HOME/.timidity/current"
|
|
TARGET="${HOME_TARGET}"
|
|
|
|
show_help() {
|
|
echo "$0 ${VERSION}"
|
|
echo "Usage: $0 [-g] -s PATCHSET"
|
|
echo " or: $0 -r"
|
|
echo " or: $0 [OPTION]"
|
|
echo "Set the current timidity patch set to PATCHSET."
|
|
echo
|
|
echo "Mandatory arguments to long options are mandatory for short options too."
|
|
echo " -g Change the global patch set instead of the"
|
|
echo " user's patch set"
|
|
echo " -r Change current user's patch set to current"
|
|
echo " system patch set"
|
|
echo " -s [PATCHSET] Change to patch set PATCHSET"
|
|
echo " --help display this help and exit"
|
|
}
|
|
|
|
show_error() {
|
|
|
|
echo "$0: bad or missing argument"
|
|
echo "Try '$0 --help' for more information."
|
|
}
|
|
|
|
set_patch() {
|
|
TARGET=$1
|
|
PATCHSET=$2
|
|
# If something borken, no go
|
|
if [ ! -L ${TARGET} -a -e ${TARGET} ] || [ ! -d ${PATCHDIR}/${PATCHSET} ]; then
|
|
if [ ! -L ${TARGET} -a -e ${TARGET} ]; then
|
|
echo " Error: ${TARGET} exists and is not a symlink"
|
|
return -1
|
|
fi
|
|
if [ ! -d ${PATCHDIR}/${PATCHSET} ]; then
|
|
echo " Error: patch set ${PATCHSET} does not exist"
|
|
echo " Look in ${PATCHDIR}/ for patch sets"
|
|
return -1
|
|
fi
|
|
echo " Error: Undefined error."
|
|
return -1
|
|
fi
|
|
echo -n " * Switching to ${PATCHSET} Timidity patch set..."
|
|
rm -f ${TARGET} 2>/dev/null
|
|
ln -s ${PATCHDIR}/${PATCHSET} ${TARGET} 2>/dev/null
|
|
echo " [ OK ]"
|
|
return 0
|
|
}
|
|
|
|
restore_patches() {
|
|
TARGET=$1
|
|
echo -n " * Setting up local patch set to system global..."
|
|
rm -f ${TARGET} 2>/dev/null
|
|
ln -s ${PATCHDIR}/current ${TARGET}
|
|
echo " [ OK ]"
|
|
}
|
|
|
|
##############
|
|
# Processing #
|
|
#############
|
|
|
|
# Make sure home directory is there
|
|
if [ ! -e ${HOME}/.timidity ]; then
|
|
mkdir -p ${HOME}/.timidity
|
|
restore_patches $TARGET
|
|
fi
|
|
|
|
|
|
################
|
|
# No arguments #
|
|
###############
|
|
|
|
if [ -z "$1" ]; then
|
|
show_error
|
|
exit 1
|
|
fi
|
|
|
|
#########################
|
|
# Actual processing loop#
|
|
########################
|
|
while [ -n "$1" ]; do
|
|
case "$1" in
|
|
-g)
|
|
TARGET="/usr/share/timidity/current"
|
|
;;
|
|
-r)
|
|
restore_patches ${HOME_TARGET}
|
|
exit 0
|
|
;;
|
|
-s)
|
|
PATCHSET="$2"
|
|
shift
|
|
;;
|
|
--help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
*)
|
|
show_error
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
set_patch $TARGET $PATCHSET
|