mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "e495c691ea65ead3510a23ca8592f4c0f8a6aaa1" and "eeca1f279c495092bdcbe4207585a7b7e381a688" have entirely different histories.
		
	
	
		
			e495c691ea
			...
			eeca1f279c
		
	
		
					 29 changed files with 289 additions and 328 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitattributes
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitattributes
									
										
									
									
										vendored
									
									
								
							|  | @ -4,7 +4,6 @@ | ||||||
| *.in            eol=lf | *.in            eol=lf | ||||||
| *.m4            eol=lf | *.m4            eol=lf | ||||||
| missing         eol=lf | missing         eol=lf | ||||||
| compile         eol=lf |  | ||||||
| configure       eol=lf | configure       eol=lf | ||||||
| install-sh      eol=lf | install-sh      eol=lf | ||||||
| *.sln           eol=crlf | *.sln           eol=crlf | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								.github/workflows/mingw.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.github/workflows/mingw.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -48,7 +48,6 @@ jobs: | ||||||
|         install: >- |         install: >- | ||||||
|           mingw-w64-${{ matrix.env }}-toolchain |           mingw-w64-${{ matrix.env }}-toolchain | ||||||
|           base-devel |           base-devel | ||||||
|           autotools |  | ||||||
|           git |           git | ||||||
|           upx |           upx | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										436
									
								
								install-sh
									
										
									
									
									
								
							
							
						
						
									
										436
									
								
								install-sh
									
										
									
									
									
								
							|  | @ -1,7 +1,7 @@ | ||||||
| #!/bin/sh | #!/bin/sh | ||||||
| # install - install a program, script, or datafile | # install - install a program, script, or datafile | ||||||
| 
 | 
 | ||||||
| scriptversion=2020-11-14.01; # UTC | scriptversion=2009-04-28.21; # UTC | ||||||
| 
 | 
 | ||||||
| # This originates from X11R5 (mit/util/scripts/install.sh), which was | # This originates from X11R5 (mit/util/scripts/install.sh), which was | ||||||
| # later released in X11R6 (xc/config/util/install.sh) with the | # later released in X11R6 (xc/config/util/install.sh) with the | ||||||
|  | @ -35,21 +35,25 @@ scriptversion=2020-11-14.01; # UTC | ||||||
| # FSF changes to this file are in the public domain. | # FSF changes to this file are in the public domain. | ||||||
| # | # | ||||||
| # Calling this script install-sh is preferred over install.sh, to prevent | # Calling this script install-sh is preferred over install.sh, to prevent | ||||||
| # 'make' implicit rules from creating a file called install from it | # `make' implicit rules from creating a file called install from it | ||||||
| # when there is no Makefile. | # when there is no Makefile. | ||||||
| # | # | ||||||
| # This script is compatible with the BSD install script, but was written | # This script is compatible with the BSD install script, but was written | ||||||
| # from scratch. | # from scratch. | ||||||
| 
 | 
 | ||||||
| tab='	' |  | ||||||
| nl=' | nl=' | ||||||
| ' | ' | ||||||
| IFS=" $tab$nl" | IFS=" ""	$nl" | ||||||
| 
 | 
 | ||||||
| # Set DOITPROG to "echo" to test this script. | # set DOITPROG to echo to test this script | ||||||
| 
 | 
 | ||||||
|  | # Don't use :- since 4.3BSD and earlier shells don't like it. | ||||||
| doit=${DOITPROG-} | doit=${DOITPROG-} | ||||||
| doit_exec=${doit:-exec} | 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; | # Put in absolute file names if you don't have them in your path; | ||||||
| # or use environment vars. | # or use environment vars. | ||||||
|  | @ -64,16 +68,22 @@ mvprog=${MVPROG-mv} | ||||||
| rmprog=${RMPROG-rm} | rmprog=${RMPROG-rm} | ||||||
| stripprog=${STRIPPROG-strip} | stripprog=${STRIPPROG-strip} | ||||||
| 
 | 
 | ||||||
