Bugtraq mailing list archives

IRIX 5.3 port of telnetd.95.10.23.NE


From: dmose () NETSCAPE COM (Dan Mosedale)
Date: Wed, 1 Nov 1995 19:36:46 -0800


I threw together a quick and dirty port of the telnet from cray.com to
IRIX 5.3.  It's certainly a bit dirty, and not well-tested (I haven't
even tried to use the client, though it does build), but telnetd itself
does seem to work.

Some of the source changes were just to keep the SGI compiler from
excessive bitching and weren't really necessary.  Also, even though this
stuff is all #ifdef'ed, I haven't actually tried to compile it on anything
other than an SGI.

Use at your own risk; I'm posting this on my own behalf, not that of
Netscape, etc.  All standard disclaimers apply.  With that out of the way,
here's the patch...


diff -c -r telnet.95.10.23.NE/Config.generic irix-telnet.95.10.23.NE/Config.generic
*** telnet.95.10.23.NE/Config.generic   Mon Oct 23 07:47:21 1995
--- irix-telnet.95.10.23.NE/Config.generic      Wed Nov  1 19:17:03 1995
***************
*** 242,248 ****
        @echo " solaris2.2 solaris2.2.auth"
        @echo " dynix3.0.12 dynix3.0.17"
        @echo " ultrix3.1 ultrix4.0 ultrix4.1 ultrix4.3 ultrix4.3.auth"
!       @echo " irix4.0.1"
        @echo " hpux8.0"
        @echo " next1.0"
        @echo " convex"
--- 242,248 ----
        @echo " solaris2.2 solaris2.2.auth"
        @echo " dynix3.0.12 dynix3.0.17"
        @echo " ultrix3.1 ultrix4.0 ultrix4.1 ultrix4.3 ultrix4.3.auth"
!       @echo " irix4.0.1 irix5.3"
        @echo " hpux8.0"
        @echo " next1.0"
        @echo " convex"
***************
*** 856,861 ****
--- 856,880 ----
                AR=ar ARFLAGS=cq RANLIB=NONE \
                LIBEXEC=${DESTDIR}/etc \
                CC="${CC}" LCCFLAGS="-O"
+
+ irix5.3:
+       @echo $@ is not well-tested... it may or may not work..."
+       make -f Makefile.generic ${WHAT} \
+               LIBS="-ltermlib ../libtelnet/libtelnet.a" \
+               LIBPATH="/lib/libc.so.1 /usr/lib/libtermlib.a \
+                               ../libtelnet/libtelnet.a" \
+               DEST=${DESTDIR}/usr/bin \
+               DEFINES=${ODEFS}"-Dvfork=fork -DUSE_TERMIO -DUTMPX \
+                -DDEFAULT_IM='\"\r\n\r\nIRIX System V.4 (%h)\r\n\r\r\n\r\"' \
+                       -DNO_LOGIN_F -DNO_LOGIN_P \
+                       -DDIAGNOSTICS " \
+               INCLUDES="-I.." \
+               LIB_OBJ="getent.o setenv.o" \
+               LIB_SRC="getent.c setenv.c" \
+               AR=ar ARFLAGS=cq RANLIB=NONE \
+               LIBEXEC=${DESTDIR}/usr/etc \
+               CC="${CC}" LCCFLAGS="-O"
+

  hpux8.0:
        @echo $@ is untested... it may or may not work..."
diff -c -r telnet.95.10.23.NE/libtelnet/setenv.c irix-telnet.95.10.23.NE/libtelnet/setenv.c
*** telnet.95.10.23.NE/libtelnet/setenv.c       Mon Oct 23 07:47:31 1995
--- irix-telnet.95.10.23.NE/libtelnet/setenv.c  Wed Nov  1 13:44:58 1995
***************
*** 52,58 ****
  #ifndef       __P
  #define __P(x)        ()
  #endif
! char *__findenv __P((const char *, int *));
  #ifndef       NULL
  #define       NULL 0
  #endif
--- 52,58 ----
  #ifndef       __P
  #define __P(x)        ()
  #endif
! static char *__findenv __P((register const char *, int *));
  #ifndef       NULL
  #define       NULL 0
  #endif
diff -c -r telnet.95.10.23.NE/telnet/commands.c irix-telnet.95.10.23.NE/telnet/commands.c
*** telnet.95.10.23.NE/telnet/commands.c        Mon Oct 23 07:47:35 1995
--- irix-telnet.95.10.23.NE/telnet/commands.c   Wed Nov  1 13:56:51 1995
***************
*** 821,827 ****
--- 821,831 ----
   */

  #ifdef        USE_TERMIO
+ # ifdef __sgi
+ struct termios new_tc = { 0 };
+ # else
  struct termio new_tc = { 0 };
