diff options
author | Damien Miller <djm@mindrot.org> | 1999-11-25 12:31:26 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 1999-11-25 12:31:26 +1100 |
commit | d8087f62d6974c812fb956429ec0dba801ab66d3 (patch) | |
tree | adfca9704220cd07dc9c1e501041bf755a825898 | |
parent | 78224a06657a741d9a25347d2b68b182eccd925a (diff) |
- Added BSD compatible install program and autoconf test, thanks to
Niels Kristian Bech Jensen <nkbj@image.dk>
- Solaris fixing, thanks to Ben Taylor <bent@clark.net>
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Makefile.in | 50 | ||||
-rw-r--r-- | acconfig.h | 4 | ||||
-rw-r--r-- | configure.in | 1 | ||||
-rwxr-xr-x | install-sh | 251 | ||||
-rw-r--r-- | scp.c | 10 | ||||
-rw-r--r-- | ssh-add.c | 4 |
7 files changed, 291 insertions, 32 deletions
@@ -21,6 +21,9 @@ | |||
21 | postpone fork_after_authentication until command execution, | 21 | postpone fork_after_authentication until command execution, |
22 | request/patch from jahakala@cc.jyu.fi via damien@ibs.com.au | 22 | request/patch from jahakala@cc.jyu.fi via damien@ibs.com.au |
23 | plus: use daemon() for backgrounding | 23 | plus: use daemon() for backgrounding |
24 | - Added BSD compatible install program and autoconf test, thanks to | ||
25 | Niels Kristian Bech Jensen <nkbj@image.dk> | ||
26 | - Solaris fixing, thanks to Ben Taylor <bent@clark.net> | ||
24 | 27 | ||
25 | 19991124 | 28 | 19991124 |
26 | - Merged very large OpenBSD source code reformat | 29 | - Merged very large OpenBSD source code reformat |
diff --git a/Makefile.in b/Makefile.in index 298790a36..ec7f0fd75 100644 --- a/Makefile.in +++ b/Makefile.in | |||
@@ -17,6 +17,8 @@ TARGETS=libssh.a ssh sshd ssh-add ssh-keygen ssh-agent scp $(EXTRA_TARGETS) | |||
17 | LIBS=@LIBS@ | 17 | LIBS=@LIBS@ |
18 | AR=@AR@ | 18 | AR=@AR@ |
19 | RANLIB=@RANLIB@ | 19 | RANLIB=@RANLIB@ |
20 | INSTALL=@INSTALL@ | ||
21 | LFLAGS=@LDFLAGS@ | ||
20 | 22 | ||
21 | GNOME_CFLAGS=`gnome-config --cflags gnome gnomeui` | 23 | GNOME_CFLAGS=`gnome-config --cflags gnome gnomeui` |
22 | GNOME_LIBS=`gnome-config --libs gnome gnomeui` | 24 | GNOME_LIBS=`gnome-config --libs gnome gnomeui` |
@@ -61,40 +63,40 @@ clean: | |||
61 | rm -f *.o core $(TARGETS) config.status config.cache config.log | 63 | rm -f *.o core $(TARGETS) config.status config.cache config.log |
62 | 64 | ||
63 | install: all | 65 | install: all |
64 | install -d $(bindir) | 66 | $(INSTALL) -d $(bindir) |
65 | install -d $(sbindir) | 67 | $(INSTALL) -d $(sbindir) |
66 | install -d $(mandir) | 68 | $(INSTALL) -d $(mandir) |
67 | install -d $(mandir)/man1 | 69 | $(INSTALL) -d $(mandir)/man1 |
68 | install -d $(mandir)/man8 | 70 | $(INSTALL) -d $(mandir)/man8 |
69 | install -s -c ssh $(bindir)/ssh | 71 | $(INSTALL) -s -c ssh $(bindir)/ssh |
70 | install -s -c scp $(bindir)/scp | 72 | $(INSTALL) -s -c scp $(bindir)/scp |
71 | install -s -c ssh-add $(bindir)/ssh-add | 73 | $(INSTALL) -s -c ssh-add $(bindir)/ssh-add |
72 | install -s -c ssh-agent $(bindir)/ssh-agent | 74 | $(INSTALL) -s -c ssh-agent $(bindir)/ssh-agent |
73 | install -s -c ssh-keygen $(bindir)/ssh-keygen | 75 | $(INSTALL) -s -c ssh-keygen $(bindir)/ssh-keygen |
74 | install -s -c sshd $(sbindir)/sshd | 76 | $(INSTALL) -s -c sshd $(sbindir)/sshd |
75 | install -m644 -c ssh.1 $(mandir)/man1/ssh.1 | 77 | $(INSTALL) -m644 -c ssh.1 $(mandir)/man1/ssh.1 |
76 | install -m644 -c scp.1 $(mandir)/man1/scp.1 | 78 | $(INSTALL) -m644 -c scp.1 $(mandir)/man1/scp.1 |
77 | install -m644 -c ssh-add.1 $(mandir)/man1/ssh-add.1 | 79 | $(INSTALL) -m644 -c ssh-add.1 $(mandir)/man1/ssh-add.1 |
78 | install -m644 -c ssh-agent.1 $(mandir)/man1/ssh-agent.1 | 80 | $(INSTALL) -m644 -c ssh-agent.1 $(mandir)/man1/ssh-agent.1 |
79 | install -m644 -c ssh-keygen.1 $(mandir)/man1/ssh-keygen.1 | 81 | $(INSTALL) -m644 -c ssh-keygen.1 $(mandir)/man1/ssh-keygen.1 |
80 | install -m644 -c sshd.8 $(mandir)/man8/sshd.8 | 82 | $(INSTALL) -m644 -c sshd.8 $(mandir)/man8/sshd.8 |
81 | ln -sf ssh $(bindir)/slogin | 83 | ln -sf ssh $(bindir)/slogin |
82 | ln -sf ssh.1 $(mandir)/man1/slogin.1 | 84 | ln -sf ssh.1 $(mandir)/man1/slogin.1 |
83 | 85 | ||
84 | if [ "x@INSTALL_ASKPASS@" = "xyes" ] ; then \ | 86 | if [ "x@INSTALL_ASKPASS@" = "xyes" ] ; then \ |
85 | install -d $(libexecdir) ; \ | 87 | $(INSTALL) -d $(libexecdir) ; \ |
86 | install -d $(libexecdir)/ssh ; \ | 88 | $(INSTALL) -d $(libexecdir)/ssh ; \ |
87 | if [ -z "@GNOME_ASKPASS@" ] ; then \ | 89 | if [ -z "@GNOME_ASKPASS@" ] ; then \ |
88 | install -m755 -c ssh-askpass ${ASKPASS_PROGRAM}; \ | 90 | $(INSTALL) -m755 -c ssh-askpass ${ASKPASS_PROGRAM}; \ |
89 | else \ | 91 | else \ |
90 | install -m755 -c gnome-ssh-askpass ${ASKPASS_PROGRAM}; \ | 92 | $(INSTALL) -m755 -c gnome-ssh-askpass ${ASKPASS_PROGRAM}; \ |
91 | fi ; \ | 93 | fi ; \ |
92 | fi | 94 | fi |
93 | 95 | ||
94 | if [ ! -f $(sysconfdir)/ssh_config -a ! -f $(sysconfdir)/sshd_config ]; then \ | 96 | if [ ! -f $(sysconfdir)/ssh_config -a ! -f $(sysconfdir)/sshd_config ]; then \ |
95 | install -d $(sysconfdir); \ | 97 | $(INSTALL) -d $(sysconfdir); \ |
96 | install -m644 ssh_config $(sysconfdir)/ssh_config; \ | 98 | $(INSTALL) -m644 ssh_config $(sysconfdir)/ssh_config; \ |
97 | install -m644 sshd_config $(sysconfdir)/sshd_config; \ | 99 | $(INSTALL) -m644 sshd_config $(sysconfdir)/sshd_config; \ |
98 | fi | 100 | fi |
99 | 101 | ||
100 | distclean: clean | 102 | distclean: clean |
diff --git a/acconfig.h b/acconfig.h index 86ce003aa..e6892ee55 100644 --- a/acconfig.h +++ b/acconfig.h | |||
@@ -167,12 +167,16 @@ enum | |||
167 | #ifndef _PATH_UTMP | 167 | #ifndef _PATH_UTMP |
168 | # ifdef UTMP_FILE | 168 | # ifdef UTMP_FILE |
169 | # define _PATH_UTMP UTMP_FILE | 169 | # define _PATH_UTMP UTMP_FILE |
170 | # else | ||
171 | # define _PATH_UTMP "/var/adm/utmp" | ||
170 | # endif | 172 | # endif |
171 | #endif | 173 | #endif |
172 | 174 | ||
173 | #ifndef _PATH_WTMP | 175 | #ifndef _PATH_WTMP |
174 | # ifdef WTMP_FILE | 176 | # ifdef WTMP_FILE |
175 | # define _PATH_WTMP WTMP_FILE | 177 | # define _PATH_WTMP WTMP_FILE |
178 | # else | ||
179 | # define _PATH_WTMP "/var/adm/wtmp" | ||
176 | # endif | 180 | # endif |
177 | #endif | 181 | #endif |
178 | 182 | ||
diff --git a/configure.in b/configure.in index 9f545d733..0de61631d 100644 --- a/configure.in +++ b/configure.in | |||
@@ -6,6 +6,7 @@ dnl Checks for programs. | |||
6 | AC_PROG_CC | 6 | AC_PROG_CC |
7 | AC_PROG_CPP | 7 | AC_PROG_CPP |
8 | AC_PROG_RANLIB | 8 | AC_PROG_RANLIB |
9 | AC_PROG_INSTALL | ||
9 | AC_CHECK_PROG(AR, ar, ar) | 10 | AC_CHECK_PROG(AR, ar, ar) |
10 | if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall"; fi | 11 | if test "$GCC" = "yes"; then CFLAGS="$CFLAGS -Wall"; fi |
11 | 12 | ||
diff --git a/install-sh b/install-sh new file mode 100755 index 000000000..e9de23842 --- /dev/null +++ b/install-sh | |||
@@ -0,0 +1,251 @@ | |||
1 | #!/bin/sh | ||
2 | # | ||
3 | # install - install a program, script, or datafile | ||
4 | # This comes from X11R5 (mit/util/scripts/install.sh). | ||
5 | # | ||
6 | # Copyright 1991 by the Massachusetts Institute of Technology | ||
7 | # | ||
8 | # Permission to use, copy, modify, distribute, and sell this software and its | ||
9 | # documentation for any purpose is hereby granted without fee, provided that | ||
10 | # the above copyright notice appear in all copies and that both that | ||
11 | # copyright notice and this permission notice appear in supporting | ||
12 | # documentation, and that the name of M.I.T. not be used in advertising or | ||
13 | # publicity pertaining to distribution of the software without specific, | ||
14 | # written prior permission. M.I.T. makes no representations about the | ||
15 | # suitability of this software for any purpose. It is provided "as is" | ||
16 | # without express or implied warranty. | ||
17 | # | ||
18 | # Calling this script install-sh is preferred over install.sh, to prevent | ||
19 | # `make' implicit rules from creating a file called install from it | ||
20 | # when there is no Makefile. | ||
21 | # | ||
22 | # This script is compatible with the BSD install script, but was written | ||
23 | # from scratch. It can only install one file at a time, a restriction | ||
24 | # shared with many OS's install programs. | ||
25 | |||
26 | |||
27 | # set DOITPROG to echo to test this script | ||
28 | |||
29 | # Don't use :- since 4.3BSD and earlier shells don't like it. | ||
30 | doit="${DOITPROG-}" | ||
31 | |||
32 | |||
33 | # put in absolute paths if you don't have them in your path; or use env. vars. | ||
34 | |||
35 | mvprog="${MVPROG-mv}" | ||
36 | cpprog="${CPPROG-cp}" | ||
37 | chmodprog="${CHMODPROG-chmod}" | ||
38 | chownprog="${CHOWNPROG-chown}" | ||
39 | chgrpprog="${CHGRPPROG-chgrp}" | ||
40 | stripprog="${STRIPPROG-strip}" | ||
41 | rmprog="${RMPROG-rm}" | ||
42 | mkdirprog="${MKDIRPROG-mkdir}" | ||
43 | |||
44 | transformbasename="" | ||
45 | transform_arg="" | ||
46 | instcmd="$mvprog" | ||
47 | chmodcmd="$chmodprog 0755" | ||
48 | chowncmd="" | ||
49 | chgrpcmd="" | ||
50 | stripcmd="" | ||
51 | rmcmd="$rmprog -f" | ||
52 | mvcmd="$mvprog" | ||
53 | src="" | ||
54 | dst="" | ||
55 | dir_arg="" | ||
56 | |||
57 | while [ x"$1" != x ]; do | ||
58 | case $1 in | ||
59 | -c) instcmd="$cpprog" | ||
60 | shift | ||
61 | continue;; | ||
62 | |||
63 | -d) dir_arg=true | ||
64 | shift | ||
65 | continue;; | ||
66 | |||
67 | -m) chmodcmd="$chmodprog $2" | ||
68 | shift | ||
69 | shift | ||
70 | continue;; | ||
71 | |||
72 | -o) chowncmd="$chownprog $2" | ||
73 | shift | ||
74 | shift | ||
75 | continue;; | ||
76 | |||
77 | -g) chgrpcmd="$chgrpprog $2" | ||
78 | shift | ||
79 | shift | ||
80 | continue;; | ||
81 | |||
82 | -s) stripcmd="$stripprog" | ||
83 | shift | ||
84 | continue;; | ||
85 | |||
86 | -t=*) transformarg=`echo $1 | sed 's/-t=//'` | ||
87 | shift | ||
88 | continue;; | ||
89 | |||
90 | -b=*) transformbasename=`echo $1 | sed 's/-b=//'` | ||
91 | shift | ||
92 | continue;; | ||
93 | |||
94 | *) if [ x"$src" = x ] | ||
95 | then | ||
96 | src=$1 | ||
97 | else | ||
98 | # this colon is to work around a 386BSD /bin/sh bug | ||
99 | : | ||
100 | dst=$1 | ||
101 | fi | ||
102 | shift | ||
103 | continue;; | ||
104 | esac | ||
105 | done | ||
106 | |||
107 | if [ x"$src" = x ] | ||
108 | then | ||
109 | echo "install: no input file specified" | ||
110 | exit 1 | ||
111 | else | ||
112 | true | ||
113 | fi | ||
114 | |||
115 | if [ x"$dir_arg" != x ]; then | ||
116 | dst=$src | ||
117 | src="" | ||
118 | |||
119 | if [ -d $dst ]; then | ||
120 | instcmd=: | ||
121 | chmodcmd="" | ||
122 | else | ||
123 | instcmd=mkdir | ||
124 | fi | ||
125 | else | ||
126 | |||
127 | # Waiting for this to be detected by the "$instcmd $src $dsttmp" command | ||
128 | # might cause directories to be created, which would be especially bad | ||
129 | # if $src (and thus $dsttmp) contains '*'. | ||
130 | |||
131 | if [ -f $src -o -d $src ] | ||
132 | then | ||
133 | true | ||
134 | else | ||
135 | echo "install: $src does not exist" | ||
136 | exit 1 | ||
137 | fi | ||
138 | |||
139 | if [ x"$dst" = x ] | ||
140 | then | ||
141 | echo "install: no destination specified" | ||
142 | exit 1 | ||
143 | else | ||
144 | true | ||
145 | fi | ||
146 | |||
147 | # If destination is a directory, append the input filename; if your system | ||
148 | # does not like double slashes in filenames, you may need to add some logic | ||
149 | |||
150 | if [ -d $dst ] | ||
151 | then | ||
152 | dst="$dst"/`basename $src` | ||
153 | else | ||
154 | true | ||
155 | fi | ||
156 | fi | ||
157 | |||
158 | ## this sed command emulates the dirname command | ||
159 | dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` | ||
160 | |||
161 | # Make sure that the destination directory exists. | ||
162 | # this part is taken from Noah Friedman's mkinstalldirs script | ||
163 | |||
164 | # Skip lots of stat calls in the usual case. | ||
165 | if [ ! -d "$dstdir" ]; then | ||
166 | defaultIFS=' | ||
167 | ' | ||
168 | IFS="${IFS-${defaultIFS}}" | ||
169 | |||
170 | oIFS="${IFS}" | ||
171 | # Some sh's can't handle IFS=/ for some reason. | ||
172 | IFS='%' | ||
173 | set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` | ||
174 | IFS="${oIFS}" | ||
175 | |||
176 | pathcomp='' | ||
177 | |||
178 | while [ $# -ne 0 ] ; do | ||
179 | pathcomp="${pathcomp}${1}" | ||
180 | shift | ||
181 | |||
182 | if [ ! -d "${pathcomp}" ] ; | ||
183 | then | ||
184 | $mkdirprog "${pathcomp}" | ||
185 | else | ||
186 | true | ||
187 | fi | ||
188 | |||
189 | pathcomp="${pathcomp}/" | ||
190 | done | ||
191 | fi | ||
192 | |||
193 | if [ x"$dir_arg" != x ] | ||
194 | then | ||
195 | $doit $instcmd $dst && | ||
196 | |||
197 | if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && | ||
198 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && | ||
199 | if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && | ||
200 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi | ||
201 | else | ||
202 | |||
203 | # If we're going to rename the final executable, determine the name now. | ||
204 | |||
205 | if [ x"$transformarg" = x ] | ||
206 | then | ||
207 | dstfile=`basename $dst` | ||
208 | else | ||
209 | dstfile=`basename $dst $transformbasename | | ||
210 | sed $transformarg`$transformbasename | ||
211 | fi | ||
212 | |||
213 | # don't allow the sed command to completely eliminate the filename | ||
214 | |||
215 | if [ x"$dstfile" = x ] | ||
216 | then | ||
217 | dstfile=`basename $dst` | ||
218 | else | ||
219 | true | ||
220 | fi | ||
221 | |||
222 | # Make a temp file name in the proper directory. | ||
223 | |||
224 | dsttmp=$dstdir/#inst.$$# | ||
225 | |||
226 | # Move or copy the file name to the temp name | ||
227 | |||
228 | $doit $instcmd $src $dsttmp && | ||
229 | |||
230 | trap "rm -f ${dsttmp}" 0 && | ||
231 | |||
232 | # and set any options; do chmod last to preserve setuid bits | ||
233 | |||
234 | # If any of these fail, we abort the whole thing. If we want to | ||
235 | # ignore errors from any of these, just make sure not to ignore | ||
236 | # errors from the above "$doit $instcmd $src $dsttmp" command. | ||
237 | |||
238 | if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && | ||
239 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && | ||
240 | if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && | ||
241 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && | ||
242 | |||
243 | # Now rename the file to the real destination. | ||
244 | |||
245 | $doit $rmcmd -f $dstdir/$dstfile && | ||
246 | $doit $mvcmd $dsttmp $dstdir/$dstfile | ||
247 | |||
248 | fi && | ||
249 | |||
250 | |||
251 | exit 0 | ||
@@ -45,7 +45,7 @@ | |||
45 | */ | 45 | */ |
46 | 46 | ||
47 | #include "includes.h" | 47 | #include "includes.h" |
48 | RCSID("$Id: scp.c,v 1.10 1999/11/25 00:54:59 damien Exp $"); | 48 | RCSID("$Id: scp.c,v 1.11 1999/11/25 01:31:26 damien Exp $"); |
49 | 49 | ||
50 | #include "ssh.h" | 50 | #include "ssh.h" |
51 | #include "xmalloc.h" | 51 | #include "xmalloc.h" |
@@ -78,7 +78,7 @@ char *curfile; | |||
78 | int verbose_mode = 0; | 78 | int verbose_mode = 0; |
79 | 79 | ||
80 | /* This is set to non-zero if compression is desired. */ | 80 | /* This is set to non-zero if compression is desired. */ |
81 | int compress = 0; | 81 | int compress_flag = 0; |
82 | 82 | ||
83 | /* This is set to zero if the progressmeter is not desired. */ | 83 | /* This is set to zero if the progressmeter is not desired. */ |
84 | int showprogress = 1; | 84 | int showprogress = 1; |
@@ -147,7 +147,7 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout) | |||
147 | args[i++] = "-oFallBackToRsh no"; | 147 | args[i++] = "-oFallBackToRsh no"; |
148 | if (verbose_mode) | 148 | if (verbose_mode) |
149 | args[i++] = "-v"; | 149 | args[i++] = "-v"; |
150 | if (compress) | 150 | if (compress_flag) |
151 | args[i++] = "-C"; | 151 | args[i++] = "-C"; |
152 | if (batchmode) | 152 | if (batchmode) |
153 | args[i++] = "-oBatchMode yes"; | 153 | args[i++] = "-oBatchMode yes"; |
@@ -279,7 +279,7 @@ main(argc, argv) | |||
279 | batchmode = 1; | 279 | batchmode = 1; |
280 | break; | 280 | break; |
281 | case 'C': | 281 | case 'C': |
282 | compress = 1; | 282 | compress_flag = 1; |
283 | break; | 283 | break; |
284 | case 'q': | 284 | case 'q': |
285 | showprogress = 0; | 285 | showprogress = 0; |
@@ -974,7 +974,7 @@ run_err(const char *fmt,...) | |||
974 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | 974 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
975 | * SUCH DAMAGE. | 975 | * SUCH DAMAGE. |
976 | * | 976 | * |
977 | * $Id: scp.c,v 1.10 1999/11/25 00:54:59 damien Exp $ | 977 | * $Id: scp.c,v 1.11 1999/11/25 01:31:26 damien Exp $ |
978 | */ | 978 | */ |
979 | 979 | ||
980 | char * | 980 | char * |
@@ -7,7 +7,7 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include "includes.h" | 9 | #include "includes.h" |
10 | RCSID("$Id: ssh-add.c,v 1.14 1999/11/25 00:54:59 damien Exp $"); | 10 | RCSID("$Id: ssh-add.c,v 1.15 1999/11/25 01:31:26 damien Exp $"); |
11 | 11 | ||
12 | #include "rsa.h" | 12 | #include "rsa.h" |
13 | #include "ssh.h" | 13 | #include "ssh.h" |
@@ -203,8 +203,6 @@ main(int argc, char **argv) | |||
203 | 203 | ||
204 | /* check if RSA support exists */ | 204 | /* check if RSA support exists */ |
205 | if (rsa_alive() == 0) { | 205 | if (rsa_alive() == 0) { |
206 | extern char *__progname; | ||
207 | |||
208 | fprintf(stderr, | 206 | fprintf(stderr, |
209 | "%s: no RSA support in libssl and libcrypto. See ssl(8).\n", | 207 | "%s: no RSA support in libssl and libcrypto. See ssl(8).\n", |
210 | __progname); | 208 | __progname); |