From c6dafd9c9ce711f502aa8c786d9027693f672447 Mon Sep 17 00:00:00 2001 From: paltherr Date: Tue, 26 Aug 2003 11:38:16 +0000 Subject: - Added flag -p and --preserve-timestamps --- support/scripts/install.sh | 61 +++++++++++++++++++++++++--------------------- support/scripts/mirror.sh | 28 ++++++++++++--------- 2 files changed, 50 insertions(+), 39 deletions(-) (limited to 'support/scripts') diff --git a/support/scripts/install.sh b/support/scripts/install.sh index 0a3c6aef1d..5af2ed2a97 100644 --- a/support/scripts/install.sh +++ b/support/scripts/install.sh @@ -10,21 +10,37 @@ source ${0%/*}/stdlib.sh; function install-args() { case "$1" in - --version ) echo "install (bash script) $version"; exit 0;; - -d ) directory="true"; return 1;; - --directory ) directory="true"; return 1;; - -D ) leading="true"; return 1;; - -o ) args-option-value owner "$@";; - --owner=* ) args-inline-value owner "$@";; - -g ) args-option-value group "$@";; - --group=* ) args-inline-value group "$@";; - -m ) args-option-value mode "$@";; - --mode=* ) args-inline-value mode "$@";; - -* ) args-option-unknown "$@";; - * ) args-append-array files "$@";; + --version ) echo "install (bash script) $version"; exit 0;; + -d ) directory="true"; return 1;; + --directory ) directory="true"; return 1;; + -D ) leading="true"; return 1;; + -o ) args-option-value owner "$@";; + --owner=* ) args-inline-value owner "$@";; + -g ) args-option-value group "$@";; + --group=* ) args-inline-value group "$@";; + -m ) args-option-value mode "$@";; + --mode=* ) args-inline-value mode "$@";; + -p ) preserve="true"; return 1;; + --preserve-timestamps ) preserve="true"; return 1;; + -* ) args-option-unknown "$@";; + * ) args-append-array files "$@";; esac; } +function install-attr() { + local file="$1"; + if [ -n "$mode" ]; then + run chmod "$mode" "$file"; + fi; + if [ -n "$owner" -a -n "$group" ]; then + run chown "$owner:$group" "$file"; + elif [ -n "$owner" ]; then + run chown "$owner" "$file"; + elif [ -n "$group" ]; then + run chown ":$group" "$file"; + fi; +} + function install-mkdir() { local dstpath="$1"; shift 1; if [ "$dstpath" != "." ]; then @@ -36,20 +52,10 @@ function install-copy() { local srcfile="$1"; shift 1; local dstfile="$1"; shift 1; run cp "$srcfile" "$dstfile"; -} - -function install-attr() { - local file="$1"; - if [ -n "$mode" ]; then - run chmod "$mode" "$file"; - fi; - if [ -n "$owner" -a -n "$group" ]; then - run chmod "$owner:$group" "$file"; - elif [ -n "$owner" ]; then - run chmod "$owner" "$file"; - elif [ -n "$group" ]; then - run chmod "$USER:$group" "$file"; + if [ "$preserve" == "true" ]; then + touch --reference="$srcfile" "$dstfile"; fi; + install-attr "$dstfile"; } function install-dirs() { @@ -68,7 +74,6 @@ function install-file() { install-mkdir "$dstpath"; fi; install-copy "$srcfile" "$dstfile"; - install-attr "$dstfile"; } function install-files() { @@ -77,17 +82,17 @@ function install-files() { local srcfile="$1"; shift 1; local dstfile="$dstpath/`basename "$srcfile"`"; install-copy "$srcfile" "$dstfile"; - install-attr "$dstfile"; done; } function install() { - local version="1.00"; + local version='$Revision$'; local directory="false"; local leading="false"; local owner=""; local group=""; local mode=""; + local preserve="false"; local -a files; args-loop "$FUNCNAME" "$@"; diff --git a/support/scripts/mirror.sh b/support/scripts/mirror.sh index 62ecdae950..4b6a0df60b 100644 --- a/support/scripts/mirror.sh +++ b/support/scripts/mirror.sh @@ -13,16 +13,18 @@ source ${0%/*}/install.sh; function mirror-args() { case "$1" in -# --version ) echo "install (bash script) $version"; exit 0;; - -C ) args-option-value prefix "$@";; - -o ) args-option-value owner "$@";; - --owner=* ) args-inline-value owner "$@";; - -g ) args-option-value group "$@";; - --group=* ) args-inline-value group "$@";; - -m ) args-option-value mode "$@";; - --mode=* ) args-inline-value mode "$@";; - -* ) args-option-unknown "$@";; - * ) args-append-array files "$@";; + --version ) echo "install (bash script) $version"; exit 0;; + -C ) args-option-value prefix "$@";; + -o ) args-option-value owner "$@";; + --owner=* ) args-inline-value owner "$@";; + -g ) args-option-value group "$@";; + --group=* ) args-inline-value group "$@";; + -m ) args-option-value mode "$@";; + --mode=* ) args-inline-value mode "$@";; + -p ) preserve="true"; return 1;; + --preserve-timestamps ) preserve="true"; return 1;; + -* ) args-option-unknown "$@";; + * ) args-append-array files "$@";; esac; } @@ -37,11 +39,12 @@ function mirror-files() { } function mirror() { -# local version="1.00"; + local version='$Revision$'; local prefix="."; local owner=""; local group=""; local mode=""; + local preserve="false"; local -a files; args-loop "$FUNCNAME" "$@"; @@ -66,6 +69,9 @@ function mirror() { if [ -n "$mode" ]; then instargs[${#instargs[@]}]="--mode=$mode"; fi; + if [ "$preserve" == "true" ]; then + instargs[${#instargs[@]}]="--preserve-timestamps"; + fi; local dstpath="${files[$(($count-1))]}"; unset files[$(($count-1))]; -- cgit v1.2.3