~dannf/ubuntu/saucy/screen/lp1213278-from-debian

« back to all changes in this revision

Viewing changes to configure.in

  • Committer: Bazaar Package Importer
  • Author(s): Nathaniel McCallum
  • Date: 2004-09-03 15:15:33 UTC
  • Revision ID: james.westby@ubuntu.com-20040903151533-px02yqlrchs4fv2t
Tags: upstream-4.0.2
ImportĀ upstreamĀ versionĀ 4.0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
dnl Process this file with autoconf to produce a configure script.
 
2
dnl
 
3
dnl $Id: configure.in,v 1.18 1994/09/06 16:59:54 mlschroe Exp $ FAU
 
4
dnl
 
5
dnl Many thanks to David MacKenzie for writing autoconf and
 
6
dnl providing a sample configure.in file for screen.
 
7
dnl
 
8
AC_REVISION($Revision: 1.18 $)dnl
 
9
AC_INIT(screen.c)
 
10
AC_CONFIG_HEADER(config.h)
 
11
 
 
12
dnl
 
13
dnl Define some useful macros
 
14
dnl
 
15
AC_DEFUN(AC_PROGRAM_SOURCE,
 
16
[AC_REQUIRE([AC_PROG_CPP])AC_PROVIDE([$0])cat > conftest.c <<EOF
 
17
#include "confdefs.h"
 
18
[$1]
 
19
_CUT_HERE_
 
20
[$2]
 
21
EOF
 
22
eval "$ac_cpp conftest.c 2>&5 | sed -e '1,/_CUT_HERE_/d' -e 's/ //g' > conftest.out"
 
23
. ./conftest.out
 
24
rm -f conftest*
 
25
])dnl
 
26
dnl
 
27
define(AC_NOTE,
 
28
[echo "$1" 1>&AC_FD_MSG
 
29
])dnl
 
30
 
 
31
dnl
 
32
dnl Extract version from patchlevel.h
 
33
dnl
 
34
rev=`sed < ${srcdir}/patchlevel.h -n -e '/#define REV/s/#define REV  *//p'`
 
35
vers=`sed < ${srcdir}/patchlevel.h -n -e '/#define VERS/s/#define VERS  *//p'`
 
36
pat=`sed < ${srcdir}/patchlevel.h -n -e '/#define PATCHLEVEL/s/#define PATCHLEVEL  *//p'`
 
37
VERSION="$rev.$vers.$pat"
 
38
AC_NOTE(this is screen version $VERSION)
 
39
AC_SUBST(VERSION)
 
40
AC_PREFIX_PROGRAM(screen)
 
41
AC_PREFIX_PROGRAM(gzip)
 
42
 
 
43
old_CFLAGS="$CFLAGS"
 
44
AC_PROG_CC
 
45
AC_PROG_CPP
 
46
AC_PROG_GCC_TRADITIONAL
 
47
AC_ISC_POSIX
 
48
 
 
49
AC_TRY_RUN(main(){exit(0);},,[
 
50
if test $CC != cc ; then
 
51
AC_NOTE(Your $CC failed - restarting with CC=cc)
 
52
AC_NOTE()
 
53
CC=cc
 
54
export CC
 
55
exec $0 $configure_args
 
56
fi
 
57
])
 