|  | posix_glob='?' | ||||||
|  | initialize_posix_glob=' | ||||||
|  |   test "$posix_glob" != "?" || { | ||||||
|  |     if (set -f) 2>/dev/null; then | ||||||
|  |       posix_glob= | ||||||
|  |     else | ||||||
|  |       posix_glob=: | ||||||
|  |     fi | ||||||
|  |   } | ||||||
|  | ' | ||||||
|  | 
 | ||||||
| posix_mkdir= | posix_mkdir= | ||||||
| 
 | 
 | ||||||
| # Desired mode of installed file. | # Desired mode of installed file. | ||||||
| mode=0755 | mode=0755 | ||||||
| 
 | 
 | ||||||
| # Create dirs (including intermediate dirs) using mode 755. |  | ||||||
| # This is like GNU 'install' as of coreutils 8.32 (2020). |  | ||||||
| mkdir_umask=22 |  | ||||||
| 
 |  | ||||||
| backupsuffix= |  | ||||||
| chgrpcmd= | chgrpcmd= | ||||||
| chmodcmd=$chmodprog | chmodcmd=$chmodprog | ||||||
| chowncmd= | chowncmd= | ||||||
|  | @ -87,7 +97,7 @@ dir_arg= | ||||||
| dst_arg= | dst_arg= | ||||||
| 
 | 
 | ||||||
| copy_on_change=false | copy_on_change=false | ||||||
| is_target_a_directory=possibly | no_target_directory= | ||||||
| 
 | 
 | ||||||
| usage="\ | usage="\ | ||||||
| Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE | Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE | ||||||
|  | @ -104,28 +114,18 @@ Options: | ||||||
|      --version  display version info and exit. |      --version  display version info and exit. | ||||||
| 
 | 
 | ||||||
|   -c            (ignored) |   -c            (ignored) | ||||||
|   -C            install only if different (preserve data modification time) |   -C            install only if different (preserve the last data modification time) | ||||||
|   -d            create directories instead of installing files. |   -d            create directories instead of installing files. | ||||||
|   -g GROUP      $chgrpprog installed files to GROUP. |   -g GROUP      $chgrpprog installed files to GROUP. | ||||||
|   -m MODE       $chmodprog installed files to MODE. |   -m MODE       $chmodprog installed files to MODE. | ||||||
|   -o USER       $chownprog installed files to USER. |   -o USER       $chownprog installed files to USER. | ||||||
|   -p            pass -p to $cpprog. |  | ||||||
|   -s            $stripprog installed files. |   -s            $stripprog installed files. | ||||||
|   -S SUFFIX     attempt to back up existing files, with suffix SUFFIX. |  | ||||||
|   -t DIRECTORY  install into DIRECTORY. |   -t DIRECTORY  install into DIRECTORY. | ||||||
|   -T            report an error if DSTFILE is a directory. |   -T            report an error if DSTFILE is a directory. | ||||||
| 
 | 
 | ||||||
| Environment variables override the default commands: | Environment variables override the default commands: | ||||||
|   CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG |   CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG | ||||||
|   RMPROG STRIPPROG |   RMPROG STRIPPROG | ||||||
| 
 |  | ||||||
| By default, rm is invoked with -f; when overridden with RMPROG, |  | ||||||
| it's up to you to specify -f if you want it. |  | ||||||
| 
 |  | ||||||
| If -S is not specified, no backups are attempted. |  | ||||||
| 
 |  | ||||||
| Email bug reports to bug-automake@gnu.org. |  | ||||||
| Automake home page: https://www.gnu.org/software/automake/ |  | ||||||
| " | " | ||||||
| 
 | 
 | ||||||
| while test $# -ne 0; do | while test $# -ne 0; do | ||||||
|  | @ -137,62 +137,42 @@ while test $# -ne 0; do | ||||||
|     -d) dir_arg=true;; |     -d) dir_arg=true;; | ||||||
| 
 | 
 | ||||||