+ # endif
  #endif

  struct setlist {
diff -c -r telnet.95.10.23.NE/telnet/externs.h irix-telnet.95.10.23.NE/telnet/externs.h
*** telnet.95.10.23.NE/telnet/externs.h Mon Oct 23 07:47:35 1995
--- irix-telnet.95.10.23.NE/telnet/externs.h    Wed Nov  1 13:58:47 1995
***************
*** 346,352 ****
--- 346,356 ----

  # else

+ #  ifdef __sgi
+ extern struct termios new_tc;
+ #  else
  extern struct termio new_tc;
+ #  endif

  # define termEofChar          new_tc.c_cc[VEOF]
  # define termEraseChar                new_tc.c_cc[VERASE]
diff -c -r telnet.95.10.23.NE/telnet/sys_bsd.c irix-telnet.95.10.23.NE/telnet/sys_bsd.c
*** telnet.95.10.23.NE/telnet/sys_bsd.c Mon Oct 23 07:47:37 1995
--- irix-telnet.95.10.23.NE/telnet/sys_bsd.c    Wed Nov  1 13:59:32 1995
***************
*** 82,89 ****
--- 82,95 ----
  # define old_tc ottyb

  #else /* USE_TERMIO */
+ # ifdef __sgi
+ /* keep sgi compiler from whining */
+ struct        termios old_tc = { 0 };
+ extern struct termios new_tc;
+ # else
  struct        termio old_tc = { 0 };
  extern struct termio new_tc;
+ # endif

  # ifndef      TCSANOW
  #  ifdef TCSETS
***************
*** 394,400 ****
--- 400,410 ----
      struct sgttyb sb;
      int lmode;
  #else /* USE_TERMIO */
+ # ifdef __sgi
+     struct termios tmp_tc;
+ # else
      struct termio tmp_tc;
+ # endif
  #endif        /* USE_TERMIO */
      int onoff;
      int old;
diff -c -r telnet.95.10.23.NE/telnetd/ext.h irix-telnet.95.10.23.NE/telnetd/ext.h
*** telnet.95.10.23.NE/telnetd/ext.h    Mon Oct 23 07:47:40 1995
--- irix-telnet.95.10.23.NE/telnetd/ext.h       Wed Nov  1 14:03:31 1995
***************
*** 66,72 ****

  extern slcfun slctab[NSLC + 1];       /* slc mapping table */

! char  *terminaltype;

  /*
   * I/O data buffers, pointers, and counters.
--- 66,72 ----

  extern slcfun slctab[NSLC + 1];       /* slc mapping table */

! extern char   *terminaltype;

  /*
   * I/O data buffers, pointers, and counters.
diff -c -r telnet.95.10.23.NE/telnetd/sys_term.c irix-telnet.95.10.23.NE/telnetd/sys_term.c
*** telnet.95.10.23.NE/telnetd/sys_term.c       Mon Oct 23 07:47:42 1995
--- irix-telnet.95.10.23.NE/telnetd/sys_term.c  Wed Nov  1 18:05:24 1995
***************
*** 51,56 ****
--- 51,59 ----
  int   utmp_len = MAXHOSTNAMELEN;      /* sizeof(init_request.host) */
  #else /* NEWINIT*/
  # ifdef       UTMPX
+ #  ifdef __sgi
+ #   include <sac.h>
+ #  endif
  # include <utmpx.h>
  struct        utmpx wtmp;
  # else
***************
*** 97,103 ****
--- 100,108 ----
  #include <sys/resource.h>
  #include <sys/proc.h>
  #endif
+ #ifndef __sgi
  #include <sys/tty.h>
+ #endif
  #ifdef        t_erase
  #undef        t_erase
  #undef        t_kill
***************
*** 459,474 ****
   *
   * Returns the file descriptor of the opened pty.
   */
! #ifndef       __GNUC__
  char *line = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
! #else
  static char Xline[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
  char *line = Xline;
! #endif
! #ifdef        CRAY
  char *myline = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
! #endif        /* CRAY */
!
        int
  getpty(ptynum)
  int *ptynum;
--- 464,480 ----
   *
   * Returns the file descriptor of the opened pty.
   */
! # ifndef __sgi
! #  ifndef     __GNUC__
  char *line = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
! #  else
  static char Xline[] = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
  char *line = Xline;
! #  endif
! #  ifdef      CRAY
  char *myline = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
! #  endif      /* CRAY */
! # endif               /* __sgi */
        int
  getpty(ptynum)
  int *ptynum;
***************
*** 1345,1351 ****
         * setsid() call above may have set our pgrp, so clear
         * it out before opening the tty...
         */
! #  ifndef SOLARIS
        (void) setpgrp(0, 0);
  #  else
        (void) setpgrp();
--- 1351,1357 ----
         * setsid() call above may have set our pgrp, so clear
         * it out before opening the tty...
         */
! #  if !defined(SOLARIS) && !defined(__sgi)
        (void) setpgrp(0, 0);
  #  else
        (void) setpgrp();
diff -c -r telnet.95.10.23.NE/telnetd/telnetd.c irix-telnet.95.10.23.NE/telnetd/telnetd.c
*** telnet.95.10.23.NE/telnetd/telnetd.c        Mon Oct 23 07:47:42 1995
--- irix-telnet.95.10.23.NE/telnetd/telnetd.c   Wed Nov  1 17:59:49 1995
***************
*** 771,779 ****
--- 771,791 ----
         * Find an available pty to use.
         */
  #ifndef       convex
+ # ifndef __sgi
        pty = getpty(&ptynum);
        if (pty < 0)
                fatal(net, "All network ports in use");
+ # else
+
+       /* IRIX 5.3 does most of this work for us.  */
+       /* Dan Mosedale <dmose () netscape com> */
+
+       extern char *line, *_getpty(int *, int, mode_t, int);
+
+       if ((line = _getpty(&pty,O_RDWR,0600,1)) == 0)
+               fatal(net, strerror(errno));
+
+ # endif
  #else
        for (;;) {
                char *lp;



Current thread: