diff --git a/doc/scripts/subst.sh b/doc/scripts/subst.sh index 0a9909c..698d3dd 100755 --- a/doc/scripts/subst.sh +++ b/doc/scripts/subst.sh @@ -37,29 +37,6 @@ MANDIR= PROGNAME="subst.sh" SYSCONFDIR= [ -f "$CONFIGSH" ] && . "$CONFIGSH" -[ -z "$BINDIR" ] && BINDIR="$PREFIX/bin" -[ -z "$DATADIR" ] && DATADIR="$PREFIX/share" -[ -z "$INCLUDEDIR" ] && INCLUDEDIR="$PREFIX/include" -if [ -z "$LDSO" ]; then - case "$(uname -s)" in - FreeBSD) - LDSO="/libexec/ld-elf.so.1" - ;; - Linux) - LDSO="/lib/ld-linux-$(uname -p).so.2" - ;; - *) - LDSO="/libexec/ld.elf_so" - ;; - esac -fi -[ -z "$LIBDIR" ] && LIBDIR="$PREFIX/lib" -[ -z "$LIBEXECDIR" ] && LIBEXECDIR="$PREFIX/libexec" -[ -z "$MANDIR" ] && MANDIR="$DATADIR/man" -if [ -z "$SYSCONFDIR" ]; then - SYSCONFDIR="$PREFIX/etc" - [ "$PREFIX" = "/usr" ] && SYSCONFDIR="/etc" -fi #executables CHMOD="chmod" DEBUG="_debug" @@ -71,6 +48,92 @@ SED="sed" #functions +#subst +_subst() +{ + #check the variables + if [ -z "$PACKAGE" ]; then + _error "The PACKAGE variable needs to be set" + return $? + fi + if [ -z "$VERSION" ]; then + _error "The VERSION variable needs to be set" + return $? + fi + [ -z "$BINDIR" ] && BINDIR="$PREFIX/bin" + [ -z "$DATADIR" ] && DATADIR="$PREFIX/share" + [ -z "$INCLUDEDIR" ] && INCLUDEDIR="$PREFIX/include" + if [ -z "$LDSO" ]; then + case "$(uname -s)" in + FreeBSD) + LDSO="/libexec/ld-elf.so.1" + ;; + Linux) + LDSO="/lib/ld-linux-$(uname -p).so.2" + ;; + *) + LDSO="/libexec/ld.elf_so" + ;; + esac + fi + [ -z "$LIBDIR" ] && LIBDIR="$PREFIX/lib" + [ -z "$LIBEXECDIR" ] && LIBEXECDIR="$PREFIX/libexec" + [ -z "$MANDIR" ] && MANDIR="$DATADIR/man" + if [ -z "$SYSCONFDIR" ]; then + SYSCONFDIR="$PREFIX/etc" + [ "$PREFIX" = "/usr" ] && SYSCONFDIR="/etc" + fi + + while [ $# -gt 0 ]; do + target="$1" + shift + + #clean + [ "$clean" -ne 0 ] && continue + + #uninstall + if [ "$uninstall" -eq 1 ]; then + $DEBUG $RM -- "$PREFIX/$target" || return 2 + continue + fi + + #install + if [ "$install" -eq 1 ]; then + source="${target#$OBJDIR}" + $DEBUG $MKDIR -- "$PREFIX" || return 2 + mode="-m 0644" + [ -x "${source}.in" ] && mode="-m 0755" + $DEBUG $INSTALL $mode "$target" "$PREFIX/$source" \ + || return 2 + continue + fi + + #create + source="${target#$OBJDIR}" + source="${source}.in" + $DEBUG $SED -e "s,@PACKAGE@,$PACKAGE,g" \ + -e "s,@VERSION@,$VERSION,g" \ + -e "s,@PREFIX@,$PREFIX,g" \ + -e "s,@BINDIR@,$BINDIR,g" \ + -e "s,@DATADIR@,$DATADIR,g" \ + -e "s,@INCLUDEDIR@,$INCLUDEDIR,g" \ + -e "s,@LDSO@,$LDSO,g" \ + -e "s,@LIBDIR@,$LIBDIR,g" \ + -e "s,@LIBEXECDIR@,$LIBEXECDIR,g" \ + -e "s,@MANDIR@,$MANDIR,g" \ + -e "s,@SYSCONFDIR@,$SYSCONFDIR,g" \ + -e "s,@PWD@,$PWD,g" \ + -- "$source" > "$target" + if [ $? -ne 0 ]; then + $RM -- "$target" 2> "$DEVNULL" + return 2 + elif [ -x "$source" ]; then + $DEBUG $CHMOD -- 0755 "$target" + fi + done + return 0 +} + #debug _debug() { @@ -99,7 +162,7 @@ _usage() clean=0 install=0 uninstall=0 -while getopts "ciuP:" name; do +while getopts "ciuO:P:" name; do case $name in c) clean=1 @@ -112,6 +175,9 @@ while getopts "ciuP:" name; do install=0 uninstall=1 ;; + O) + export "${OPTARG%%=*}"="${OPTARG#*=}" + ;; P) PREFIX="$OPTARG" ;; @@ -127,61 +193,5 @@ if [ $# -eq 0 ]; then exit $? fi -#check the variables -if [ -z "$PACKAGE" ]; then - _error "The PACKAGE variable needs to be set" - exit $? -fi -if [ -z "$VERSION" ]; then - _error "The VERSION variable needs to be set" - exit $? -fi - exec 3>&1 -while [ $# -gt 0 ]; do - target="$1" - shift - - #clean - [ "$clean" -ne 0 ] && continue - - #uninstall - if [ "$uninstall" -eq 1 ]; then - $DEBUG $RM -- "$PREFIX/$target" || exit 2 - continue - fi - - #install - if [ "$install" -eq 1 ]; then - source="${target#$OBJDIR}" - $DEBUG $MKDIR -- "$PREFIX" || exit 2 - mode="-m 0644" - [ -x "${source}.in" ] && mode="-m 0755" - $DEBUG $INSTALL $mode "$target" "$PREFIX/$source" \ - || exit 2 - continue - fi - - #create - source="${target#$OBJDIR}" - source="${source}.in" - $DEBUG $SED -e "s,@PACKAGE@,$PACKAGE,g" \ - -e "s,@VERSION@,$VERSION,g" \ - -e "s,@PREFIX@,$PREFIX,g" \ - -e "s,@BINDIR@,$BINDIR,g" \ - -e "s,@DATADIR@,$DATADIR,g" \ - -e "s,@INCLUDEDIR@,$INCLUDEDIR,g" \ - -e "s,@LDSO@,$LDSO,g" \ - -e "s,@LIBDIR@,$LIBDIR,g" \ - -e "s,@LIBEXECDIR@,$LIBEXECDIR,g" \ - -e "s,@MANDIR@,$MANDIR,g" \ - -e "s,@SYSCONFDIR@,$SYSCONFDIR,g" \ - -e "s,@PWD@,$PWD,g" \ - -- "$source" > "$target" - if [ $? -ne 0 ]; then - $RM -- "$target" 2> "$DEVNULL" - exit 2 - elif [ -x "$source" ]; then - $DEBUG $CHMOD -- 0755 "$target" - fi -done +_subst "$@"