|     -g) chgrpcmd="$chgrpprog $2" |     -g) chgrpcmd="$chgrpprog $2" | ||||||
|         shift;; | 	shift;; | ||||||
| 
 | 
 | ||||||
|     --help) echo "$usage"; exit $?;; |     --help) echo "$usage"; exit $?;; | ||||||
| 
 | 
 | ||||||
|     -m) mode=$2 |     -m) mode=$2 | ||||||
|         case $mode in | 	case $mode in | ||||||
|           *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) | 	  *' '* | *'	'* | *' | ||||||
|             echo "$0: invalid mode: $mode" >&2 | '*	  | *'*'* | *'?'* | *'['*) | ||||||
|             exit 1;; | 	    echo "$0: invalid mode: $mode" >&2 | ||||||
|         esac | 	    exit 1;; | ||||||
|         shift;; | 	esac | ||||||
|  | 	shift;; | ||||||
| 
 | 
 | ||||||
|     -o) chowncmd="$chownprog $2" |     -o) chowncmd="$chownprog $2" | ||||||
|         shift;; | 	shift;; | ||||||
| 
 |  | ||||||
|     -p) cpprog="$cpprog -p";; |  | ||||||
| 
 | 
 | ||||||
|     -s) stripcmd=$stripprog;; |     -s) stripcmd=$stripprog;; | ||||||
| 
 | 
 | ||||||
|     -S) backupsuffix="$2" |     -t) dst_arg=$2 | ||||||
|         shift;; | 	shift;; | ||||||
| 
 | 
 | ||||||
|     -t) |     -T) no_target_directory=true;; | ||||||
|         is_target_a_directory=always |  | ||||||
|         dst_arg=$2 |  | ||||||
|         # Protect names problematic for 'test' and other utilities. |  | ||||||
|         case $dst_arg in |  | ||||||
|           -* | [=\(\)!]) dst_arg=./$dst_arg;; |  | ||||||
|         esac |  | ||||||
|         shift;; |  | ||||||
| 
 |  | ||||||
|     -T) is_target_a_directory=never;; |  | ||||||
| 
 | 
 | ||||||
|     --version) echo "$0 $scriptversion"; exit $?;; |     --version) echo "$0 $scriptversion"; exit $?;; | ||||||
| 
 | 
 | ||||||
|     --) shift |     --)	shift | ||||||
|         break;; | 	break;; | ||||||
| 
 | 
 | ||||||
|     -*) echo "$0: invalid option: $1" >&2 |     -*)	echo "$0: invalid option: $1" >&2 | ||||||
|         exit 1;; | 	exit 1;; | ||||||
| 
 | 
 | ||||||
|     *)  break;; |     *)  break;; | ||||||
|   esac |   esac | ||||||
|   shift |   shift | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| # We allow the use of options -d and -T together, by making -d |  | ||||||
| # take the precedence; this is for compatibility with GNU install. |  | ||||||
| 
 |  | ||||||
| if test -n "$dir_arg"; then |  | ||||||
|   if test -n "$dst_arg"; then |  | ||||||
|     echo "$0: target directory not allowed when installing a directory." >&2 |  | ||||||
|     exit 1 |  | ||||||
|   fi |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then | if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then | ||||||
|   # When -d is used, all remaining arguments are directories to create. |   # When -d is used, all remaining arguments are directories to create. | ||||||
|   # When -t is used, the destination is already specified. |   # When -t is used, the destination is already specified. | ||||||
|  | @ -206,10 +186,6 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then | ||||||
|     fi |     fi | ||||||
|     shift # arg |     shift # arg | ||||||
|     dst_arg=$arg |     dst_arg=$arg | ||||||
|     # Protect names problematic for 'test' and other utilities. |  | ||||||
|     case $dst_arg in |  | ||||||
|       -* | [=\(\)!]) dst_arg=./$dst_arg;; |  | ||||||
|     esac |  | ||||||
|   done |   done | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
|  | @ -218,26 +194,13 @@ if test $# -eq 0; then | ||||||
|     echo "$0: no input file specified." >&2 |     echo "$0: no input file specified." >&2 | ||||||
|     exit 1 |     exit 1 | ||||||
|   fi |   fi | ||||||
|   # It's OK to call 'install-sh -d' without argument. |   # It's OK to call `install-sh -d' without argument. | ||||||
|   # This can happen when creating conditional directories. |   # This can happen when creating conditional directories. | ||||||
|   exit 0 |   exit 0 | ||||||
| fi | fi | ||||||
| 
 | 
 | ||||||
