ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/Daodan/MinGW/msys/1.0/bin/gzexe
Revision: 1046
Committed: Mon Aug 29 13:19:38 2016 UTC (9 years, 2 months ago) by alloc
File size: 5868 byte(s)
Log Message:
Daodan: Added Windows MinGW and build batch file

File Contents

# Content
1 #!/bin/sh
2 # gzexe: compressor for Unix executables.
3 # Use this only for binaries that you do not use frequently.
4 #
5 # The compressed version is a shell script which decompresses itself after
6 # skipping $skip lines of shell commands. We try invoking the compressed
7 # executable with the original name (for programs looking at their name).
8 # We also try to retain the original file permissions on the compressed file.
9 # For safety reasons, gzexe will not create setuid or setgid shell scripts.
10
11 # WARNING: the first line of this file must be either : or #!/bin/sh
12 # The : is required for some old versions of csh.
13 # On Ultrix, /bin/sh is too buggy, change the first line to: #!/bin/sh5
14
15
16 # Copyright (C) 1998, 2002, 2004, 2006, 2007 Free Software Foundation
17 # Copyright (C) 1993 Jean-loup Gailly
18
19 # This program is free software; you can redistribute it and/or modify
20 # it under the terms of the GNU General Public License as published by
21 # the Free Software Foundation; either version 2 of the License, or
22 # (at your option) any later version.
23
24 # This program is distributed in the hope that it will be useful,
25 # but WITHOUT ANY WARRANTY; without even the implied warranty of
26 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 # GNU General Public License for more details.
28
29 # You should have received a copy of the GNU General Public License along
30 # with this program; if not, write to the Free Software Foundation, Inc.,
31 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
32
33 tab=' '
34 nl='
35 '
36 IFS=" $tab$nl"
37
38 version='gzexe (gzip) 1.3.12
39 Copyright (C) 2007 Free Software Foundation, Inc.
40 This is free software. You may redistribute copies of it under the terms of
41 the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
42 There is NO WARRANTY, to the extent permitted by law.
43
44 Written by Jean-loup Gailly.'
45
46 usage="Usage: $0 [OPTION] FILE...
47 Rename each FILE with a compressed version of itself, renaming FILE to FILE~.
48
49 -d Decompress each FILE instead of compressing it.
50 --help display this help and exit
51 --version output version information and exit
52
53 Report bugs to <bug-gzip@gnu.org>."
54
55
56 PATH="${GZIP_BINDIR-'/usr/bin'}:$PATH"
57
58 decomp=0
59 res=0
60 while :; do
61 case $1 in
62 -d) decomp=1; shift;;
63 --h*) exec echo "$usage";;
64 --v*) exec echo "$version";;
65 --) shift; break;;
66 *) break;;
67 esac
68 done
69
70 if test $# -eq 0; then
71 echo >&2 "$0: missing operand
72 Try \`$0 --help' for more information."
73 exit 1
74 fi
75
76 tmp=
77 trap 'res=$?
78 test -n "$tmp" && rm -f "$tmp"
79 (exit $res); exit $res
80 ' 0 1 2 3 5 10 13 15
81
82 mktemp_status=
83
84 for i do
85 case $i in
86 -*) file=./$i;;
87 *) file=$i;;
88 esac
89 if test ! -f "$file" || test ! -r "$file"; then
90 res=$?
91 echo >&2 "$0: $i is not a readable regular file"
92 continue
93 fi
94 if test $decomp -eq 0; then
95 if sed -e 1d -e 2q "$file" | grep "^skip=[0-9][0-9]*$" >/dev/null; then
96 echo >&2 "$0: $i is already gzexe'd"
97 continue
98 fi
99 fi
100 if test -u "$file"; then
101 echo >&2 "$0: $i has setuid permission, unchanged"
102 continue
103 fi
104 if test -g "$file"; then
105 echo >&2 "$0: $i has setgid permission, unchanged"
106 continue
107 fi
108 case /$file in
109 */basename | */bash | */cat | */chmod | */cp | \
110 */dirname | */echo | */expr | */gzip | \
111 */ln | */mkdir | */mktemp | */mv | */rm | \
112 */sed | */sh | */sleep | */test | */tail)
113 echo >&2 "$0: $i might depend on itself"; continue;;
114 esac
115
116 dir=`dirname "$file"` || dir=$TMPDIR
117 test -d "$dir" && test -w "$dir" && test -x "$dir" || dir=/tmp
118 test -n "$tmp" && rm -f "$tmp"
119 if test -z "$mktemp_status"; then
120 type mktemp >/dev/null 2>&1
121 mktemp_status=$?
122 fi
123 if test $mktemp_status -eq 0; then
124 tmp=`TMPDIR=$dir mktemp -t gzexeXXXXXX`
125 else
126 tmp=$dir/gzexe$$
127 fi && { cp -p "$file" "$tmp" 2>/dev/null || cp "$file" "$tmp"; } || {
128 res=$?
129 echo >&2 "$0: cannot copy $file"
130 continue
131 }
132 if test -w "$tmp"; then
133 writable=1
134 else
135 writable=0
136 chmod u+w "$tmp" || {
137 res=$?
138 echo >&2 "$0: cannot chmod $tmp"
139 continue
140 }
141 fi
142 if test $decomp -eq 0; then
143 (cat <<'EOF' &&
144 #!/bin/sh
145 skip=44
146
147 tab=' '
148 nl='
149 '
150 IFS=" $tab$nl"
151
152 umask=`umask`
153 umask 77
154
155 gztmpdir=
156 trap 'res=$?
157 test -n "$gztmpdir" && rm -fr "$gztmpdir"
158 (exit $res); exit $res
159 ' 0 1 2 3 5 10 13 15
160
161 if type mktemp >/dev/null 2>&1; then
162 gztmpdir=`mktemp -dt`
163 else
164 gztmpdir=/tmp/gztmp$$; mkdir $gztmpdir
165 fi || { (exit 127); exit 127; }
166
167 gztmp=$gztmpdir/$0
168 case $0 in
169 -* | */*'
170 ') mkdir -p "$gztmp" && rm -r "$gztmp";;
171 */*) gztmp=$gztmpdir/`basename "$0"`;;
172 esac || { (exit 127); exit 127; }
173
174 case `echo X | tail -n +1 2>/dev/null` in
175 X) tail_n=-n;;
176 *) tail_n=;;
177 esac
178 if tail $tail_n +$skip <"$0" | gzip -cd > "$gztmp"; then
179 umask $umask
180 chmod 700 "$gztmp"
181 (sleep 5; rm -fr "$gztmpdir") 2>/dev/null &
182 "$gztmp" ${1+"$@"}; res=$?
183 else
184 echo >&2 "Cannot decompress $0"
185 (exit 127); res=127
186 fi; exit $res
187 EOF
188 gzip -cv9 "$file") > "$tmp" || {
189 res=$?
190 echo >&2 "$0: compression not possible for $i, file unchanged."
191 continue
192 }
193
194 else
195 # decompression
196 skip=44
197 skip_line=`sed -e 1d -e 2q "$file"`
198 case $skip_line in
199 skip=[0-9] | skip=[0-9][0-9] | skip=[0-9][0-9][0-9])
200 eval "$skip_line";;
201 esac
202 case `echo X | tail -n +1 2>/dev/null` in
203 X) tail_n=-n;;
204 *) tail_n=;;
205 esac
206 tail $tail_n +$skip "$file" | gzip -cd > "$tmp" || {
207 res=$?
208 echo >&2 "$0: $i probably not in gzexe format, file unchanged."
209 continue
210 }
211 fi
212 test $writable -eq 1 || chmod u-w "$tmp" || {
213 res=$?
214 echo >&2 "$0: $tmp: cannot chmod"
215 continue
216 }
217 ln -f "$file" "$file~" || {
218 res=$?
219 echo >&2 "$0: cannot backup $i as $i~"
220 continue
221 }
222 mv -f "$tmp" "$file" || {
223 res=$?
224 echo >&2 "$0: cannot rename $tmp to $i"
225 continue
226 }
227 tmp=
228 done
229 (exit $res); exit $res