Commit | Line | Data |
---|---|---|
33a01fd2 | 1 | ?RCS: $Id$ |
d8875586 MBT |
2 | ?RCS: |
3 | ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi | |
cf39bd7e | 4 | ?RCS: |
33a01fd2 | 5 | ?RCS: You may redistribute only under the terms of the Artistic License, |
d8875586 MBT |
6 | ?RCS: as specified in the README file that comes with the distribution. |
7 | ?RCS: You may reuse parts of this distribution only within the terms of | |
33a01fd2 | 8 | ?RCS: that same Artistic License; a copy of which may be found at the root |
d8875586 MBT |
9 | ?RCS: of the source tree for dist 4.0. |
10 | ?RCS: | |
11 | ?RCS: $Log: d_gethname.U,v $ | |
12 | ?RCS: Revision 3.0.1.1 1994/10/29 16:13:00 ram | |
33a01fd2 | 13 | ?RCS: patch36: call ./xenix explicitely instead of relying on PATH |
d8875586 MBT |
14 | ?RCS: |
15 | ?RCS: Revision 3.0 1993/08/18 12:06:11 ram | |
16 | ?RCS: Baseline for dist 3.0 netwide release. | |
17 | ?RCS: | |
18 | ?MAKE:d_gethname d_uname d_phostname aphostname: phostname cat \ | |
19 | myhostname package d_portable Loc echo n c +i_whoami +usrinc \ | |
20 | Myread Guess Oldconfig Csym | |
21 | ?MAKE: -pick add $@ %< | |
22 | ?S:d_gethname: | |
23 | ?S: This variable conditionally defines the HAS_GETHOSTNAME symbol, which | |
24 | ?S: indicates to the C program that the gethostname() routine may be | |
25 | ?S: used to derive the host name. | |
26 | ?S:. | |
27 | ?S:d_uname: | |
28 | ?S: This variable conditionally defines the HAS_UNAME symbol, which | |
29 | ?S: indicates to the C program that the uname() routine may be | |
30 | ?S: used to derive the host name. | |
31 | ?S:. | |
32 | ?S:d_phostname: | |
33 | ?S: This variable conditionally defines the PHOSTNAME symbol, which | |
34 | ?S: contains the shell command which, when fed to popen(), may be | |
35 | ?S: used to derive the host name. | |
36 | ?S:. | |
37 | ?S:aphostname: | |
38 | ?S: Thie variable contains the command which can be used to compute the | |
39 | ?S: host name. The command is fully qualified by its absolute path, to make | |
40 | ?S: it safe when used by a process with super-user privileges. | |
41 | ?S:. | |
42 | ?C:HAS_GETHOSTNAME (GETHOSTNAME): | |
43 | ?C: This symbol, if defined, indicates that the C program may use the | |
44 | ?C: gethostname() routine to derive the host name. See also HAS_UNAME | |
45 | ?C: and PHOSTNAME. | |
46 | ?C:. | |
47 | ?C:HAS_UNAME (UNAME): | |
48 | ?C: This symbol, if defined, indicates that the C program may use the | |
49 | ?C: uname() routine to derive the host name. See also HAS_GETHOSTNAME | |
50 | ?C: and PHOSTNAME. | |
51 | ?C:. | |
52 | ?C:PHOSTNAME: | |
53 | ?C: This symbol, if defined, indicates that the C program may use the | |
54 | ?C: contents of PHOSTNAME as a command to feed to the popen() routine | |
55 | ?C: to derive the host name. See also HAS_GETHOSTNAME and HAS_UNAME. | |
56 | ?C: Note that the command uses a fully qualified path, so that it is safe | |
57 | ?C: even if used by a process with super-user privileges. | |
58 | ?C:. | |
59 | ?H:#$d_gethname HAS_GETHOSTNAME /**/ | |
60 | ?H:#$d_uname HAS_UNAME /**/ | |
61 | ?H:#$d_phostname PHOSTNAME "$aphostname" /* How to get the host name */ | |
62 | ?H:. | |
63 | ?T:file val call | |
64 | ?LINT:change i_whoami | |
65 | : see how we will look up host name | |
66 | echo " " | |
67 | if false; then | |
68 | : dummy stub to allow use of elif | |
69 | @if HAS_GETHOSTNAME | |
70 | elif set gethostname val -f d_gethname; eval $csym; $val; then | |
71 | echo 'gethostname() found.' >&4 | |
72 | d_gethname="$define" | |
73 | call=gethostname | |
74 | @end | |
75 | @if HAS_UNAME | |
76 | elif set uname val -f d_uname; eval $csym; $val; then | |
77 | if ./xenix; then | |
78 | $cat <<'EOM' | |
79 | uname() was found, but you're running xenix, and older versions of xenix | |
80 | have a broken uname(). If you don't really know whether your xenix is old | |
81 | enough to have a broken system call, use the default answer. | |
82 | ||
83 | EOM | |
84 | dflt=y | |
85 | case "$d_uname" in | |
86 | "$define") dflt=n;; | |
87 | esac | |
88 | rp='Is your uname() broken?' | |
89 | . ./myread | |
90 | case "$ans" in | |
91 | n*) d_uname="$define"; call=uname;; | |
92 | esac | |
93 | else | |
94 | echo 'uname() found.' >&4 | |
95 | d_uname="$define" | |
96 | call=uname | |
97 | fi | |
98 | @end | |
99 | fi | |
100 | case "$d_gethname" in | |
101 | '') d_gethname="$undef";; | |
102 | esac | |
103 | case "$d_uname" in | |
104 | '') d_uname="$undef";; | |
105 | esac | |
106 | @if PHOSTNAME || MYHOSTNAME | |
107 | case "$d_uname$d_gethname" in | |
108 | *define*) | |
109 | dflt=n | |
110 | cat <<EOM | |
7bfb7bd7 | 111 | |
d8875586 MBT |
112 | Every now and then someone has a $call() that lies about the hostname |
113 | but can't be fixed for political or economic reasons. If you wish, I can | |
114 | @if MYHOSTNAME && PHOSTNAME | |
115 | pretend $call() isn't there and maybe compile in the hostname or | |
116 | compute it from the '$phostname' command at run-time. | |
117 | @elsif MYHOSTNAME | |
118 | pretend $call() isn't there and maybe compile in the hostname. | |
119 | @elsif PHOSTNAME | |
120 | pretend $call() isn't there and maybe compute hostname at run-time | |
121 | thanks to the '$phostname' command. | |
122 | @elsif WHOAMI | |
123 | get the hostname from whomai.h (provided you have one). | |
124 | @else | |
125 | simply ignore your host name and use someting like "noname" instead. | |
126 | @end | |
127 | ||
128 | EOM | |
129 | rp="Shall I ignore $call() from now on?" | |
130 | . ./myread | |
131 | case "$ans" in | |
132 | y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";; | |
133 | esac;; | |
134 | esac | |
135 | @end | |
136 | @if PHOSTNAME || aphostname | |
137 | ?X: Compute the full path name for the command | |
138 | case "$phostname" in | |
139 | '') aphostname='';; | |
140 | *) case "$aphostname" in | |
141 | /*) ;; | |
142 | *) set X $phostname | |
143 | shift | |
144 | file=$1 | |
145 | shift | |
146 | file=`./loc $file $file $pth` | |
147 | aphostname=`echo $file $*` | |
148 | ;; | |
149 | esac | |
150 | ;; | |
151 | esac | |
152 | @end | |
153 | @if PHOSTNAME && MYHOSTNAME | |
154 | case "$d_uname$d_gethname" in | |
155 | *define*) ;; | |
156 | *) | |
157 | case "$phostname" in | |
158 | '') ;; | |
159 | *) | |
160 | $cat <<EOT | |
161 | ||
162 | There is no gethostname() or uname() on this system. You have two | |
163 | possibilities at this point: | |
164 | ||
165 | 1) You can have your host name ($myhostname) compiled into $package, which | |
166 | lets $package start up faster, but makes your binaries non-portable, or | |
167 | 2) you can have $package use a | |
7bfb7bd7 | 168 | |
d8875586 MBT |
169 | popen("$aphostname","r") |
170 | ||
171 | which will start slower but be more portable. | |
172 | ||
173 | @ if WHOAMI | |
174 | Option 1 will give you the option of using whoami.h if you have one. | |
175 | @ end | |
176 | If you want option 2 but with a different command, you can edit config.sh at | |
177 | the end of this shell script. | |
178 | ||
179 | EOT | |
180 | case "$d_phostname" in | |
181 | "$define") dflt=n;; | |
182 | "$undef") dflt=y;; | |
183 | '') | |
184 | case "$d_portable" in | |
185 | "$define") dflt=n ;; | |
186 | *) dflt=y ;; | |
187 | esac;; | |
188 | esac | |
189 | rp="Do you want your host name compiled in?" | |
190 | . ./myread | |
191 | case "$ans" in | |
192 | n*) d_phostname="$define" ;; | |
193 | *) aphostname=''; d_phostname="$undef";; | |
194 | esac;; | |
195 | esac | |
196 | case "$aphostname" in | |
197 | '') | |
198 | @ if WHOAMI | |
199 | case "$i_whoami" in | |
200 | "$define") | |
201 | dflt=y | |
202 | $cat <<EOM | |
7bfb7bd7 | 203 | |
d8875586 MBT |
204 | No hostname function--you can either use the whoami.h file, which has this line: |
205 | ||
206 | `grep sysname $usrinc/whoami.h` | |
207 | ||
208 | or you can have the name we came up with earlier ($myhostname) hardwired in. | |
209 | EOM | |
210 | rp="Use whoami.h to get hostname?" | |
211 | . ./myread | |
212 | case "$ans" in | |
213 | n*) i_whoami="$undef";; | |
214 | esac | |
215 | ;; | |
216 | "$undef") | |
217 | $cat <<EOM | |
218 | No hostname function and no whoami.h -- hardwiring "$myhostname". | |
219 | EOM | |
220 | ;; | |
221 | esac;; | |
222 | @ else | |
223 | echo 'No hostname function -- hardwiring "'$myhostname'".' >&4;; | |
224 | @ end | |
225 | esac;; | |
226 | esac | |
227 | @elsif PHOSTNAME | |
228 | case "$d_uname$d_gethname" in | |
229 | *define*) ;; | |
230 | *) | |
231 | case "$phostname" in | |
232 | '') | |
233 | @ if WHOAMI | |
234 | case "$i_whoami" in | |
235 | "$define") | |
236 | $cat <<EOM | |
237 | ||
238 | No hostname function--we'll use the whoami.h file, which has this line: | |
239 | ||
240 | `grep sysname $usrinc/whoami.h` | |
241 | ||
242 | EOM | |
243 | ;; | |
244 | *) echo "There will be no way for $package to get your hostname." >&4;; | |
245 | esac;; | |
246 | @ else | |
247 | echo "There will be no way for $package to get your hostname." >&4;; | |
248 | @ end | |
249 | *) | |
250 | echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4 | |
251 | ;; | |
252 | esac;; | |
253 | esac | |
254 | @elsif MYHOSTNAME | |
255 | case "$d_uname$d_gethname" in | |
256 | *define*) ;; | |
257 | *) | |
258 | @ if WHOAMI | |
259 | case "$i_whoami" in | |
260 | "$define") | |
261 | dflt=y | |
262 | $cat <<EOM | |
7bfb7bd7 | 263 | |
d8875586 MBT |
264 | No hostname function--you can either use the whoami.h file, which has this line: |
265 | ||
266 | `grep sysname $usrinc/whoami.h` | |
267 | ||
268 | or you can have the name we came up with earlier ($myhostname) hardwired in. | |
269 | EOM | |
270 | rp="Use whoami.h to get hostname?" | |
271 | . ./myread | |
272 | case "$ans" in | |
273 | n*) i_whoami="$undef";; | |
274 | esac | |
275 | ;; | |
276 | "$undef") | |
277 | echo 'No whoami.h--hardwiring "'$myhostname'".' >&4;; | |
278 | esac;; | |
279 | @ else | |
280 | echo 'Hardwiring "'$myhostname'".' >&4;; | |
281 | @ end | |
282 | esac | |
283 | @end | |
284 | case "$d_phostname" in | |
285 | '') d_phostname="$undef";; | |
286 | esac | |
287 |