| if test -z "$dir_arg"; then | if test -z "$dir_arg"; then | ||||||
|   if test $# -gt 1 || test "$is_target_a_directory" = always; then |   trap '(exit $?); exit' 1 2 13 15 | ||||||
|     if test ! -d "$dst_arg"; then |  | ||||||
|       echo "$0: $dst_arg: Is not a directory." >&2 |  | ||||||
|       exit 1 |  | ||||||
|     fi |  | ||||||
|   fi |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| if test -z "$dir_arg"; then |  | ||||||
|   do_exit='(exit $ret); exit $ret' |  | ||||||
|   trap "ret=129; $do_exit" 1 |  | ||||||
|   trap "ret=130; $do_exit" 2 |  | ||||||
|   trap "ret=141; $do_exit" 13 |  | ||||||
|   trap "ret=143; $do_exit" 15 |  | ||||||
| 
 | 
 | ||||||
|   # Set umask so as not to create temps with too-generous modes. |   # Set umask so as not to create temps with too-generous modes. | ||||||
|   # However, 'strip' requires both read and write access to temps. |   # However, 'strip' requires both read and write access to temps. | ||||||
|  | @ -248,16 +211,16 @@ if test -z "$dir_arg"; then | ||||||
| 
 | 
 | ||||||
|     *[0-7]) |     *[0-7]) | ||||||
|       if test -z "$stripcmd"; then |       if test -z "$stripcmd"; then | ||||||
|         u_plus_rw= | 	u_plus_rw= | ||||||
|       else |       else | ||||||
|         u_plus_rw='% 200' | 	u_plus_rw='% 200' | ||||||
|       fi |       fi | ||||||
|       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; |       cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; | ||||||
|     *) |     *) | ||||||
|       if test -z "$stripcmd"; then |       if test -z "$stripcmd"; then | ||||||
|         u_plus_rw= | 	u_plus_rw= | ||||||
|       else |       else | ||||||
|         u_plus_rw=,u+rw | 	u_plus_rw=,u+rw | ||||||
|       fi |       fi | ||||||
|       cp_umask=$mode$u_plus_rw;; |       cp_umask=$mode$u_plus_rw;; | ||||||
|   esac |   esac | ||||||
|  | @ -265,9 +228,9 @@ fi | ||||||
| 
 | 
 | ||||||
| for src | for src | ||||||
| do | do | ||||||
|   # Protect names problematic for 'test' and other utilities. |   # Protect names starting with `-'. | ||||||
|   case $src in |   case $src in | ||||||
|     -* | [=\(\)!]) src=./$src;; |     -*) src=./$src;; | ||||||
|   esac |   esac | ||||||
| 
 | 
 | ||||||
|   if test -n "$dir_arg"; then |   if test -n "$dir_arg"; then | ||||||
|  | @ -275,10 +238,6 @@ do | ||||||
|     dstdir=$dst |     dstdir=$dst | ||||||
|     test -d "$dstdir" |     test -d "$dstdir" | ||||||
|     dstdir_status=$? |     dstdir_status=$? | ||||||
|     # Don't chown directories that already exist. |  | ||||||
|     if test $dstdir_status = 0; then |  | ||||||
|       chowncmd="" |  | ||||||
|     fi |  | ||||||
|   else |   else | ||||||
| 
 | 
 | ||||||
