diff options
author | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
---|---|---|
committer | wbx <wbx@hydrogenium.(none)> | 2009-05-17 14:41:34 +0200 |
commit | 219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch) | |
tree | b9c0f3c43aebba2fcfef777592d0add39f2072f4 /package/cgilib/patches/patch-install-sh |
Initial import
Diffstat (limited to 'package/cgilib/patches/patch-install-sh')
-rw-r--r-- | package/cgilib/patches/patch-install-sh | 641 |
1 files changed, 641 insertions, 0 deletions
diff --git a/package/cgilib/patches/patch-install-sh b/package/cgilib/patches/patch-install-sh new file mode 100644 index 000000000..a4ebbb915 --- /dev/null +++ b/package/cgilib/patches/patch-install-sh @@ -0,0 +1,641 @@ +$Id: update-patches 24 2008-08-31 14:56:13Z wbx $ +--- cgilib-0.7.orig/install-sh 2009-02-08 19:47:04.000000000 +0100 ++++ cgilib-0.7/install-sh 2009-05-09 03:58:09.000000000 +0200 +@@ -1,7 +1,7 @@ + #!/bin/sh + # install - install a program, script, or datafile + +-scriptversion=2006-12-25.00 ++scriptversion=2005-05-14.22 + + # This originates from X11R5 (mit/util/scripts/install.sh), which was + # later released in X11R6 (xc/config/util/install.sh) with the +@@ -39,68 +39,38 @@ scriptversion=2006-12-25.00 + # when there is no Makefile. + # + # This script is compatible with the BSD install script, but was written +-# from scratch. +- +-nl=' +-' +-IFS=" "" $nl" ++# from scratch. It can only install one file at a time, a restriction ++# shared with many OS's install programs. + + # set DOITPROG to echo to test this script + + # Don't use :- since 4.3BSD and earlier shells don't like it. +-doit=${DOITPROG-} +-if test -z "$doit"; then +- doit_exec=exec +-else +- doit_exec=$doit +-fi +- +-# Put in absolute file names if you don't have them in your path; +-# or use environment vars. +- +-chgrpprog=${CHGRPPROG-chgrp} +-chmodprog=${CHMODPROG-chmod} +-chownprog=${CHOWNPROG-chown} +-cmpprog=${CMPPROG-cmp} +-cpprog=${CPPROG-cp} +-mkdirprog=${MKDIRPROG-mkdir} +-mvprog=${MVPROG-mv} +-rmprog=${RMPROG-rm} +-stripprog=${STRIPPROG-strip} +- +-posix_glob='?' +-initialize_posix_glob=' +- test "$posix_glob" != "?" || { +- if (set -f) 2>/dev/null; then +- posix_glob= +- else +- posix_glob=: +- fi +- } +-' ++doit="${DOITPROG-}" + +-posix_mkdir= ++# put in absolute paths if you don't have them in your path; or use env. vars. + +-# Desired mode of installed file. +-mode=0755 ++mvprog="${MVPROG-mv}" ++cpprog="${CPPROG-cp}" ++chmodprog="${CHMODPROG-chmod}" ++chownprog="${CHOWNPROG-chown}" ++chgrpprog="${CHGRPPROG-chgrp}" ++stripprog="${STRIPPROG-strip}" ++rmprog="${RMPROG-rm}" ++mkdirprog="${MKDIRPROG-mkdir}" + +-chgrpcmd= +-chmodcmd=$chmodprog ++chmodcmd="$chmodprog 0755" + chowncmd= +-mvcmd=$mvprog +-rmcmd="$rmprog -f" ++chgrpcmd= + stripcmd= +- ++rmcmd="$rmprog -f" ++mvcmd="$mvprog" + src= + dst= + dir_arg= +-dst_arg= +- +-copy_on_change=false ++dstarg= + no_target_directory= + +-usage="\ +-Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE ++usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... +@@ -110,86 +80,81 @@ In the 2nd and 3rd, copy all SRCFILES to + In the 4th, create DIRECTORIES. + + Options: +- --help display this help and exit. +- --version display version info and exit. +- +- -c (ignored) +- -C install only if different (preserve the last data modification time) +- -d create directories instead of installing files. +- -g GROUP $chgrpprog installed files to GROUP. +- -m MODE $chmodprog installed files to MODE. +- -o USER $chownprog installed files to USER. +- -s $stripprog installed files. +- -t DIRECTORY install into DIRECTORY. +- -T report an error if DSTFILE is a directory. ++-c (ignored) ++-d create directories instead of installing files. ++-g GROUP $chgrpprog installed files to GROUP. ++-m MODE $chmodprog installed files to MODE. ++-o USER $chownprog installed files to USER. ++-s $stripprog installed files. ++-t DIRECTORY install into DIRECTORY. ++-T report an error if DSTFILE is a directory. ++--help display this help and exit. ++--version display version info and exit. + + Environment variables override the default commands: +- CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG +- RMPROG STRIPPROG ++ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG + " + +-while test $# -ne 0; do ++while test -n "$1"; do + case $1 in +- -c) ;; +- +- -C) copy_on_change=true;; ++ -c) shift ++ continue;; + +- -d) dir_arg=true;; ++ -d) dir_arg=true ++ shift ++ continue;; + + -g) chgrpcmd="$chgrpprog $2" +- shift;; ++ shift ++ shift ++ continue;; + + --help) echo "$usage"; exit $?;; + +- -m) mode=$2 +- case $mode in +- *' '* | *' '* | *' +-'* | *'*'* | *'?'* | *'['*) +- echo "$0: invalid mode: $mode" >&2 +- exit 1;; +- esac +- shift;; ++ -m) chmodcmd="$chmodprog $2" ++ shift ++ shift ++ continue;; + + -o) chowncmd="$chownprog $2" +- shift;; ++ shift ++ shift ++ continue;; + +- -s) stripcmd=$stripprog;; ++ -s) stripcmd=$stripprog ++ shift ++ continue;; + +- -t) dst_arg=$2 +- shift;; ++ -t) dstarg=$2 ++ shift ++ shift ++ continue;; + +- -T) no_target_directory=true;; ++ -T) no_target_directory=true ++ shift ++ continue;; + + --version) echo "$0 $scriptversion"; exit $?;; + +- --) shift ++ *) # When -d is used, all remaining arguments are directories to create. ++ # When -t is used, the destination is already specified. ++ test -n "$dir_arg$dstarg" && break ++ # Otherwise, the last argument is the destination. Remove it from $@. ++ for arg ++ do ++ if test -n "$dstarg"; then ++ # $@ is not empty: it contains at least $arg. ++ set fnord "$@" "$dstarg" ++ shift # fnord ++ fi ++ shift # arg ++ dstarg=$arg ++ done + break;; +- +- -*) echo "$0: invalid option: $1" >&2 +- exit 1;; +- +- *) break;; + esac +- shift + done + +-if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then +- # When -d is used, all remaining arguments are directories to create. +- # When -t is used, the destination is already specified. +- # Otherwise, the last argument is the destination. Remove it from $@. +- for arg +- do +- if test -n "$dst_arg"; then +- # $@ is not empty: it contains at least $arg. +- set fnord "$@" "$dst_arg" +- shift # fnord +- fi +- shift # arg +- dst_arg=$arg +- done +-fi +- +-if test $# -eq 0; then ++if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 +@@ -199,47 +164,24 @@ if test $# -eq 0; then + exit 0 + fi + +-if test -z "$dir_arg"; then +- trap '(exit $?); exit' 1 2 13 15 +- +- # Set umask so as not to create temps with too-generous modes. +- # However, 'strip' requires both read and write access to temps. +- case $mode in +- # Optimize common cases. +- *644) cp_umask=133;; +- *755) cp_umask=22;; +- +- *[0-7]) +- if test -z "$stripcmd"; then +- u_plus_rw= +- else +- u_plus_rw='% 200' +- fi +- cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; +- *) +- if test -z "$stripcmd"; then +- u_plus_rw= +- else +- u_plus_rw=,u+rw +- fi +- cp_umask=$mode$u_plus_rw;; +- esac +-fi +- + for src + do + # Protect names starting with `-'. + case $src in +- -*) src=./$src;; ++ -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src +- dstdir=$dst +- test -d "$dstdir" +- dstdir_status=$? +- else ++ src= + ++ if test -d "$dst"; then ++ mkdircmd=: ++ chmodcmd= ++ else ++ mkdircmd=$mkdirprog ++ fi ++ else + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. +@@ -248,199 +190,71 @@ do + exit 1 + fi + +- if test -z "$dst_arg"; then ++ if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + +- dst=$dst_arg ++ dst=$dstarg + # Protect names starting with `-'. + case $dst in +- -*) dst=./$dst;; ++ -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then +- echo "$0: $dst_arg: Is a directory" >&2 ++ echo "$0: $dstarg: Is a directory" >&2 + exit 1 + fi +- dstdir=$dst +- dst=$dstdir/`basename "$src"` +- dstdir_status=0 +- else +- # Prefer dirname, but fall back on a substitute if dirname fails. +- dstdir=` +- (dirname "$dst") 2>/dev/null || +- expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$dst" : 'X\(//\)[^/]' \| \ +- X"$dst" : 'X\(//\)$' \| \ +- X"$dst" : 'X\(/\)' \| . 2>/dev/null || +- echo X"$dst" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)[^/].*/{ +- s//\1/ +- q +- } +- /^X\(\/\/\)$/{ +- s//\1/ +- q +- } +- /^X\(\/\).*/{ +- s//\1/ +- q +- } +- s/.*/./; q' +- ` +- +- test -d "$dstdir" +- dstdir_status=$? ++ dst=$dst/`basename "$src"` + fi + fi + +- obsolete_mkdir_used=false +- +- if test $dstdir_status != 0; then +- case $posix_mkdir in +- '') +- # Create intermediate dirs using mode 755 as modified by the umask. +- # This is like FreeBSD 'install' as of 1997-10-28. +- umask=`umask` +- case $stripcmd.$umask in +- # Optimize common cases. +- *[2367][2367]) mkdir_umask=$umask;; +- .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; +- +- *[0-7]) +- mkdir_umask=`expr $umask + 22 \ +- - $umask % 100 % 40 + $umask % 20 \ +- - $umask % 10 % 4 + $umask % 2 +- `;; +- *) mkdir_umask=$umask,go-w;; +- esac +- +- # With -d, create the new directory with the user-specified mode. +- # Otherwise, rely on $mkdir_umask. +- if test -n "$dir_arg"; then +- mkdir_mode=-m$mode +- else +- mkdir_mode= +- fi +- +- posix_mkdir=false +- case $umask in +- *[123567][0-7][0-7]) +- # POSIX mkdir -p sets u+wx bits regardless of umask, which +- # is incompatible with FreeBSD 'install' when (umask & 300) != 0. +- ;; +- *) +- tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ +- trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 +- +- if (umask $mkdir_umask && +- exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 +- then +- if test -z "$dir_arg" || { +- # Check for POSIX incompatibilities with -m. +- # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or +- # other-writeable bit of parent directory when it shouldn't. +- # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. +- ls_ld_tmpdir=`ls -ld "$tmpdir"` +- case $ls_ld_tmpdir in +- d????-?r-*) different_mode=700;; +- d????-?--*) different_mode=755;; +- *) false;; +- esac && +- $mkdirprog -m$different_mode -p -- "$tmpdir" && { +- ls_ld_tmpdir_1=`ls -ld "$tmpdir"` +- test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" +- } +- } +- then posix_mkdir=: +- fi +- rmdir "$tmpdir/d" "$tmpdir" +- else +- # Remove any dirs left behind by ancient mkdir implementations. +- rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null +- fi +- trap '' 0;; +- esac;; +- esac ++ # This sed command emulates the dirname command. ++ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` + +- if +- $posix_mkdir && ( +- umask $mkdir_umask && +- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" +- ) +- then : +- else ++ # Make sure that the destination directory exists. + +- # The umask is ridiculous, or mkdir does not conform to POSIX, +- # or it failed possibly due to a race condition. Create the +- # directory the slow way, step by step, checking for races as we go. ++ # Skip lots of stat calls in the usual case. ++ if test ! -d "$dstdir"; then ++ defaultIFS=' ++ ' ++ IFS="${IFS-$defaultIFS}" + +- case $dstdir in +- /*) prefix='/';; +- -*) prefix='./';; +- *) prefix='';; +- esac ++ oIFS=$IFS ++ # Some sh's can't handle IFS=/ for some reason. ++ IFS='%' ++ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` ++ shift ++ IFS=$oIFS + +- eval "$initialize_posix_glob" ++ pathcomp= + +- oIFS=$IFS +- IFS=/ +- $posix_glob set -f +- set fnord $dstdir ++ while test $# -ne 0 ; do ++ pathcomp=$pathcomp$1 + shift +- $posix_glob set +f +- IFS=$oIFS +- +- prefixes= +- +- for d +- do +- test -z "$d" && continue +- +- prefix=$prefix$d +- if test -d "$prefix"; then +- prefixes= +- else +- if $posix_mkdir; then +- (umask=$mkdir_umask && +- $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break +- # Don't fail if two instances are running concurrently. +- test -d "$prefix" || exit 1 +- else +- case $prefix in +- *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; +- *) qprefix=$prefix;; +- esac +- prefixes="$prefixes '$qprefix'" +- fi +- fi +- prefix=$prefix/ +- done +- +- if test -n "$prefixes"; then +- # Don't fail if two instances are running concurrently. +- (umask $mkdir_umask && +- eval "\$doit_exec \$mkdirprog $prefixes") || +- test -d "$dstdir" || exit 1 +- obsolete_mkdir_used=true ++ if test ! -d "$pathcomp"; then ++ $mkdirprog "$pathcomp" ++ # mkdir can fail with a `File exist' error in case several ++ # install-sh are creating the directory concurrently. This ++ # is OK. ++ test -d "$pathcomp" || exit + fi +- fi ++ pathcomp=$pathcomp/ ++ done + fi + + if test -n "$dir_arg"; then +- { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && +- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && +- { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || +- test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 ++ $doit $mkdircmd "$dst" \ ++ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ ++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ ++ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ ++ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } ++ + else ++ dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ +@@ -448,9 +262,10 @@ do + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 ++ trap '(exit $?); exit' 1 2 13 15 + + # Copy the file name to the temp name. +- (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && ++ $doit $cpprog "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # +@@ -458,59 +273,48 @@ do + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # +- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && +- { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && +- { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && +- { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && +- +- # If -C, don't bother to copy if it wouldn't change the file. +- if $copy_on_change && +- old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && +- new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && +- +- eval "$initialize_posix_glob" && +- $posix_glob set -f && +- set X $old && old=:$2:$4:$5:$6 && +- set X $new && new=:$2:$4:$5:$6 && +- $posix_glob set +f && +- +- test "$old" = "$new" && +- $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 +- then +- rm -f "$dsttmp" +- else +- # Rename the file to the real destination. +- $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || ++ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ ++ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ ++ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ ++ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + +- # The rename failed, perhaps because mv can't rename something else +- # to itself, or perhaps because mv is so ancient that it does not +- # support -f. +- { +- # Now remove or move aside any old file at destination location. +- # We try this two ways since rm can't unlink itself on some +- # systems and the destination file might be busy for other +- # reasons. In this case, the final cleanup might fail but the new +- # file should still install successfully. +- { +- test ! -f "$dst" || +- $doit $rmcmd -f "$dst" 2>/dev/null || +- { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && +- { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } +- } || +- { echo "$0: cannot unlink or rename $dst" >&2 +- (exit 1); exit 1 +- } +- } && ++ # Now rename the file to the real destination. ++ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ ++ || { ++ # The rename failed, perhaps because mv can't rename something else ++ # to itself, or perhaps because mv is so ancient that it does not ++ # support -f. + +- # Now rename the file to the real destination. +- $doit $mvcmd "$dsttmp" "$dst" +- } +- fi || exit 1 ++ # Now remove or move aside any old file at destination location. ++ # We try this two ways since rm can't unlink itself on some ++ # systems and the destination file might be busy for other ++ # reasons. In this case, the final cleanup might fail but the new ++ # file should still install successfully. ++ { ++ if test -f "$dstdir/$dstfile"; then ++ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ ++ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ ++ || { ++ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 ++ (exit 1); exit 1 ++ } ++ else ++ : ++ fi ++ } && + +- trap '' 0 +- fi ++ # Now rename the file to the real destination. ++ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" ++ } ++ } ++ fi || { (exit 1); exit 1; } + done + ++# The final little trick to "correctly" pass the exit status to the exit trap. ++{ ++ (exit 0); exit 0 ++} ++ + # Local variables: + # eval: (add-hook 'write-file-hooks 'time-stamp) + # time-stamp-start: "scriptversion=" |