This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The URL for the dist source repo changed
[metaconfig.git] / U / modified / d_gethname.U
1 ?RCS: $Id: d_gethname.U 1 2006-08-24 12:32:52Z rmanfredi $
2 ?RCS:
3 ?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
4 ?RCS:
5 ?RCS: You may redistribute only under the terms of the Artistic Licence,
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
8 ?RCS: that same Artistic Licence; a copy of which may be found at the root
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
13 ?RCS: patch36: call ./xenix explicitly instead of relying on PATH
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 HAS_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:     This 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 the command to feed to the
54 ?C:     popen() routine to derive the host name.  See also HAS_GETHOSTNAME
55 ?C:     and HAS_UNAME.  Note that the command uses a fully qualified path,
56 ?C:     so that it is safe even if used by a process with super-user
57 ?C:     privileges.
58 ?C:.
59 ?C:HAS_PHOSTNAME:
60 ?C:     This symbol, if defined, indicates that the C program may use the
61 ?C:     contents of PHOSTNAME as a command to feed to the popen() routine
62 ?C:     to derive the host name.
63 ?C:.
64 ?H:?%<:#$d_gethname HAS_GETHOSTNAME     /**/
65 ?H:?%<:#$d_uname HAS_UNAME              /**/
66 ?H:?%<:#$d_phostname HAS_PHOSTNAME      /**/
67 ?H:?%<:#ifdef HAS_PHOSTNAME
68 ?H:?%<:#define PHOSTNAME "$aphostname"  /* How to get the host name */
69 ?H:?%<:#endif
70 ?H:.
71 ?T:file val call
72 ?LINT:change i_whoami
73 : see how we will look up host name
74 echo " "
75 call=''
76 @if HAS_GETHOSTNAME
77 if set gethostname val -f d_gethname; eval $csym; $val; then
78         echo 'gethostname() found.' >&4
79         d_gethname="$define"
80         call=gethostname
81 fi
82 @end
83 @if HAS_UNAME
84 if set uname val -f d_uname; eval $csym; $val; then
85         if ./xenix; then
86                 $cat <<'EOM'
87 uname() was found, but you're running xenix, and older versions of xenix
88 have a broken uname(). If you don't really know whether your xenix is old
89 enough to have a broken system call, use the default answer.
90
91 EOM
92                 dflt=y
93                 case "$d_uname" in
94                 "$define") dflt=n;;
95                 esac
96                 rp='Is your uname() broken?'
97                 . ./myread
98                 case "$ans" in
99                 n*) d_uname="$define"; call=uname;;
100                 esac
101         else
102                 echo 'uname() found.' >&4
103                 d_uname="$define"
104                 case "$call" in
105                 '') call=uname ;;
106                 esac
107         fi
108 fi
109 @end
110 case "$d_gethname" in
111 '') d_gethname="$undef";;
112 esac
113 case "$d_uname" in
114 '') d_uname="$undef";;
115 esac
116 @if PHOSTNAME || MYHOSTNAME
117 case "$d_uname$d_gethname" in
118 *define*)
119         dflt=n
120         cat <<EOM
121
122 Every now and then someone has a $call() that lies about the hostname
123 but can't be fixed for political or economic reasons.  If you wish, I can
124 @if MYHOSTNAME && PHOSTNAME
125 pretend $call() isn't there and maybe compile in the hostname or
126 compute it from the '$phostname' command at run-time.
127 @elsif MYHOSTNAME
128 pretend $call() isn't there and maybe compile in the hostname.
129 @elsif PHOSTNAME
130 pretend $call() isn't there and maybe compute hostname at run-time
131 thanks to the '$phostname' command.
132 @elsif WHOAMI
133 get the hostname from whomai.h (provided you have one).
134 @else
135 simply ignore your host name and use someting like "noname" instead.
136 @end
137
138 EOM
139         rp="Shall I ignore $call() from now on?"
140         . ./myread
141         case "$ans" in
142         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
143         esac;;
144 esac
145 @end
146 @if PHOSTNAME || aphostname
147 ?X: Compute the full path name for the command
148 case "$phostname" in
149 '') aphostname='';;
150 *) case "$aphostname" in
151         /*) ;;
152         *) set X $phostname
153                 shift
154                 file=$1
155                 shift
156                 file=`./loc $file $file $pth`
157                 aphostname=`echo $file $*`
158                 ;;
159         esac
160         ;;
161 esac
162 @end
163 @if PHOSTNAME && MYHOSTNAME
164 case "$d_uname$d_gethname" in
165 *define*) ;;
166 *)
167         case "$phostname" in
168         '') ;;
169         *)
170                 $cat <<EOT
171
172 There is no gethostname() or uname() on this system.  You have two
173 possibilities at this point:
174
175 1)  You can have your host name ($myhostname) compiled into $package, which
176     lets $package start up faster, but makes your binaries non-portable, or
177 2)  you can have $package use a
178
179         popen("$aphostname","r")
180
181     which will start slower but be more portable.
182
183 @       if WHOAMI
184 Option 1 will give you the option of using whoami.h if you have one.
185 @       end
186 If you want option 2 but with a different command, you can edit config.sh at
187 the end of this shell script.
188
189 EOT
190                 case "$d_phostname" in
191                 "$define") dflt=n;;
192                 "$undef")  dflt=y;;
193                 '')
194                         case "$d_portable" in
195                         "$define") dflt=n ;;
196                         *) dflt=y ;;
197                         esac;;
198                 esac
199                 rp="Do you want your host name compiled in?"
200                 . ./myread
201                 case "$ans" in
202                 n*) d_phostname="$define" ;;
203                 *) aphostname=''; d_phostname="$undef";;
204                 esac;;
205         esac
206         case "$aphostname" in
207         '')
208 @       if WHOAMI
209                 case "$i_whoami" in
210                 "$define")
211                         dflt=y
212                         $cat <<EOM
213
214 No hostname function--you can either use the whoami.h file, which has this line:
215
216         `grep sysname $usrinc/whoami.h`
217
218 or you can have the name we came up with earlier ($myhostname) hardwired in.
219 EOM
220                         rp="Use whoami.h to get hostname?"
221                         . ./myread
222                         case "$ans" in
223                         n*) i_whoami="$undef";;
224                         esac
225                         ;;
226                 "$undef")
227                         $cat <<EOM
228 No hostname function and no whoami.h -- hardwiring "$myhostname".
229 EOM
230                         ;;
231                 esac;;
232 @       else
233                 echo 'No hostname function -- hardwiring "'$myhostname'".' >&4;;
234 @       end
235         esac;;
236 esac
237 @elsif PHOSTNAME
238 case "$d_uname$d_gethname" in
239 *define*) ;;
240 *)
241         case "$phostname" in
242         '')
243 @       if WHOAMI
244                 case "$i_whoami" in
245                 "$define")
246                         $cat <<EOM
247
248 No hostname function--we'll use the whoami.h file, which has this line:
249
250         `grep sysname $usrinc/whoami.h`
251
252 EOM
253                         ;;
254                 *) echo "There will be no way for $package to get your hostname." >&4;;
255                 esac;;
256 @       else
257                 echo "There will be no way for $package to get your hostname." >&4;;
258 @       end
259         *)
260         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
261                 ;;
262         esac;;
263 esac
264 @elsif MYHOSTNAME
265 case "$d_uname$d_gethname" in
266 *define*) ;;
267 *)
268 @       if WHOAMI
269         case "$i_whoami" in
270         "$define")
271                 dflt=y
272                 $cat <<EOM
273
274 No hostname function--you can either use the whoami.h file, which has this line:
275
276         `grep sysname $usrinc/whoami.h`
277
278 or you can have the name we came up with earlier ($myhostname) hardwired in.
279 EOM
280                 rp="Use whoami.h to get hostname?"
281                 . ./myread
282                 case "$ans" in
283                 n*) i_whoami="$undef";;
284                 esac
285                 ;;
286         "$undef")
287                 echo 'No whoami.h--hardwiring "'$myhostname'".' >&4;;
288         esac;;
289 @       else
290         echo 'Hardwiring "'$myhostname'".' >&4;;
291 @       end
292 esac
293 @end
294 case "$d_phostname" in
295 '') d_phostname="$undef";;
296 esac
297