|     # Waiting for this to be detected by the "$cpprog $src $dsttmp" command |     # Waiting for this to be detected by the "$cpprog $src $dsttmp" command | ||||||
|  | @ -293,150 +252,185 @@ do | ||||||
|       echo "$0: no destination specified." >&2 |       echo "$0: no destination specified." >&2 | ||||||
|       exit 1 |       exit 1 | ||||||
|     fi |     fi | ||||||
|     dst=$dst_arg |  | ||||||
| 
 | 
 | ||||||
|     # If destination is a directory, append the input filename. |     dst=$dst_arg | ||||||
|  |     # Protect names starting with `-'. | ||||||
|  |     case $dst in | ||||||
|  |       -*) 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 -d "$dst"; then | ||||||
|       if test "$is_target_a_directory" = never; then |       if test -n "$no_target_directory"; then | ||||||
|         echo "$0: $dst_arg: Is a directory" >&2 | 	echo "$0: $dst_arg: Is a directory" >&2 | ||||||
|         exit 1 | 	exit 1 | ||||||
|       fi |       fi | ||||||
|       dstdir=$dst |       dstdir=$dst | ||||||
|       dstbase=`basename "$src"` |       dst=$dstdir/`basename "$src"` | ||||||
|       case $dst in |  | ||||||
| 	*/) dst=$dst$dstbase;; |  | ||||||
| 	*)  dst=$dst/$dstbase;; |  | ||||||
|       esac |  | ||||||
|       dstdir_status=0 |       dstdir_status=0 | ||||||
|     else |     else | ||||||
|       dstdir=`dirname "$dst"` |       # 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" |       test -d "$dstdir" | ||||||
|       dstdir_status=$? |       dstdir_status=$? | ||||||
|     fi |     fi | ||||||
|   fi |   fi | ||||||
| 
 | 
 | ||||||
|   case $dstdir in |  | ||||||
|     */) dstdirslash=$dstdir;; |  | ||||||
|     *)  dstdirslash=$dstdir/;; |  | ||||||
|   esac |  | ||||||
| 
 |  | ||||||
|   obsolete_mkdir_used=false |   obsolete_mkdir_used=false | ||||||
| 
 | 
 | ||||||
|   if test $dstdir_status != 0; then |   if test $dstdir_status != 0; then | ||||||
|     case $posix_mkdir in |     case $posix_mkdir in | ||||||
|       '') |       '') | ||||||
|         # With -d, create the new directory with the user-specified mode. | 	# Create intermediate dirs using mode 755 as modified by the umask. | ||||||
|         # Otherwise, rely on $mkdir_umask. | 	# This is like FreeBSD 'install' as of 1997-10-28. | ||||||
|         if test -n "$dir_arg"; then | 	umask=`umask` | ||||||
|           mkdir_mode=-m$mode | 	case $stripcmd.$umask in | ||||||
|         else | 	  # Optimize common cases. | ||||||
|           mkdir_mode= | 	  *[2367][2367]) mkdir_umask=$umask;; | ||||||
|         fi | 	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; | ||||||
| 
 | 
 | ||||||
