annotate modules/canna/install-sh @ 4407:4ee73bbe4f8e

Always use boyer_moore in ASCII or Latin-1 buffers with ASCII search strings. 2007-12-26 Aidan Kehoe <kehoea@parhasard.net> * casetab.c: Extend and correct some case table documentation. * search.c (search_buffer): Correct a bug where only the first entry for a character in the case equivalence table was examined in determining if the Boyer-Moore search algorithm is appropriate. If there are case mappings outside of the charset and row of the characters specified in the search string, those case mappings can be safely ignored (and Boyer-Moore search can be used) if we know from the buffer statistics that the corresponding characters cannot occur. * search.c (boyer_moore): Assert that we haven't been passed a string with varying characters sets or rows within character sets. That's what simple_search is for. In the very rare event that a character in the search string has a canonical case mapping that is not in the same character set and row, don't try to search for the canonical character, search for some other character that is in the the desired character set and row. Assert that the case table isn't corrupt. Do not search for any character case mappings that cannot possibly occur in the buffer, given the buffer metadata about its contents.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 26 Dec 2007 17:30:16 +0100
parents 414a64af46c9
children 6ed8c4ccc17e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2973
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
1 #!/bin/sh
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
2 #
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
3 # install - install a program, script, or datafile
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
4 # This comes from X11R5 (mit/util/scripts/install.sh).
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
5 #
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
6 # Copyright 1991 by the Massachusetts Institute of Technology
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
7 #
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
8 # Permission to use, copy, modify, distribute, and sell this software and its
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
9 # documentation for any purpose is hereby granted without fee, provided that
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
10 # the above copyright notice appear in all copies and that both that
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
11 # copyright notice and this permission notice appear in supporting
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
12 # documentation, and that the name of M.I.T. not be used in advertising or
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
13 # publicity pertaining to distribution of the software without specific,
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
14 # written prior permission. M.I.T. makes no representations about the
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
15 # suitability of this software for any purpose. It is provided "as is"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
16 # without express or implied warranty.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
17 #
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
18 # Calling this script install-sh is preferred over install.sh, to prevent
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
19 # `make' implicit rules from creating a file called install from it
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
20 # when there is no Makefile.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
21 #
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
22 # This script is compatible with the BSD install script, but was written
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
23 # from scratch. It can only install one file at a time, a restriction
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
24 # shared with many OS's install programs.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
25
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
26
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
27 # set DOITPROG to echo to test this script
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
28
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
29 # Don't use :- since 4.3BSD and earlier shells don't like it.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
30 doit="${DOITPROG-}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
31
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
32
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
33 # put in absolute paths if you don't have them in your path; or use env. vars.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
34
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
35 mvprog="${MVPROG-mv}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
36 cpprog="${CPPROG-cp}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
37 chmodprog="${CHMODPROG-chmod}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
38 chownprog="${CHOWNPROG-chown}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
39 chgrpprog="${CHGRPPROG-chgrp}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
40 stripprog="${STRIPPROG-strip}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
41 rmprog="${RMPROG-rm}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
42 mkdirprog="${MKDIRPROG-mkdir}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
43
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
44 transformbasename=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
45 transform_arg=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
46 instcmd="$mvprog"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
47 chmodcmd="$chmodprog 0755"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
48 chowncmd=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
49 chgrpcmd=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
50 stripcmd=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
51 rmcmd="$rmprog -f"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
52 mvcmd="$mvprog"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
53 src=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
54 dst=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
55 dir_arg=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
56
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
57 while [ x"$1" != x ]; do
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
58 case $1 in
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
59 -c) instcmd="$cpprog"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
60 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
61 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
62
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
63 -d) dir_arg=true
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
64 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
65 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
66
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
67 -m) chmodcmd="$chmodprog $2"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
68 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
69 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
70 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
71
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
72 -o) chowncmd="$chownprog $2"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
73 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
74 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
75 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
76
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
77 -g) chgrpcmd="$chgrpprog $2"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
78 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
79 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
80 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
81
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
82 -s) stripcmd="$stripprog"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
83 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
84 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
85
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
86 -t=*) transformarg=`echo $1 | sed 's/-t=//'`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
87 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
88 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
89
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
90 -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
91 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
92 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
93
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
94 *) if [ x"$src" = x ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
95 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
96 src=$1
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
97 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
98 # this colon is to work around a 386BSD /bin/sh bug
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
99 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
100 dst=$1
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
101 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
102 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
103 continue;;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
104 esac
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
105 done
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
106
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
107 if [ x"$src" = x ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
108 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
109 echo "install: no input file specified"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
110 exit 1
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
111 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
112 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
113 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
114
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
115 if [ x"$dir_arg" != x ]; then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
116 dst=$src
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
117 src=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
118
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
119 if [ -d $dst ]; then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
120 instcmd=:
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
121 chmodcmd=""
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
122 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
123 instcmd=$mkdirprog
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
124 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
125 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
126
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
127 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
128 # might cause directories to be created, which would be especially bad
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
129 # if $src (and thus $dsttmp) contains '*'.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
130
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
131 if [ -f "$src" ] || [ -d "$src" ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
132 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
133 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
134 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
135 echo "install: $src does not exist"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
136 exit 1
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
137 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
138
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
139 if [ x"$dst" = x ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
140 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
141 echo "install: no destination specified"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
142 exit 1
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
143 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
144 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
145 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
146
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
147 # If destination is a directory, append the input filename; if your system
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
148 # does not like double slashes in filenames, you may need to add some logic
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
149
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
150 if [ -d $dst ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
151 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
152 dst="$dst"/`basename $src`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
153 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
154 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
155 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
156 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
157
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
158 ## this sed command emulates the dirname command
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
159 dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
160
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
161 # Make sure that the destination directory exists.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
162 # this part is taken from Noah Friedman's mkinstalldirs script
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
163
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
164 # Skip lots of stat calls in the usual case.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
165 if [ ! -d "$dstdir" ]; then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
166 defaultIFS='
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
167 '
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
168 IFS="${IFS-${defaultIFS}}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
169
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
170 oIFS="${IFS}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
171 # Some sh's can't handle IFS=/ for some reason.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
172 IFS='%'
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
173 set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
174 IFS="${oIFS}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
175
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
176 pathcomp=''
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
177
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
178 while [ $# -ne 0 ] ; do
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
179 pathcomp="${pathcomp}${1}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
180 shift
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
181
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
182 if [ ! -d "${pathcomp}" ] ;
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
183 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
184 $mkdirprog "${pathcomp}"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
185 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
186 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
187 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
188
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
189 pathcomp="${pathcomp}/"
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
190 done
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
191 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
192
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
193 if [ x"$dir_arg" != x ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
194 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
195 $doit $instcmd $dst &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
196
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
197 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
198 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
199 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
200 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
201 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
202
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
203 # If we're going to rename the final executable, determine the name now.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
204
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
205 if [ x"$transformarg" = x ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
206 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
207 dstfile=`basename $dst`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
208 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
209 dstfile=`basename $dst $transformbasename |
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
210 sed $transformarg`$transformbasename
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
211 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
212
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
213 # don't allow the sed command to completely eliminate the filename
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
214
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
215 if [ x"$dstfile" = x ]
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
216 then
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
217 dstfile=`basename $dst`
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
218 else
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
219 :
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
220 fi
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
221
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
222 # Make a temp file name in the proper directory.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
223
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
224 dsttmp=$dstdir/#inst.$$#
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
225
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
226 # Move or copy the file name to the temp name
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
227
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
228 $doit $instcmd $src $dsttmp &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
229
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
230 trap "rm -f ${dsttmp}" 0 &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
231
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
232 # and set any options; do chmod last to preserve setuid bits
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
233
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
234 # If any of these fail, we abort the whole thing. If we want to
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
235 # ignore errors from any of these, just make sure not to ignore
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
236 # errors from the above "$doit $instcmd $src $dsttmp" command.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
237
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
238 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
239 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
240 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
241 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
242
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
243 # Now rename the file to the real destination.
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
244
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
245 $doit $rmcmd -f $dstdir/$dstfile &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
246 $doit $mvcmd $dsttmp $dstdir/$dstfile
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
247
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
248 fi &&
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
249
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
250
414a64af46c9 [xemacs-hg @ 2005-10-04 17:51:13 by stephent]
stephent
parents:
diff changeset
251 exit 0