diff -urN ../tcl8.4.1/generic/tclPosixStr.c tcl8.4.1/generic/tclPosixStr.c --- ../tcl8.4.1/generic/tclPosixStr.c Wed May 29 02:14:21 2002 +++ tcl8.4.1/generic/tclPosixStr.c Sun Dec 22 16:02:41 2002 @@ -945,7 +945,9 @@ case SIGALRM: return "SIGALRM"; #endif #ifdef SIGBUS +# if !defined(SIGSEGV) || (SIGBUS != SIGSEGV) case SIGBUS: return "SIGBUS"; +# endif #endif #ifdef SIGCHLD case SIGCHLD: return "SIGCHLD"; @@ -1077,7 +1079,9 @@ case SIGALRM: return "alarm clock"; #endif #ifdef SIGBUS +# if !defined(SIGSEGV) || (SIGBUS != SIGSEGV) case SIGBUS: return "bus error"; +# endif #endif #ifdef SIGCHLD case SIGCHLD: return "child status changed"; diff -urN ../tcl8.4.1/unix/tcl.m4 tcl8.4.1/unix/tcl.m4 --- ../tcl8.4.1/unix/tcl.m4 Tue Oct 22 21:18:39 2002 +++ tcl8.4.1/unix/tcl.m4 Sun Dec 22 16:44:51 2002 @@ -914,6 +914,15 @@ fi fi ;; + BeOS*) + SHLIB_CFLAGS="-fPIC" + SHLIB_LD="cc -nostart" + SHLIB_LD_LIBS='${LIBS}' + SHLIB_SUFFIX=".so" + DL_OBJS="tclLoadDl.o" + DL_LIBS="-ldl" + LDFLAGS="-lsocket -lbind" + ;; BSD/OS-2.1*|BSD/OS-3*) SHLIB_CFLAGS="" SHLIB_LD="shlicc -r" @@ -2314,6 +2323,13 @@ AC_CHECK_FUNC(gethostbyname, , [AC_CHECK_LIB(nsl, gethostbyname, [LIBS="$LIBS -lnsl"])]) + #-------------------------------------------------------------------- + # Check for inet_ntoa in -lbind, for BeOS (which also needs -lsocket, + # even if the network functions are in -lnet which is always linked + # to, for compatibility. + #-------------------------------------------------------------------- + AC_CHECK_LIB(bind, inet_ntoa, [LIBS="$LIBS -lbind -lsocket"]) + # Don't perform the eval of the libraries here because DL_LIBS # won't be set until we call SC_CONFIG_CFLAGS diff -urN ../tcl8.4.1/unix/tclUnixChan.c tcl8.4.1/unix/tclUnixChan.c --- ../tcl8.4.1/unix/tclUnixChan.c Tue Sep 3 04:01:25 2002 +++ tcl8.4.1/unix/tclUnixChan.c Sun Dec 22 16:02:41 2002 @@ -54,8 +54,15 @@ # define IOSTATE struct termios # define GETIOSTATE(fd, statePtr) tcgetattr((fd), (statePtr)) # define SETIOSTATE(fd, statePtr) tcsetattr((fd), TCSADRAIN, (statePtr)) -# define GETCONTROL(fd, intPtr) ioctl((fd), TIOCMGET, (intPtr)) -# define SETCONTROL(fd, intPtr) ioctl((fd), TIOCMSET, (intPtr)) +# ifdef TIOCMGET +# define GETCONTROL(fd, intPtr) ioctl((fd), TIOCMGET, (intPtr)) +# define SETCONTROL(fd, intPtr) ioctl((fd), TIOCMSET, (intPtr)) +# else +# if defined(TCSETDTR) && defined(TCSETRTS) +# define SETCONTROLDTR(fd, intPtr) ioctl((fd), TCSETDTR, (intPtr)) +# define SETCONTROLRTS(fd, intPtr) ioctl((fd), TCSETRTS, (intPtr)) +# endif +# endif /* TIOCMGET */ /* * TIP #35 introduced a different on exit flush/close behavior that * doesn't work correctly with standard channels on all systems. @@ -1011,7 +1018,9 @@ return TCL_ERROR; } +#ifdef GETCONTROL GETCONTROL(fsPtr->fd, &control); +#endif while (argc > 1) { if (Tcl_GetBoolean(interp, argv[1], &flag) == TCL_ERROR) { return TCL_ERROR; @@ -1024,8 +1033,13 @@ control &= ~TIOCM_DTR; } #else /* !TIOCM_DTR */ +# if defined(TCSETDTR) && defined(TCSETRTS) + control = flag; + SETCONTROLDTR(fsPtr->fd, &control); +# else UNSUPPORTED_OPTION("-ttycontrol DTR"); return TCL_ERROR; +# endif /* TCSETDTR && TCSETRTS */ #endif /* TIOCM_DTR */ } else if (strncasecmp(argv[0], "RTS", strlen(argv[0])) == 0) { #ifdef TIOCM_RTS @@ -1035,8 +1049,13 @@ control &= ~TIOCM_RTS; } #else /* !TIOCM_RTS*/ +# if defined(TCSETDTR) && defined(TCSETRTS) + control = flag; + SETCONTROLRTS(fsPtr->fd, &control); +# else UNSUPPORTED_OPTION("-ttycontrol RTS"); return TCL_ERROR; +# endif /* TCSETDTR && TCSETRTS */ #endif /* TIOCM_RTS*/ } else if (strncasecmp(argv[0], "BREAK", strlen(argv[0])) == 0) { #ifdef SETBREAK @@ -1055,8 +1074,9 @@ } argc -= 2, argv += 2; } /* while (argc > 1) */ - +#ifdef GETCONTROL SETCONTROL(fsPtr->fd, &control); +#endif return TCL_OK; } @@ -1170,10 +1190,15 @@ * but not returned by unnamed [fconfigure chan] */ if ((len > 4) && (strncmp(optionName, "-ttystatus", len) == 0)) { +#ifdef GETCONTROL int status; valid = 1; GETCONTROL(fsPtr->fd, &status); TtyModemStatusStr(status, dsPtr); +#else + UNSUPPORTED_OPTION("-ttystatus"); + valid = 0; +#endif /* GETCONTROL */ } #endif /* USE_TERMIOS */ diff -urN ../tcl8.4.1/unix/tclUnixPort.h tcl8.4.1/unix/tclUnixPort.h --- ../tcl8.4.1/unix/tclUnixPort.h Tue Jul 2 19:10:33 2002 +++ tcl8.4.1/unix/tclUnixPort.h Sun Dec 22 16:02:41 2002 @@ -406,6 +406,15 @@ #endif /* + * Make sure that P_tmpdir is defined. + * (BeOS needs this) + */ + +#ifndef P_tmpdir +# define P_tmpdir "/tmp" +#endif + +/* * The following macro defines the type of the mask arguments to * select: */