rlm@1: #!/bin/bash rlm@1: # Copyright (c) 2000,2004 Matthias S. Benkmann
rlm@1: # You may do everything with this code except misrepresent its origin. rlm@1: # PROVIDED `AS IS' WITH ABSOLUTELY NO WARRANTY OF ANY KIND! rlm@1: rlm@1: manpagesowner=man-pages rlm@1: localedir=/usr/share/locale rlm@1: cmdline="$@" rlm@1: rlm@1: DAISY_CHAIN="" rlm@1: rlm@1: for p in $(type -ap install) ; do rlm@1: if [ ! $p -ef $0 ]; then DAISY_CHAIN=$p ; break ; fi rlm@1: done rlm@1: rlm@1: if [ ! -n "$DAISY_CHAIN" ]; then rlm@1: echo Cannot find real ${0##*/} command rlm@1: exit 1 rlm@1: fi rlm@1: rlm@1: if [ $UID == 0 ]; then rlm@1: exec $DAISY_CHAIN "$@" rlm@1: fi rlm@1: rlm@1: #kill unused -c parameter if we get it rlm@1: if [ z"$1" = z"-c" ]; then shift 1 ; fi rlm@1: rlm@1: #********** test if we create directories ******************** rlm@1: if [ \( z"$1" = z"-d" \) -o \( z"$1" = z"-m" -a z"$3" = z"-d" \) ]; then rlm@1: locdirs="" rlm@1: notify=0 rlm@1: havedir=0 rlm@1: for((i=$#; $i>0; )) rlm@1: do rlm@1: a="$1" rlm@1: shift 1; i=$(($i-1)) rlm@1: case "$a" in rlm@1: -o|-g|--owner|--group) notify=1 rlm@1: shift 1; i=$(($i-1)) rlm@1: set -- "$@" rlm@1: ;; rlm@1: $localedir/*) if [ ! -d "$a" ]; then rlm@1: locdirs="$locdirs ""`expr $a : "$localedir/\(.*\)"`" rlm@1: set -- "$@" "$a" rlm@1: havedir=1 rlm@1: else rlm@1: notify=1 rlm@1: set -- "$@" rlm@1: fi rlm@1: ;; rlm@1: */*|/sbin) if [ ! -d "$a" ]; then rlm@1: set -- "$@" "$a" rlm@1: havedir=1 rlm@1: else rlm@1: notify=1 rlm@1: set -- "$@" rlm@1: fi rlm@1: ;; rlm@1: *) set -- "$@" "$a" ;; rlm@1: esac rlm@1: done rlm@1: rlm@1: test $notify -eq 1 -o z"$locdirs" != z && \ rlm@1: echo 1>&2 '***' install "$cmdline" rlm@1: rlm@1: test $havedir -eq 0 && exit 0 rlm@1: rlm@1: $DAISY_CHAIN "$@" || exit $? rlm@1: rlm@1: test z"$locdirs" != z && rlm@1: for dir in $locdirs ; do rlm@1: cumuldir="" rlm@1: for d in `echo $locdirs | sed 's#/# #g' -` ; do rlm@1: cumuldir=$cumuldir$d/ rlm@1: if [ -d $localedir/$cumuldir ]; then rlm@1: chgrp install $localedir/$cumuldir rlm@1: chmod g+w,o+t $localedir/$cumuldir rlm@1: fi rlm@1: done rlm@1: done rlm@1: rlm@1: else #if "$1" != "-d" ,i.e. we do not create directories ***************** rlm@1: notify=0 rlm@1: for((i=$# ; $i>0; )) rlm@1: do rlm@1: a="$1" rlm@1: shift 1; i=$(($i-1)) rlm@1: case "$a" in rlm@1: -m) set -- "$@" "$a" rlm@1: a="$1" rlm@1: shift 1; i=$(($i-1)) rlm@1: case "$a" in rlm@1: 4755) notify=1 ; set -- "$@" "755" ;; rlm@1: 4775) notify=1 ; set -- "$@" "755" ;; rlm@1: 4711) notify=1 ; set -- "$@" "711" ;; rlm@1: *) set -- "$@" "$a" ;; rlm@1: esac rlm@1: ;; rlm@1: -m4755) notify=1 ; set -- "$@" "-m755" ;; rlm@1: -m4775) notify=1 ; set -- "$@" "-m755" ;; rlm@1: -m4711) notify=1 ; set -- "$@" "-m711" ;; rlm@1: -o|-g|--owner|--group) notify=1 rlm@1: shift 1; i=$(($i-1)) rlm@1: set -- "$@" rlm@1: ;; rlm@1: */man/man?/*) rlm@1: if [ -e "$a" -a ! -O "$a" ]; then rlm@1: if [ `find "$a" -printf \%u` = $manpagesowner ]; then rlm@1: notify=1 rlm@1: set -- "$@" not_installed rlm@1: else rlm@1: set -- "$@" "$a" rlm@1: fi rlm@1: else rlm@1: set -- "$@" "$a" rlm@1: fi rlm@1: ;; rlm@1: *) set -- "$@" "$a" ;; rlm@1: esac rlm@1: done rlm@1: rlm@1: test $notify -eq 1 && echo 1>&2 '***' install "$cmdline" rlm@1: rlm@1: $DAISY_CHAIN "$@" || exit $? rlm@1: fi rlm@1: rlm@1: exit 0