|         posix_mkdir=false | 	  *[0-7]) | ||||||
| 	# The $RANDOM variable is not portable (e.g., dash).  Use it | 	    mkdir_umask=`expr $umask + 22 \ | ||||||
| 	# here however when possible just to lower collision chance. | 	      - $umask % 100 % 40 + $umask % 20 \ | ||||||
| 	tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ | 	      - $umask % 10 % 4 + $umask % 2 | ||||||
|  | 	    `;; | ||||||
|  | 	  *) mkdir_umask=$umask,go-w;; | ||||||
|  | 	esac | ||||||
| 
 | 
 | ||||||
| 	trap ' | 	# With -d, create the new directory with the user-specified mode. | ||||||
| 	  ret=$? | 	# Otherwise, rely on $mkdir_umask. | ||||||
| 	  rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null | 	if test -n "$dir_arg"; then | ||||||
| 	  exit $ret | 	  mkdir_mode=-m$mode | ||||||
| 	' 0 |  | ||||||
| 
 |  | ||||||
| 	# Because "mkdir -p" follows existing symlinks and we likely work |  | ||||||
| 	# directly in world-writeable /tmp, make sure that the '$tmpdir' |  | ||||||
| 	# directory is successfully created first before we actually test |  | ||||||
| 	# 'mkdir -p'. |  | ||||||
| 	if (umask $mkdir_umask && |  | ||||||
| 	    $mkdirprog $mkdir_mode "$tmpdir" && |  | ||||||
| 	    exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/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-writable bit of parent directory when it shouldn't. |  | ||||||
| 	       # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. |  | ||||||
| 	       test_tmpdir="$tmpdir/a" |  | ||||||
| 	       ls_ld_tmpdir=`ls -ld "$test_tmpdir"` |  | ||||||
| 	       case $ls_ld_tmpdir in |  | ||||||
| 		 d????-?r-*) different_mode=700;; |  | ||||||
| 		 d????-?--*) different_mode=755;; |  | ||||||
| 		 *) false;; |  | ||||||
| 	       esac && |  | ||||||
| 	       $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { |  | ||||||
| 		 ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` |  | ||||||
| 		 test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" |  | ||||||
| 	       } |  | ||||||
| 	     } |  | ||||||
| 	  then posix_mkdir=: |  | ||||||
| 	  fi |  | ||||||
| 	  rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" |  | ||||||
| 	else | 	else | ||||||
| 	  # Remove any dirs left behind by ancient mkdir implementations. | 	  mkdir_mode= | ||||||
| 	  rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null |  | ||||||
| 	fi | 	fi | ||||||
| 	trap '' 0;; | 
 | ||||||
|  | 	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 |     esac | ||||||
| 
 | 
 | ||||||
|     if |     if | ||||||
|       $posix_mkdir && ( |       $posix_mkdir && ( | ||||||
|         umask $mkdir_umask && | 	umask $mkdir_umask && | ||||||
|         $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" | 	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" | ||||||
|       ) |       ) | ||||||
|     then : |     then : | ||||||
|     else |     else | ||||||
| 
 | 
 | ||||||
|       # mkdir does not conform to POSIX, |       # The umask is ridiculous, or mkdir does not conform to POSIX, | ||||||
|       # or it failed possibly due to a race condition.  Create the |       # or it failed possibly due to a race condition.  Create the | ||||||
|       # directory the slow way, step by step, checking for races as we go. |       # directory the slow way, step by step, checking for races as we go. | ||||||
| 
 | 
 | ||||||
