123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #!/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
|