58
 
 
59
AC_TRY_RUN(main(){exit(0);},,
 
60
exec 5>&2
 
61
eval $ac_link
 
62
AC_NOTE(CC=$CC; CFLAGS=$CFLAGS; LIBS=$LIBS;)
 
63
AC_NOTE($ac_compile)
 
64
AC_MSG_ERROR(Can't run the compiler - sorry))
 
65
 
 
66
AC_TRY_RUN([
 
67
main()
 
68
{
 
69
  int __something_strange_();
 
70
  __something_strange_(0);
 
71
}
 
72
],AC_MSG_ERROR(Your compiler does not set the exit status - sorry))
 
73
 
 
74
AC_PROG_AWK
 
75
 
 
76
AC_PROG_INSTALL
 
77
 
 
78
if test -f etc/toolcheck; then
 
79
AC_CHECKING(for buggy tools)
 
80
sh etc/toolcheck 1>&AC_FD_MSG
 
81
fi
 
82
 
 
83
 
 
84
 
 
85
dnl SOCKDIR
 
86
AC_MSG_CHECKING(if a system-wide socket dir should be used) 
 
87
AC_ARG_ENABLE(socket-dir,
 
88
    [  --disable-socket-dir    disable system wide socket-dir and use ~/.screen instead],
 
89
    [
 
90
        AC_MSG_RESULT(no.  ~/.screen will be used instead.)
 
91
    ],
 
92
    [
 
93
        AC_MSG_RESULT(yes)
 
94
        AC_MSG_CHECKING(for the socket dir)
 
95
        SOCKDIR="(eff_uid ? \"/tmp/uscreens\" : \"/tmp/screens\")"
 
96
        AC_ARG_WITH(socket-dir, [  --with-socket-dir=path  where to put the per-user sockets], [ SOCKDIR="\"${withval}\"" ])
 
97
        AC_MSG_RESULT(${SOCKDIR})
 
98
        AC_DEFINE_UNQUOTED(SOCKDIR, $SOCKDIR)
 
99
    ]
 
100
)
 
101
 
 
102
 
 
103
dnl
 
104
dnl    ****  special unix variants  ****
 
105
dnl
 
106
if test -n "$ISC"; then
 
107
  AC_DEFINE(ISC) LIBS="$LIBS -linet"
 
108
fi
 
109
 
 
110
dnl AC_CHECKING(for OSF1)
 
111
dnl if test -f /bin/uname ; then
 
112
dnl if test `/bin/uname` = OSF1 || test -f /osf_boot; then
 
113
dnl AC_DEFINE(OSF1)     # this disables MIPS again....
 
114
dnl fi
 
115
dnl fi
 
116
 
 
117
if test -f /sysV68 ; then
 
118
AC_DEFINE(sysV68)
 
119
fi
 
120
 
 
121
AC_CHECKING(for MIPS)
 
122
if test -f /lib/libmld.a || test -f /usr/lib/libmld.a || test -f /usr/lib/cmplrs/cc/libmld.a; then
 
123
oldlibs="$LIBS"
 
124
test -f /bin/mx || LIBS="$LIBS -lmld" # for nlist. But not on alpha.
 
125
dnl djm@eng.umd.edu: "... for one thing, it doubles the size of the executable"
 
126
AC_CHECKING(mld library)
 
127
AC_TRY_LINK(,,,LIBS="$oldlibs")
 
128
dnl
 
129
dnl
 
130
if test -r /dev/ptc; then
 
131
AC_DEFINE(MIPS)
 
132
AC_CHECKING(wait3)
 
133
AC_TRY_LINK(,[wait3();], ,
 
134
AC_CHECKING(wait2)
 
135
AC_TRY_LINK(,[wait2();],
 
136
dnl John Rouillard (rouilj@sni-usa.com):
 
137
dnl need -I/usr/include/bsd in RISCOS otherwise sockets are broken, no
 
138
dnl job control etc.
 
139
dnl Detect RISCOS if wait2 is present, but not wait3.
 
140
AC_DEFINE(USE_WAIT2) LIBS="$LIBS -lbsd" ; CC="$CC -I/usr/include/bsd"
 
141
))
 
142
fi
 
143
fi
 
144
 
 
145
 
 
146
AC_CHECKING(for Ultrix)
 
147
AC_EGREP_CPP(yes,
 
148
[#if defined(ultrix) || defined(__ultrix)
 
149
   yes;
 
150
#endif
 
151
], ULTRIX=1)
 
152
 
 
153
if test -f /usr/lib/libpyr.a ; then
 
154
oldlibs="$LIBS"
 
155
LIBS="$LIBS -lpyr"
 
156
AC_CHECKING(Pyramid OSX)
 
157
AC_TRY_LINK(,[open_controlling_pty("")], AC_DEFINE(OSX), LIBS="$oldlibs")
 
158
fi
 
159
 
 
160
dnl ghazi@caip.rutgers.edu (Kaveh R. Ghazi):
 
161
dnl BBN butterfly is not POSIX, but a MACH BSD system.
 
162
dnl Do not define POSIX and TERMIO.
 
163
AC_CHECKING(for butterfly)
 
164
AC_EGREP_CPP(yes,
 
165
[#if defined(butterfly)
 
166
  yes;
 
167
#endif
 
168
], butterfly=1)
 
169
 
 
170
if test -z "$butterfly"; then
 
171
if test -n "$ULTRIX"; then
 
172
  test -z "$GCC" && CC="$CC -YBSD"
 
173
fi
 
174
AC_CHECKING(for POSIX.1)
 
175
AC_EGREP_CPP(yes,
 
176
[#include <sys/types.h>
 
177
#include <unistd.h>
 
178
main () {
 
179
#ifdef _POSIX_VERSION
 
180
  yes;
 
181
#endif
 
182
], AC_NOTE(- you have a POSIX system) AC_DEFINE(POSIX) posix=1)
 
183
fi
 
184
 
 
185
AC_CHECKING(for System V)
 
186
AC_TRY_COMPILE(
 
187
[#include <sys/types.h>
 
188
#include <signal.h>
 
189
#include <fcntl.h>], [int x = SIGCHLD | FNDELAY;], , AC_DEFINE(SYSV))
 
190
 
 
191
AC_CHECKING(for sequent/ptx)
 
192
AC_EGREP_CPP(yes,
 
193
[#ifdef _SEQUENT_
 
194
  yes;
 
195
#endif
 
196
], LIBS="$LIBS -lsocket -linet";seqptx=1)
 
197
 
 
198
oldlibs="$LIBS"
 
199
LIBS="$LIBS -lelf"
 
200
AC_CHECKING(SVR4)
 
201
AC_TRY_LINK([#include <utmpx.h>
 
202
],,
 
203
[AC_CHECK_HEADER(dwarf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN),
 
204
[AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4) AC_DEFINE(BUGGYGETLOGIN))])]
 
205
,LIBS="$oldlibs")
 
206
 
 
207
AC_CHECKING(for Solaris 2.x)
 
208
AC_EGREP_CPP(yes,
 
209
[#if defined(SVR4) && defined(sun)
 
210
  yes
 
211
#endif
 
212
], LIBS="$LIBS -lsocket -lnsl -lkstat")
 
213
 
 
214
dnl
 
215
dnl    ****  typedefs ****
 
216
dnl
 
217
dnl (currently not used)
 
218
dnl
 
219
dnl AC_CHECKING(for pid_t)
 
220
dnl AC_EGREP_CPP(pid_t,[#include <sys/types.h>
 
221
dnl ],AC_DEFINE(PID_T_DEFINED))
 
222
dnl
 
223
dnl AC_CHECKING(for sig_t)
 
224
dnl AC_EGREP_CPP(sig_t,[#include <sys/types.h>
 
225
dnl #include <signal.h>
 
226
dnl ],AC_DEFINE(SIG_T_DEFINED))
 
227
dnl
 
228
dnl AC_CHECKING(for uid_t)
 
229
dnl AC_EGREP_CPP(uid_t,[#include <sys/types.h>
 
230
dnl ],AC_DEFINE(UID_T_DEFINED))
 
231
dnl
 
232
 
 
233
dnl
 
234
dnl   ****     Job control     ****
 
235
dnl
 
236
 
 
237
AC_CHECKING(BSD job jontrol)
 
238
AC_TRY_LINK(
 
239
[#include <sys/types.h>
 
240
#include <sys/ioctl.h>
 
241
], [
 
242
#ifdef POSIX
 
243
tcsetpgrp(0, 0);
 
244
#else
 
245
int x = TIOCSPGRP;
 
246
#ifdef SYSV
 
247
setpgrp();
 
248
#else
 
249
int y = TIOCNOTTY;
 
250
#endif
 
251
#endif
 
252
], AC_NOTE(- you have jobcontrol) AC_DEFINE(BSDJOBS), AC_NOTE(- you don't have jobcontrol))
 
253
 
 
254
dnl
 
255
dnl    ****  setreuid(), seteuid()  ****
 
256
dnl
 
257
AC_CHECKING(setreuid)
 
258
AC_TRY_LINK(,[
 
259
#ifdef __hpux
 
260
setresuid(0, 0, 0);
 
261
#else
 
262
setreuid(0, 0);
 
263
#endif
 
264
], AC_DEFINE(HAVE_SETREUID))
 
265
dnl
 
266
dnl seteuid() check:
 
267
dnl   linux seteuid was broken before V1.1.11
 
268
dnl   NeXT, AUX, ISC, and ultrix are still broken (no saved uid support)
 
269
dnl   Solaris seteuid doesn't change the saved uid, bad for
 
270
dnl     multiuser screen sessions
 
271
AC_CHECKING(seteuid)
 
272
AC_TRY_LINK(,[
 
273
#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) || defined(ultrix) || (defined(sun) && defined(SVR4)) || defined(ISC) || defined(sony_news)
 
274
seteuid_is_broken(0);
 
275
#else
 
276
seteuid(0);
 
277
#endif
 
278
], AC_DEFINE(HAVE_SETEUID))
 
279
 
 
280
dnl
 
281
dnl    ****  select()  ****
 
282
dnl
 
283
 
 
284
AC_CHECKING(select)
 
285
AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
 
286
LIBS="$LIBS -lnet -lnsl"
 
287
AC_CHECKING(select with $LIBS)
 
288
AC_TRY_LINK(,[select(0, 0, 0, 0, 0);],, 
 
289
AC_MSG_ERROR(!!! no select - no screen))
 
290
)
 
291
dnl
 
292
dnl    ****  FIFO tests  ****
 
293
dnl
 
294
 
 
295
AC_CHECKING(fifos)
 
296
AC_TRY_RUN([
 
297
#include <sys/types.h>
 
298
#include <sys/stat.h>
 
299
#include <fcntl.h>
 
300
 
 
301
#ifndef O_NONBLOCK
 
302
#define O_NONBLOCK O_NDELAY
 
303
#endif
 
304
#ifndef S_IFIFO
 
305
#define S_IFIFO 0010000
 
306
#endif
 
307
 
 
308
char *fin = "/tmp/conftest$$";
 
309
 
 
310
main()
 
311
{
 
312
  struct stat stb;
 
313
#ifdef FD_SET
 
314
  fd_set f;
 
315
#else
 
316
  int f;
 
317
#endif
 
318
 
 
319
  (void)alarm(5);
 
320
#ifdef POSIX
 
321
  if (mkfifo(fin, 0777))
 
322
#else
 
323
  if (mknod(fin, S_IFIFO|0777, 0))
 
324
#endif
 
325
    exit(1);
 
326
  if (stat(fin, &stb) || (stb.st_mode & S_IFIFO) != S_IFIFO)
 
327
    exit(1);
 
328
  close(0);
 
329
#ifdef __386BSD__
 
330
  /*
 
331
   * The next test fails under 386BSD, but screen works using fifos.
 
332
   * Fifos in O_RDWR mode are only used for the BROKEN_PIPE case and for
 
333
   * the select() configuration test.
 
334
   */
 
335
  exit(0);
 
336
#endif
 
337
  if (open(fin, O_RDONLY | O_NONBLOCK))
 
338
    exit(1);
 
339
  if (fork() == 0)
 
340
    {
 
341
      close(0);
 
342
      if (open(fin, O_WRONLY | O_NONBLOCK))
 
343
        exit(1);
 
344
      close(0);
 
345
      if (open(fin, O_WRONLY | O_NONBLOCK))
 
346
        exit(1);
 
347
      if (write(0, "TEST", 4) == -1)
 
348
        exit(1);
 
349
      exit(0);
 
350
    }
 
351
#ifdef FD_SET
 
352
  FD_SET(0, &f);
 
353
#else
 
354
  f = 1;
 
355
#endif
 
356
  if (select(1, &f, 0, 0, 0) == -1)
 
357
    exit(1);
 
358
  exit(0);
 
359
}
 
360
], AC_NOTE(- your fifos are usable) fifo=1,
 
361
AC_NOTE(- your fifos are not usable))
 
362
rm -f /tmp/conftest*
 
363
 
 
364
if test -n "$fifo"; then
 
365
AC_CHECKING(for broken fifo implementation)
 
366
AC_TRY_RUN([
 
367
#include <sys/types.h>
 
368
#include <fcntl.h>
 
369
#include <sys/time.h>
 
370
#include <sys/stat.h>
 
371
 
 
372
#ifndef O_NONBLOCK
 
373
#define O_NONBLOCK O_NDELAY
 
374
#endif
 
375
#ifndef S_IFIFO
 
376
#define S_IFIFO 0010000
 
377
#endif
 
378
 
 
379
char *fin = "/tmp/conftest$$";
 
380
 
 
381
main()
 
382
{
 
383
  struct timeval tv;
 
384
#ifdef FD_SET
 
385
  fd_set f;
 
386
#else
 
387
  int f;
 
388
#endif
 
389
 
 
390
#ifdef POSIX
 
391
  if (mkfifo(fin, 0600))
 
392
#else
 
393
  if (mknod(fin, S_IFIFO|0600, 0))
 
394
#endif
 
395
    exit(1);
 
396
  close(0);
 
397
  if (open(fin, O_RDONLY|O_NONBLOCK))
 
398
    exit(1);
 
399
#ifdef FD_SET
 
400
  FD_SET(0, &f);
 
401
#else
 
402
  f = 1;
 
403
#endif
 
404
  tv.tv_sec = 1;
 
405
  tv.tv_usec = 0;
 
406
  if (select(1, &f, 0, 0, &tv))
 
407
    exit(1);
 
408
  exit(0);
 
409
}
 
410
], AC_NOTE(- your implementation is ok), 
 
411
AC_NOTE(- you have a broken implementation) AC_DEFINE(BROKEN_PIPE) fifobr=1)
 
412
rm -f /tmp/conftest*
 
413
fi
 
414
 
 
415
dnl
 
416
dnl    ****  SOCKET tests  ****
 
417
dnl 
 
418
dnl     may need        LIBS="$LIBS -lsocket"   here
 
419
dnl
 
420
 
 
421
AC_CHECKING(sockets)
 
422
AC_TRY_RUN([
 
423
#include <sys/types.h>
 
424
#include <sys/socket.h>
 
425
#include <sys/un.h>
 
426
#include <fcntl.h>
 
427
 
 
428
char *son = "/tmp/conftest$$";
 
429
 
 
430
main()
 
431
{
 
432
  int s1, s2, l;
 
433
  struct sockaddr_un a;
 
434
#ifdef FD_SET
 
435
  fd_set f;
 
436
#else
 
437
  int f;
 
438
#endif
 
439
 
 
440
  (void)alarm(5);
 
441
  if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
 
442
    exit(1);
 
443
  a.sun_family = AF_UNIX;
 
444
  strcpy(a.sun_path, son);
 
445
  (void) unlink(son);
 
446
  if (bind(s1, (struct sockaddr *) &a, strlen(son)+2) == -1)
 
447
    exit(1);
 
448
  if (listen(s1, 2))
 
449
    exit(1);
 
450
  if (fork() == 0)
 
451
    {
 
452
      if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
 
453
        kill(getppid(), 3);
 
454
      (void)connect(s2, (struct sockaddr *)&a, strlen(son) + 2);
 
455
      if (write(s2, "HELLO", 5) == -1)
 
456
        kill(getppid(), 3);
 
457
      exit(0);
 
458
    }
 
459
  l = sizeof(a);
 
460
  close(0);
 
461
  if (accept(s1, &a, &l))
 
462
    exit(1);
 
463
#ifdef FD_SET
 
464
  FD_SET(0, &f);
 
465
#else
 
466
  f = 1;
 
467
#endif
 
468
  if (select(1, &f, 0, 0, 0) == -1)
 
469
    exit(1);
 
470
  exit(0);
 
471
}
 
472
], AC_NOTE(- your sockets are usable) sock=1,
 
473
AC_NOTE(- your sockets are not usable))
 
474
rm -f /tmp/conftest*
 
475
 
 
476
if test -n "$sock"; then
 
477
AC_CHECKING(socket implementation)
 
478
AC_TRY_RUN([
 
479
#include <sys/types.h>
 
480
#include <sys/stat.h>
 
481
#include <sys/socket.h>
 
482
#include <sys/un.h>
 
483
 
 
484
char *son = "/tmp/conftest$$";
 
485
 
 
486
main()
 
487
{
 
488
  int s;
 
489
  struct stat stb;
 
490
  struct sockaddr_un a;
 
491
  if ((s = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
 
492
    exit(0);
 
493
  a.sun_family = AF_UNIX;
 
494
  strcpy(a.sun_path, son);
 
495
  (void) unlink(son);
 
496
  if (bind(s, (struct sockaddr *) &a, strlen(son)+2) == -1)
 
497
    exit(0);
 
498
  if (stat(son, &stb))
 
499
    exit(1);
 
500
  close(s);
 
501
  exit(0);
 
502
}
 
503
],AC_NOTE(- you are normal),
 
504
AC_NOTE(- unix domain sockets are not kept in the filesystem)
 
505
AC_DEFINE(SOCK_NOT_IN_FS) socknofs=1)
 
506
rm -f /tmp/conftest*
 
507
fi
 
508
 
 
509
 
 
510
dnl
 
511
dnl    ****  choose sockets or fifos  ****
 
512
dnl
 
513
if test -n "$fifo"; then
 
514
  if test -n "$sock"; then
 
515
    if test -n "$nore"; then
 
516
      AC_NOTE(- hmmm... better take the fifos)
 
517
      AC_DEFINE(NAMEDPIPE)
 
518
    elif test -n "$fifobr"; then
 
519
      AC_NOTE(- as your fifos are broken lets use the sockets.)
 
520
    else
 
521
      AC_NOTE(- both sockets and fifos usable. let's take fifos.)
 
522
      AC_DEFINE(NAMEDPIPE)
 
523
    fi
 
524
  else
 
525
    AC_NOTE(- using named pipes, of course)
 
526
    AC_DEFINE(NAMEDPIPE)
 
527
  fi
 
528
elif test -n "$sock"; then
 
529
  AC_NOTE(- using unix-domain sockets, of course)
 
530
else
 
531
  AC_MSG_ERROR(you have neither usable sockets nor usable pipes -> no screen)
 
532
fi
 
533
 
 
534
dnl
 
535
dnl    ****  check the select implementation ****
 
536
dnl
 
537
 
 
538
AC_CHECKING(select return value)
 
539
AC_TRY_RUN([
 
540
#include <sys/types.h>
 
541
#include <sys/stat.h>
 
542
#include <fcntl.h>
 
543
 
 
544
char *nam = "/tmp/conftest$$";
 
545
 
 
546
#ifdef NAMEDPIPE
 
547
 
 
548
#ifndef O_NONBLOCK
 
549
#define O_NONBLOCK O_NDELAY
 
550
#endif
 
551
#ifndef S_IFIFO
 
552
#define S_IFIFO 0010000
 
553
#endif
 
554
 
 
555
 
 
556
main()
 
557
{
 
558
#ifdef FD_SET
 
559
  fd_set f;
 
560
#else
 
561
  int f;
 
562
#endif
 
563
 
 
564
#ifdef __FreeBSD__
 
565
/* From Andrew A. Chernov (ache@astral.msk.su):
 
566
 * opening RDWR fifo fails in BSD 4.4, but select return values are
 
567
 * right.
 
568
 */
 
569
  exit(0);
 
570
#endif
 
571
  (void)alarm(5);
 
572
#ifdef POSIX
 
573
  if (mkfifo(nam, 0777))
 
574
#else
 
575
  if (mknod(nam, S_IFIFO|0777, 0))
 
576
#endif
 
577
    exit(1);
 
578
  close(0);
 
579
  if (open(nam, O_RDWR | O_NONBLOCK))
 
580
    exit(1);
 
581
  if (write(0, "TEST", 4) == -1)
 
582
    exit(1);
 
583
 
 
584
#else
 
585
 
 
586
#include <sys/types.h>
 
587
#include <sys/socket.h>
 
588
#include <sys/un.h>
 
589
 
 
590
main()
 
591
{
 
592
  int s1, s2, l;
 
593
  struct sockaddr_un a;
 
594
#ifdef FD_SET
 
595
  fd_set f;
 
596
#else
 
597
  int f;
 
598
#endif
 
599
 
 
600
  (void)alarm(5);
 
601
  if ((s1 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
 
602
    exit(1);
 
603
  a.sun_family = AF_UNIX;
 
604
  strcpy(a.sun_path, nam);
 
605
  (void) unlink(nam);
 
606
  if (bind(s1, (struct sockaddr *) &a, strlen(nam)+2) == -1)
 
607
    exit(1);
 
608
  if (listen(s1, 2))
 
609
    exit(1);
 
610
  if (fork() == 0)
 
611
    {
 
612
      if ((s2 = socket(AF_UNIX, SOCK_STREAM, 0)) == -1)
 
613
        kill(getppid(), 3);
 
614
      (void)connect(s2, (struct sockaddr *)&a, strlen(nam) + 2);
 
615
      if (write(s2, "HELLO", 5) == -1)
 
616
        kill(getppid(), 3);
 
617
      exit(0);
 
618
    }
 
619
  l = sizeof(a);
 
620
  close(0);
 
621
  if (accept(s1, (struct sockaddr *)&a, &l))
 
622
    exit(1);
 
623
#endif
 
624
 
 
625
 
 
626
#ifdef FD_SET
 
627
  FD_SET(0, &f);
 
628
#else
 
629
  f = 1;
 
630
#endif
 
631
  if (select(1, &f, 0, 0, 0) == -1)
 
632
    exit(1);
 
633
  if (select(1, &f, &f, 0, 0) != 2)
 
634
    exit(1);
 
635
  exit(0);
 
636
}
 
637
],AC_NOTE(- select is ok),
 
638
AC_NOTE(- select can't count) AC_DEFINE(SELECT_BROKEN))
 
639
 
 
640
dnl
 
641
dnl    ****  termcap or terminfo  ****
 
642
dnl
 
643
AC_CHECKING(for tgetent)
 
644
AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
 
645
olibs="$LIBS"
 
646
LIBS="-lcurses $olibs"
 
647
AC_CHECKING(libcurses)
 
648
AC_TRY_LINK(,[
 
649
#ifdef __hpux
 
650
__sorry_hpux_libcurses_is_totally_broken_in_10_10();
 
651
#else
 
652
tgetent((char *)0, (char *)0);
 
653
#endif
 
654
],,
 
655
LIBS="-ltermcap $olibs"
 
656
AC_CHECKING(libtermcap)
 
657
AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
 
658
LIBS="-ltermlib $olibs"
 
659
AC_CHECKING(libtermlib)
 
660
AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
 
661
LIBS="-lncurses $olibs"
 
662
AC_CHECKING(libncurses)
 
663
AC_TRY_LINK(,tgetent((char *)0, (char *)0);,,
 
664
AC_MSG_ERROR(!!! no tgetent - no screen))))))
 
665
 
 
666
AC_TRY_RUN([
 
667
main()
 
668
{
 
669
 exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
 
670
}], AC_NOTE(- you use the termcap database),
 
671
AC_NOTE(- you use the terminfo database) AC_DEFINE(TERMINFO))
 
672
AC_CHECKING(ospeed)
 
673
AC_TRY_LINK(extern short ospeed;,ospeed=5;,,AC_DEFINE(NEED_OSPEED))
 
674
 
 
675
dnl
 
676
dnl    ****  PTY specific things  ****
 
677
dnl
 
678
AC_CHECKING(for /dev/ptc)
 
679
if test -r /dev/ptc; then
 
680
AC_DEFINE(HAVE_DEV_PTC)
 
681
fi
 
682
 
 
683
AC_CHECKING(for SVR4 ptys)
 
684
sysvr4ptys=
 
685
if test -c /dev/ptmx ; then
 
686
AC_TRY_LINK([],[ptsname(0);grantpt(0);unlockpt(0);],[AC_DEFINE(HAVE_SVR4_PTYS)
 
687
sysvr4ptys=1])
 
688
fi
 
689
 
 
690
AC_CHECK_FUNCS(getpt)
 
691
 
 
692
dnl check for openpty()
 
693
if test -z "$sysvr4ptys"; then
 
694
AC_CHECK_FUNCS(openpty,,
 
695
[AC_CHECK_LIB(util,openpty, [AC_DEFINE(HAVE_OPENPTY)] [LIBS="$LIBS -lutil"])])
 
696
fi
 
697
 
 
698
AC_CHECKING(for ptyranges)
 
699
if test -d /dev/ptym ; then
 
700
pdir='/dev/ptym'
 
701
else
 
702
pdir='/dev'
 
703
fi
 
704
dnl SCO uses ptyp%d
 
705
AC_EGREP_CPP(yes,
 
706
[#ifdef M_UNIX
 
707
   yes;
 
708
#endif
 
709
], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
 
710
dnl if test -c /dev/ptyp19; then
 
711
dnl ptys=`echo /dev/ptyp??`
 
712
dnl else
 
713
dnl ptys=`echo $pdir/pty??`
 
714
dnl fi
 
715
if test "$ptys" != "$pdir/pty??" ; then
 
716
p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
 
717
p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g'  | sort -u | tr -d '\012'`
 
718
AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
 
719
AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
 
720
fi
 
721
 
 
722
dnl    ****  pty mode/group handling ****
 
723
dnl
 
724
dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
 
725
AC_ARG_WITH(pty-mode, [  --with-pty-mode=mode    default mode for ptys], [ ptymode="${withval}" ])
 
726
AC_ARG_WITH(pty-group, [  --with-pty-group=group  default group for ptys], [ ptygrp="${withval}" ])
 
727
test -n "$ptymode" || ptymode=0620
 
728
if test -n "$ptygrp" ; then
 
729
AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
 
730
AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
 
731
else
 
732
 
 
733
AC_CHECKING(default tty permissions/group)
 
734
rm -f conftest_grp
 
735
AC_TRY_RUN([
 
736
#include <sys/types.h>
 
737
#include <sys/stat.h>
 
738
#include <stdio.h>
 
739
main()
 
740
{
 
741
  struct stat sb;
 
742
  char *x,*ttyname();
 
743
  int om, m;
 
744
  FILE *fp;
 
745
 
 
746
  if (!(x = ttyname(0))) exit(1);
 
747
  if (stat(x, &sb)) exit(1);
 
748
  om = sb.st_mode;
 
749
  if (om & 002) exit(0);
 
750
  m = system("mesg y");
 
751
  if (m == -1 || m == 127) exit(1);
 
752
  if (stat(x, &sb)) exit(1);
 
753
  m = sb.st_mode;
 
754
  if (chmod(x, om)) exit(1);
 
755
  if (m & 002) exit(0);
 
756
  if (sb.st_gid == getgid()) exit(1);
 
757
  if (!(fp=fopen("conftest_grp", "w")))
 
758
    exit(1);
 
759
  fprintf(fp, "%d\n", sb.st_gid);
 
760
  fclose(fp);
 
761
  exit(0);
 
762
}
 
763
],[
 
764
    if test -f conftest_grp; then
 
765
        ptygrp=`cat conftest_grp`
 
766
        AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
 
767
        AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
 
768
        AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
 
769
    else
 
770
        AC_NOTE(- ptys are world accessable)
 
771
    fi
 
772
],[
 
773
    WRITEPATH=''
 
774
    XTERMPATH=''
 
775
    AC_PATH_PROG(WRITEPATH, write)
 
776
    AC_PATH_PROG(XTERMPATH, xterm)
 
777
    found=
 
778
    if test -n "$WRITEPATH$XTERMPATH"; then
 
779
      findfollow=
 
780
      lsfollow=
 
781
      found=`find $WRITEPATH $XTERMPATH -follow -print 2>/dev/null`
 
782
      if test -n "$found"; then
 
783
        findfollow=-follow
 
784
        lsfollow=L
 
785
      fi
 
786
      if test -n "$XTERMPATH"; then
 
787
        ptygrpn=`ls -l$lsfollow $XTERMPATH | sed -n -e 1p | $AWK '{print $4}'`
 
788
        if test tty != "$ptygrpn"; then
 
789
          XTERMPATH=
 
790
        fi
 
791
      fi
 
792
    fi
 
793
    if test -n "$WRITEPATH$XTERMPATH"; then
 
794
      found=`find $WRITEPATH $XTERMPATH $findfollow -perm -2000 -print` 
 
795
      if test -n "$found"; then
 
796
        ptygrp=`ls -ln$lsfollow $found | sed -n -e 1p | $AWK '{print $4}'`
 
797
        AC_NOTE([- pty mode: $ptymode, group: $ptygrp])
 
798
        AC_DEFINE_UNQUOTED(PTYMODE, $ptymode)
 
799
        AC_DEFINE_UNQUOTED(PTYGROUP,$ptygrp)
 
800
      else
 
801
        AC_NOTE(- ptys are world accessable)
 
802
      fi
 
803
    else
 
804
      AC_NOTE(- can't determine - assume ptys are world accessable)
 
805
    fi
 
806
  ]
 
807
)
 
808
rm -f conftest_grp
 
809
fi
 
810
 
 
811
dnl
 
812
dnl    ****  utmp handling  ****
 
813
dnl
 
814
AC_CHECKING(getutent)
 
815
AC_TRY_LINK([
 
816
#include <time.h> /* to get time_t on SCO */
 
817
#include <sys/types.h>
 
818
#if defined(SVR4) && !defined(DGUX)
 
819
#include <utmpx.h>
 
820
#define utmp utmpx
 
821
#else
 
822
#include <utmp.h>
 
823
#endif
 
824
#ifdef __hpux
 
825
#define pututline _pututline
 
826
#endif
 
827
],
 
828
[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE(GETUTENT),
 
829
olibs="$LIBS"
 
830
LIBS="$LIBS -lgen"
 
831
AC_CHECKING(getutent with -lgen)
 
832
AC_TRY_LINK([
 
833
#include <time.h>
 
834
#include <sys/types.h>
 
835
#if defined(SVR4) && !defined(DGUX)
 
836
#include <utmpx.h>
 
837
#define utmp utmpx
 
838
#else
 
839
#include <utmp.h>
 
840
#endif
 
841
#ifdef __hpux
 
842
#define pututline _pututline
 
843
#endif
 
844
],
 
845
[int x = DEAD_PROCESS; pututline((struct utmp *)0); getutent();], AC_DEFINE(GETUTENT), LIBS="$olibs")
 
846
)
 
847
AC_CHECKING(ut_host)
 
848
AC_TRY_COMPILE([
 
849
#include <time.h>
 
850
#include <sys/types.h>
 
851
#if defined(SVR4) && !defined(DGUX)
 
852
#include <utmpx.h>
 
853
#define utmp utmpx
 
854
#else
 
855
#include <utmp.h>
 
856
#endif
 
857
],[struct utmp u; u.ut_host[0] = 0;], AC_DEFINE(UTHOST))
 
858
AC_CHECK_HEADER(utempter.h, have_utempter=yes, have_utempter=no)
 
859
if test "$have_utempter" = yes; then
 
860
  AC_DEFINE(HAVE_UTEMPTER)
 
861
  LIBS="$LIBS -lutempter"
 
862
fi
 
863
 
 
864
dnl
 
865
dnl    ****  loadav  ****
 
866
dnl
 
867
AC_CHECKING(for libutil(s))
 
868
test -f /usr/lib/libutils.a && LIBS="$LIBS -lutils"
 
869
test -f /usr/lib/libutil.a && LIBS="$LIBS -lutil"
 
870
 
 
871
AC_CHECKING(getloadavg)
 
872
AC_TRY_LINK(,[getloadavg((double *)0, 0);],
 
873
AC_DEFINE(LOADAV_GETLOADAVG) load=1,
 
874
if test -f /usr/lib/libkvm.a ; then
 
875
olibs="$LIBS"
 
876
LIBS="$LIBS -lkvm"
 
877
AC_CHECKING(getloadavg with -lkvm)
 
878
AC_TRY_LINK(,[getloadavg((double *)0, 0);],
 
879
AC_DEFINE(LOADAV_GETLOADAVG) load=1, LIBS="$olibs")
 
880
fi
 
881
)
 
882
 
 
883
if test -z "$load" ; then
 
884
AC_EGREP_CPP(yes,
 
885
[#if defined(NeXT) || defined(apollo) || defined(linux)
 
886
  yes;
 
887
#endif
 
888
], load=1)
 
889
fi
 
890
if test -z "$load" ; then
 
891
AC_CHECKING(for kernelfile)
 
892
for core in /unix /vmunix /dynix /hp-ux /xelos /dev/ksyms /kernel/unix /kernel/genunix /unicos /mach /netbsd /386bsd /dgux /bsd /stand/vmunix; do
 
893
  if test -f $core || test -c $core; then
 
894
    break
 
895
  fi
 
896
done
 
897
if test ! -f $core && test ! -c $core ; then
 
898
  AC_NOTE(- no kernelfile found)
 
899
else
 
900
  AC_NOTE(- using kernelfile '$core')
 
901
  if test -r $core ; then
 
902
  AC_DEFINE_UNQUOTED(LOADAV_UNIX,"$core")
 
903
  AC_CHECK_HEADER(nlist.h,
 
904
    [AC_DEFINE(NLIST_STRUCT)
 
905
     AC_CHECKING(n_un in struct nlist)
 
906
     AC_TRY_COMPILE([#include <nlist.h>],
 
907
       [struct nlist n; n.n_un.n_name = 0;],
 
908
        AC_DEFINE(NLIST_NAME_UNION))])
 
909
 
 
910
  AC_CHECKING(for nlist declaration)
 
911
  AC_EGREP_CPP([nlist(( |       )( |    )*.*\(|\()],[
 
912
#ifdef NLIST_STRUCT
 
913
# include <nlist.h>
 
914
#else
 
915
# include <a.out.h>
 
916
#endif
 
917
],AC_DEFINE(NLIST_DECLARED))
 
918
 
 
919
  AC_CHECKING(for avenrun symbol)
 
920
  nlist64=
 
921
  for av in avenrun _avenrun _Loadavg avenrun _avenrun _Loadavg; do
 
922
  AC_TRY_RUN([
 
923
#include <sys/types.h>
 
924
#ifdef NLIST_STRUCT
 
925
#include <nlist.h>
 
926
#else
 
927
#include <a.out.h>
 
928
#endif
 
929
 
 
930
$nlist64
 
931
 
 
932
struct nlist nl[2];
 
933
 
 
934
main()
 
935
{
 
936
#if !defined(_AUX_SOURCE) && !defined(AUX)
 
937
# ifdef NLIST_NAME_UNION
 
938
  nl[0].n_un.n_name = "$av";
 
939
# else
 
940
  nl[0].n_name = "$av";
 
941
# endif
 
942
#else
 
943
  strncpy(nl[0].n_name, "$av", sizeof(nl[0].n_name));
 
944
#endif
 
945
  nlist(LOADAV_UNIX, nl);
 
946
  if (nl[0].n_value == 0)
 
947
    exit(1);
 
948
  exit(0);
 
949
}
 
950
  ],avensym=$av;break)
 
951
  if test "$av" = _Loadavg; then
 
952
    nlist64='#define nlist nlist64'
 
953
  fi
 
954
  done
 
955
  if test -z "$avensym" ; then
 
956
    AC_NOTE(- no avenrun symbol found)
 
957
  else
 
958
    AC_NOTE(- using avenrun symbol '$avensym')
 
959
    AC_DEFINE_UNQUOTED(LOADAV_AVENRUN,"$avensym")
 
960
    if test -n "$nlist64"; then
 
961
      AC_NOTE(- used nlist64 to find it)
 
962
      AC_DEFINE(LOADAV_USE_NLIST64)
 
963
    fi
 
964
    load=1
 
965
  fi
 
966
  else
 
967
    AC_NOTE(  Can't configure the load average display feature)
 
968
    AC_NOTE(  because $core is not readable by you.)
 
969
    AC_NOTE(  To configure the load average display feature,)
 
970
    AC_NOTE(  re-run configure as root if possible.)
 
971
    AC_NOTE(  If you are not the system administrator then disregard)
 
972
    AC_NOTE(  this warning.  You can still use screen without)
 
973
    AC_NOTE(  the load average display feature.)
 
974
  fi
 
975
fi
 
976
fi
 
977
 
 
978
AC_PROGRAM_SOURCE([
 
979
#include <sys/types.h>
 
980
#include <sys/param.h>
 
981
],[
 
982
#if !defined(LOADAV_GETLOADAVG) && ((defined(hp300) && !defined(__hpux)) || defined(sun) || (defined(ultrix) && defined(mips)) || defined(_SEQUENT_) || defined(sgi) || (defined(SVR4) && !defined(__hpux)) || defined(sony_news) || (!defined(__osf__) && defined(__alpha)) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX) || defined(m88k))
 
983
loadtype=long
 
984
# if defined(apollo) || defined(_IBMR2) || defined(_AUX_SOURCE) || defined(AUX)
 
985
loadscale=65536
 
986
# else
 
987
#  if defined(FSCALE) && !defined(__osf__)
 
988
#   undef FSCALE
 
989
loadscale=FSCALE
 
990
#  else
 
991
#   ifdef sgi
 
992
loadtype=int
 
993
loadscale=1024
 
994
#   else
 
995
#    if defined(MIPS) || defined(SVR4) || defined(m88k)
 
996
loadscale=256
 
997
#    else /* not MIPS */
 
998
loadscale=1000  /* our default value */
 
999
#    endif /* MIPS */
 
1000
#   endif /* sgi */
 
1001
#  endif /* not FSCALE */
 
1002
# endif /* not apollo */
 
1003
#else
 
1004
loadtype=double
 
1005
loadscale=1
 
1006
#endif
 
1007
#ifdef alliant
 
1008
loadnum=4
 
1009
#else
 
1010
loadnum=3
 
1011
#endif
 
1012
])
 
1013
 
 
1014
if test -n "$load" ; then AC_DEFINE(LOADAV) fi
 
1015
if test -n "$loadtype" ; then AC_DEFINE_UNQUOTED(LOADAV_TYPE,$loadtype) fi
 
1016
if test -n "$loadnum" ; then AC_DEFINE_UNQUOTED(LOADAV_NUM,$loadnum) fi
 
1017
if test -n "$loadscale" ; then AC_DEFINE_UNQUOTED(LOADAV_SCALE,$loadscale) fi
 
1018
 
 
1019
dnl
 
1020
dnl    ****  signal handling  ****
 
1021
dnl
 
1022
if test -n "$posix" ; then
 
1023
 
 
1024
dnl POSIX has reliable signals with void return type.
 
1025
AC_NOTE(assuming posix signal definition)
 
1026
AC_DEFINE(SIGVOID)
 
1027
 
 
1028
else
 
1029
 
 
1030
AC_CHECKING(return type of signal handlers)
 
1031
AC_TRY_COMPILE(
 
1032
[#include <sys/types.h>
 
1033
#include <signal.h>
 
1034
#ifdef signal
 
1035
#undef signal
 
1036
#endif
 
1037
extern void (*signal ()) ();], [int i;], AC_DEFINE(SIGVOID))
 
1038
AC_CHECKING(sigset)
 
1039
AC_TRY_LINK([
 
1040
#include <sys/types.h>
 
1041
#include <signal.h>
 
1042
],[
 
1043
#ifdef SIGVOID
 
1044
sigset(0, (void (*)())0);
 
1045
#else
 
1046
sigset(0, (int (*)())0);
 
1047
#endif
 
1048
], AC_DEFINE(USESIGSET))
 
1049
AC_CHECKING(signal implementation)
 
1050
AC_TRY_RUN([
 
1051
#include <sys/types.h>
 
1052
#include <signal.h>
 
1053
 
 
1054
#ifndef SIGCLD
 
1055
#define SIGCLD SIGCHLD
 
1056
#endif
 
1057
#ifdef USESIGSET
 
1058
#define signal sigset
 
1059
#endif
 
1060
 
 
1061
int got;
 
1062
 
 
1063
#ifdef SIGVOID
 
1064
void
 
1065
#endif
 
1066
hand()
 
1067
{
 
1068
  got++;
 
1069
}
 
1070
 
 
1071
main()
 
1072
{
 
1073
  /* on hpux we use sigvec to get bsd signals */
 
1074
#ifdef __hpux
 
1075
  (void)signal(SIGCLD, hand);
 
1076
  kill(getpid(), SIGCLD);
 
1077
  kill(getpid(), SIGCLD);
 
1078
  if (got < 2)
 
1079
    exit(1);
 
1080
#endif
 
1081
  exit(0);
 
1082
}
 
1083
],,AC_DEFINE(SYSVSIGS))
 
1084
 
 
1085
fi
 
1086
 
 
1087
dnl
 
1088
dnl    ****  libraries  ****
 
1089
dnl
 
1090
 
 
1091
AC_CHECKING(for crypt and sec libraries)
 
1092
test -f /lib/libcrypt_d.a || test -f /usr/lib/libcrypt_d.a && LIBS="$LIBS -lcrypt_d"
 
1093
oldlibs="$LIBS"
 
1094
LIBS="$LIBS -lcrypt"
 
1095
AC_CHECKING(crypt)
 
1096
AC_TRY_LINK(,,,LIBS="$oldlibs")
 
1097
test -f /lib/libsec.a || test -f /usr/lib/libsec.a && LIBS="$LIBS -lsec"
 
1098
test -f /lib/libshadow.a || test -f /usr/lib/libshadow.a && LIBS="$LIBS -lshadow"
 
1099
oldlibs="$LIBS"
 
1100
LIBS="$LIBS -lsun"
 
1101
AC_CHECKING(IRIX sun library)
 
1102
AC_TRY_LINK(,,,LIBS="$oldlibs")
 
1103
 
 
1104
AC_CHECKING(syslog)
 
1105
AC_TRY_LINK(,[closelog();], , [oldlibs="$LIBS"
 
1106
LIBS="$LIBS -lbsd"
 
1107
AC_CHECKING(syslog in libbsd.a)
 
1108
AC_TRY_LINK(, [closelog();], AC_NOTE(- found.), [LIBS="$oldlibs"
 
1109
AC_NOTE(- bad news: syslog missing.) AC_DEFINE(NOSYSLOG)])])
 
1110
 
 
1111
AC_EGREP_CPP(yes,
 
1112
[#ifdef M_UNIX
 
1113
   yes;
 
1114
#endif
 
1115
], LIBS="$LIBS -lsocket -lcrypt_i")
 
1116
 
 
1117
dnl
 
1118
dnl    ****  misc things  ****
 
1119
dnl
 
1120
AC_CHECKING(wait union)
 
1121
AC_TRY_COMPILE([#include <sys/types.h>
 
1122
#include <sys/wait.h>
 
1123
],[
 
1124
  union wait x;
 
1125
  int y;
 
1126
#ifdef WEXITSTATUS
 
1127
  y = WEXITSTATUS(x);
 
1128
#endif
 
1129
],AC_DEFINE(BSDWAIT))
 
1130
 
 
1131
if test -z "$butterfly"; then
 
1132
AC_CHECKING(for termio or termios)
 
1133
AC_TRY_CPP([#include <termio.h>], AC_DEFINE(TERMIO),
 
1134
if test -n "$posix"; then
 
1135
AC_TRY_CPP([#include <termios.h>], AC_DEFINE(TERMIO))
 
1136
fi
 
1137
)
 
1138
fi
 
1139
 
 
1140
dnl AC_CHECK_HEADER(shadow.h, AC_DEFINE(SHADOWPW))
 
1141
AC_CHECKING(getspnam)
 
1142
AC_TRY_LINK([#include <shadow.h>], [getspnam("x");],AC_DEFINE(SHADOWPW))
 
1143
 
 
1144
AC_CHECKING(getttyent)
 
1145
AC_TRY_LINK(,[getttyent();], AC_DEFINE(GETTTYENT))
 
1146
 
 
1147
AC_CHECKING(fdwalk)
 
1148
AC_TRY_LINK([#include <stdlib.h>], [fdwalk(NULL, NULL);],AC_DEFINE(HAVE_FDWALK))
 
1149
 
 
1150
AC_CHECKING(whether memcpy/memmove/bcopy handles overlapping arguments)
 
1151
AC_TRY_RUN([
 
1152
main() {
 
1153
  char buf[10];
 
1154
  strcpy(buf, "abcdefghi");
 
1155
  bcopy(buf, buf + 2, 3);
 
1156
  if (strncmp(buf, "ababcf", 6))
 
1157
    exit(1);
 
1158
  strcpy(buf, "abcdefghi");
 
1159
  bcopy(buf + 2, buf, 3);
 
1160
  if (strncmp(buf, "cdedef", 6))
 
1161
    exit(1);
 
1162
  exit(0); /* libc version works properly.  */
 
1163
}], AC_DEFINE(USEBCOPY))
 
1164
 
 
1165
AC_TRY_RUN([
 
1166
#define bcopy(s,d,l) memmove(d,s,l)
 
1167
main() {
 
1168
  char buf[10];
 
1169
  strcpy(buf, "abcdefghi");
 
1170
  bcopy(buf, buf + 2, 3);
 
1171
  if (strncmp(buf, "ababcf", 6))
 
1172
    exit(1);
 
1173
  strcpy(buf, "abcdefghi");
 
1174
  bcopy(buf + 2, buf, 3);
 
1175
  if (strncmp(buf, "cdedef", 6))
 
1176
    exit(1);
 
1177
  exit(0); /* libc version works properly.  */
 
1178
}], AC_DEFINE(USEMEMMOVE))
 
1179
 
 
1180
 
 
1181
AC_TRY_RUN([
 
1182
#define bcopy(s,d,l) memcpy(d,s,l)
 
1183
main() {
 
1184
  char buf[10];
 
1185
  strcpy(buf, "abcdefghi");
 
1186
  bcopy(buf, buf + 2, 3);
 
1187
  if (strncmp(buf, "ababcf", 6))
 
1188
    exit(1);
 
1189
  strcpy(buf, "abcdefghi");
 
1190
  bcopy(buf + 2, buf, 3);
 
1191
  if (strncmp(buf, "cdedef", 6))
 
1192
    exit(1);
 
1193
  exit(0); /* libc version works properly.  */
 
1194
}], AC_DEFINE(USEMEMCPY))
 
1195
 
 
1196
AC_MSG_CHECKING(long file names)
 
1197
(echo 1 > /tmp/conftest9012345) 2>/dev/null
 
1198
(echo 2 > /tmp/conftest9012346) 2>/dev/null
 
1199
val=`cat /tmp/conftest9012345 2>/dev/null`
 
1200
if test -f /tmp/conftest9012345 && test "$val" = 1; then
 
1201
AC_MSG_RESULT(yes)
 
1202
else
 
1203
AC_MSG_RESULT(no)
 
1204
AC_DEFINE(NAME_MAX, 14)
 
1205
fi
 
1206
rm -f /tmp/conftest*
 
1207
 
 
1208
AC_MSG_CHECKING(for vsprintf)
 
1209
AC_TRY_LINK(,[vsprintf(0,0,0);], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), AC_MSG_RESULT(no))
 
1210
 
 
1211
AC_HEADER_DIRENT
 
1212
 
 
1213
AC_MSG_CHECKING(for setenv)
 
1214
AC_TRY_LINK(,[setenv((char *)0,(char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes);AC_DEFINE(USESETENV),
 
1215
AC_MSG_RESULT(no)
 
1216
AC_MSG_CHECKING(for putenv)
 
1217
AC_TRY_LINK(,[putenv((char *)0);unsetenv((char *)0);], AC_MSG_RESULT(yes) ,  AC_MSG_RESULT(no);AC_DEFINE(NEEDPUTENV)
 
1218
))
 
1219
AC_MSG_CHECKING([for nl_langinfo(CODESET)])
 
1220
AC_TRY_LINK([
 
1221
#include <langinfo.h>
 
1222
],[nl_langinfo(CODESET);], AC_MSG_RESULT(yes);AC_DEFINE(HAVE_NL_LANGINFO), AC_MSG_RESULT(no))
 
1223
 
 
1224
AC_SEARCH_LIBS(gethostname, nsl)
 
1225
 
 
1226
AC_CHECK_FUNCS(rename fchmod fchown strerror lstat _exit utimes vsnprintf getcwd setlocale strftime)
 
1227
 
 
1228
AC_ARG_ENABLE(pam, [  --enable-pam            enable PAM support])
 
1229
if test "$enable_pam" = "yes"; then
 
1230
    AC_MSG_CHECKING(for PAM support)
 
1231
    oldlibs="$LIBS"
 
1232
    LIBS="$LIBS -lpam"
 
1233
    AC_TRY_LINK([#include <security/pam_appl.h>], [
 
1234
        pam_start(0, 0, 0, 0);
 
1235
        pam_authenticate(0, 0);
 
1236
        pam_end(0,0);
 
1237
    ], AC_MSG_RESULT(yes);AC_DEFINE(USE_PAM),
 
1238
       AC_MSG_RESULT(no);LIBS="$oldlibs")
 
1239
fi
 
1240
 
 
1241
AC_ARG_ENABLE(use_locale, [  --enable-locale         use localized month/day names])
 
1242
if test "$enable_use_locale" = "yes"; then
 
1243
  AC_DEFINE(USE_LOCALE)
 
1244
fi
 
1245
AC_ARG_ENABLE(telnet, [  --enable-telnet         enable builtin telnet])
 
1246
if test "$enable_telnet" = "yes"; then
 
1247
  AC_DEFINE(BUILTIN_TELNET)
 
1248
fi
 
1249
AC_ARG_ENABLE(colors256, [  --enable-colors256      enable support for 256 colors])
 
1250
if test "$enable_colors256" = "yes"; then
 
1251
  AC_DEFINE(COLORS256)
 
1252
fi
 
1253
AC_ARG_ENABLE(rxvt_osc, [  --enable-rxvt_osc       enable support for rxvt OSC codes])
 
1254
if test "$enable_rxvt_osc" = "yes"; then
 
1255
  AC_DEFINE(RXVT_OSC)
 
1256
fi
 
1257
 
 
1258
dnl
 
1259
dnl    ****  the end  ****
 
1260
dnl
 
1261
if test -z "$old_CFLAGS"; then
 
1262
  if test "x$CFLAGS" = "x-g"; then
 
1263
    CFLAGS="-O"
 
1264
  fi
 
1265
fi
 
1266
dnl Ptx bug workaround -- insert -lc after -ltermcap
 
1267
test -n "$seqptx" && LIBS="-ltermcap -lc -lsocket -linet -lnsl -lsec -lseq"
 
1268
 
 
1269
AC_TRY_RUN(main(){exit(0);},,AC_MSG_ERROR(Can't run the compiler - internal error. Sorry.))
 
1270
 
 
1271
ETCSCREENRC="\"/usr/local/etc/screenrc\""
 
1272
if test -n "$prefix"; then
 
1273
ETCSCREENRC="\"$prefix/etc/screenrc\""
 
1274
fi
 
1275
AC_MSG_CHECKING(for the global screenrc file)
 
1276
AC_ARG_WITH(sys-screenrc, [  --with-sys-screenrc=path  where to put the global screenrc file], [ ETCSCREENRC="\"${withval}\"" ])
 
1277
AC_DEFINE_UNQUOTED(ETCSCREENRC,$ETCSCREENRC)
 
1278
AC_MSG_RESULT($ETCSCREENRC)
 
1279
 
 
1280
SCREENENCODINGS="\"/usr/local/lib/screen/utf8encodings\""
 
1281
if test -n "$datadir"; then
 
1282
eval SCREENENCODINGS="$datadir/screen/utf8encodings"
 
1283
SCREENENCODINGS="\"$SCREENENCODINGS\""
 
1284
fi
 
1285
AC_MSG_CHECKING(for the utf8-encodings location)
 
1286
AC_DEFINE_UNQUOTED(SCREENENCODINGS,$SCREENENCODINGS)
 
1287
AC_MSG_RESULT($SCREENENCODINGS)
 
1288
 
 
1289
AC_OUTPUT(Makefile doc/Makefile, [[
 
1290
# a hook for preserving undef directive in config.h
 
1291
mv config.h conftest
 
1292
sed -e 's@^\(.*\)defin.\( .*\) .*/\*\(.*KEEP_UNDEF_HERE\)@\1undef\2     /\*\3@' < conftest > config.h
 
1293
rm -f conftest
 
1294
]])
 
1295
 
 
1296
echo ""
 
1297
if test -z "$AWK"; then
 
1298
echo "!!! Since you have no awk you must copy the files 'comm.h.dist'"
 
1299
echo "!!! and 'term.h.dist' to 'comm.h' and 'term.h'."
 
1300
echo "!!! Do _not_ change the user configuration section in config.h!"
 
1301
echo "Please check the pathnames in the Makefile."
 
1302
else
 
1303
echo "Now please check the pathnames in the Makefile and in the user"
 
1304
echo "configuration section in config.h."
 
1305
fi
 
1306
echo "Then type 'make' to make screen. Good luck."
 
1307
echo ""