|       case $dstdir in |       case $dstdir in | ||||||
|         /*) prefix='/';; | 	/*) prefix='/';; | ||||||
|         [-=\(\)!]*) prefix='./';; | 	-*) prefix='./';; | ||||||
|         *)  prefix='';; | 	*)  prefix='';; | ||||||
|       esac |       esac | ||||||
| 
 | 
 | ||||||
|  |       eval "$initialize_posix_glob" | ||||||
|  | 
 | ||||||
|       oIFS=$IFS |       oIFS=$IFS | ||||||
|       IFS=/ |       IFS=/ | ||||||
|       set -f |       $posix_glob set -f | ||||||
|       set fnord $dstdir |       set fnord $dstdir | ||||||
|       shift |       shift | ||||||
|       set +f |       $posix_glob set +f | ||||||
|       IFS=$oIFS |       IFS=$oIFS | ||||||
| 
 | 
 | ||||||
|       prefixes= |       prefixes= | ||||||
| 
 | 
 | ||||||
|       for d |       for d | ||||||
|       do |       do | ||||||
|         test X"$d" = X && continue | 	test -z "$d" && continue | ||||||
| 
 | 
 | ||||||
|         prefix=$prefix$d | 	prefix=$prefix$d | ||||||
|         if test -d "$prefix"; then | 	if test -d "$prefix"; then | ||||||
|           prefixes= | 	  prefixes= | ||||||
|         else | 	else | ||||||
|           if $posix_mkdir; then | 	  if $posix_mkdir; then | ||||||
|             (umask $mkdir_umask && | 	    (umask=$mkdir_umask && | ||||||
|              $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break | 	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break | ||||||
|             # Don't fail if two instances are running concurrently. | 	    # Don't fail if two instances are running concurrently. | ||||||
|             test -d "$prefix" || exit 1 | 	    test -d "$prefix" || exit 1 | ||||||
|           else | 	  else | ||||||
|             case $prefix in | 	    case $prefix in | ||||||
|               *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; | 	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; | ||||||
|               *) qprefix=$prefix;; | 	      *) qprefix=$prefix;; | ||||||
|             esac | 	    esac | ||||||
|             prefixes="$prefixes '$qprefix'" | 	    prefixes="$prefixes '$qprefix'" | ||||||
|           fi | 	  fi | ||||||
|         fi | 	fi | ||||||
|         prefix=$prefix/ | 	prefix=$prefix/ | ||||||
|       done |       done | ||||||
| 
 | 
 | ||||||
|       if test -n "$prefixes"; then |       if test -n "$prefixes"; then | ||||||
|         # Don't fail if two instances are running concurrently. | 	# Don't fail if two instances are running concurrently. | ||||||
|         (umask $mkdir_umask && | 	(umask $mkdir_umask && | ||||||
|          eval "\$doit_exec \$mkdirprog $prefixes") || | 	 eval "\$doit_exec \$mkdirprog $prefixes") || | ||||||
|           test -d "$dstdir" || exit 1 | 	  test -d "$dstdir" || exit 1 | ||||||
|         obsolete_mkdir_used=true | 	obsolete_mkdir_used=true | ||||||
|       fi |       fi | ||||||
|     fi |     fi | ||||||
|   fi |   fi | ||||||
|  | @ -449,25 +443,14 @@ do | ||||||
|   else |   else | ||||||
| 
 | 
 | ||||||
|     # Make a couple of temp file names in the proper directory. |     # Make a couple of temp file names in the proper directory. | ||||||
|     dsttmp=${dstdirslash}_inst.$$_ |     dsttmp=$dstdir/_inst.$$_ | ||||||
|     rmtmp=${dstdirslash}_rm.$$_ |     rmtmp=$dstdir/_rm.$$_ | ||||||
| 
 | 
 | ||||||
|     # Trap to clean up those temp files at exit. |     # Trap to clean up those temp files at exit. | ||||||
|     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 |     trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 | ||||||
| 
 | 
 | ||||||
|     # Copy the file name to the temp name. |     # Copy the file name to the temp name. | ||||||
|     (umask $cp_umask && |     (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && | ||||||
|      { test -z "$stripcmd" || { |  | ||||||
| 	 # Create $dsttmp read-write so that cp doesn't create it read-only, |  | ||||||
| 	 # which would cause strip to fail. |  | ||||||
| 	 if test -z "$doit"; then |  | ||||||
| 	   : >"$dsttmp" # No need to fork-exec 'touch'. |  | ||||||
| 	 else |  | ||||||
| 	   $doit touch "$dsttmp" |  | ||||||
| 	 fi |  | ||||||
|        } |  | ||||||
|      } && |  | ||||||
|      $doit_exec $cpprog "$src" "$dsttmp") && |  | ||||||
| 
 | 
 | ||||||
|     # and set any options; do chmod last to preserve setuid bits. |     # and set any options; do chmod last to preserve setuid bits. | ||||||
|     # |     # | ||||||
|  | @ -482,24 +465,20 @@ do | ||||||
| 
 | 
 | ||||||
|     # If -C, don't bother to copy if it wouldn't change the file. |     # If -C, don't bother to copy if it wouldn't change the file. | ||||||
|     if $copy_on_change && |     if $copy_on_change && | ||||||
|        old=`LC_ALL=C ls -dlL "$dst"     2>/dev/null` && |        old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` && | ||||||
|        new=`LC_ALL=C ls -dlL "$dsttmp"  2>/dev/null` && |        new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` && | ||||||
|        set -f && | 
 | ||||||
|  |        eval "$initialize_posix_glob" && | ||||||
|  |        $posix_glob set -f && | ||||||
|        set X $old && old=:$2:$4:$5:$6 && |        set X $old && old=:$2:$4:$5:$6 && | ||||||
|        set X $new && new=:$2:$4:$5:$6 && |        set X $new && new=:$2:$4:$5:$6 && | ||||||
|        set +f && |        $posix_glob set +f && | ||||||
|  | 
 | ||||||
|        test "$old" = "$new" && |        test "$old" = "$new" && | ||||||
|        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 |        $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 | ||||||
|     then |     then | ||||||
|       rm -f "$dsttmp" |       rm -f "$dsttmp" | ||||||
|     else |     else | ||||||
|       # If $backupsuffix is set, and the file being installed |  | ||||||
|       # already exists, attempt a backup.  Don't worry if it fails, |  | ||||||
|       # e.g., if mv doesn't support -f. |  | ||||||
|       if test -n "$backupsuffix" && test -f "$dst"; then |  | ||||||
|         $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null |  | ||||||
|       fi |  | ||||||
| 
 |  | ||||||
|       # Rename the file to the real destination. |       # Rename the file to the real destination. | ||||||
|       $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || |       $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || | ||||||
| 
 | 
 | ||||||
|  | @ -507,24 +486,24 @@ do | ||||||
|       # to itself, or perhaps because mv is so ancient that it does not |       # to itself, or perhaps because mv is so ancient that it does not | ||||||
|       # support -f. |       # support -f. | ||||||
|       { |       { | ||||||
|         # Now remove or move aside any old file at destination location. | 	# Now remove or move aside any old file at destination location. | ||||||
|         # We try this two ways since rm can't unlink itself on some | 	# We try this two ways since rm can't unlink itself on some | ||||||
|         # systems and the destination file might be busy for other | 	# systems and the destination file might be busy for other | ||||||
|         # reasons.  In this case, the final cleanup might fail but the new | 	# reasons.  In this case, the final cleanup might fail but the new | ||||||
|         # file should still install successfully. | 	# file should still install successfully. | ||||||
|         { | 	{ | ||||||
|           test ! -f "$dst" || | 	  test ! -f "$dst" || | ||||||
|           $doit $rmcmd "$dst" 2>/dev/null || | 	  $doit $rmcmd -f "$dst" 2>/dev/null || | ||||||
|           { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && | 	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && | ||||||
|             { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } | 	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } | ||||||
|           } || | 	  } || | ||||||
|           { echo "$0: cannot unlink or rename $dst" >&2 | 	  { echo "$0: cannot unlink or rename $dst" >&2 | ||||||
|             (exit 1); exit 1 | 	    (exit 1); exit 1 | ||||||
|           } | 	  } | ||||||
|         } && | 	} && | ||||||
| 
 | 
 | ||||||
|         # Now rename the file to the real destination. | 	# Now rename the file to the real destination. | ||||||
|         $doit $mvcmd "$dsttmp" "$dst" | 	$doit $mvcmd "$dsttmp" "$dst" | ||||||
|       } |       } | ||||||
|     fi || exit 1 |     fi || exit 1 | ||||||
| 
 | 
 | ||||||
|  | @ -533,9 +512,10 @@ do | ||||||
| done | done | ||||||
| 
 | 
 | ||||||
| # Local variables: | # Local variables: | ||||||
| # eval: (add-hook 'before-save-hook 'time-stamp) | # eval: (add-hook 'write-file-hooks 'time-stamp) | ||||||
| # time-stamp-start: "scriptversion=" | # time-stamp-start: "scriptversion=" | ||||||
| # time-stamp-format: "%:y-%02m-%02d.%02H" | # time-stamp-format: "%:y-%02m-%02d.%02H" | ||||||
| # time-stamp-time-zone: "UTC0" | # time-stamp-time-zone: "UTC" | ||||||
| # time-stamp-end: "; # UTC" | # time-stamp-end: "; # UTC" | ||||||
| # End: | # End: | ||||||
|  |  | ||||||