OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Christoph Schug
  Root:   /v/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   13-Jul-2006 19:09:25
  Branch: HEAD                             Handle: 2006071318092400

  Modified files:
    openpkg-src/screen      screen.patch screen.spec

  Log:
    fix NetBSD build by adding patches from pkgsrc

  Summary:
    Revision    Changes     Path
    1.6         +515 -90    openpkg-src/screen/screen.patch
    1.48        +8  -1      openpkg-src/screen/screen.spec
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/screen/screen.patch
  ============================================================================
  $ cvs diff -u -r1.5 -r1.6 screen.patch
  --- openpkg-src/screen/screen.patch   10 Feb 2006 22:00:37 -0000      1.5
  +++ openpkg-src/screen/screen.patch   13 Jul 2006 17:09:24 -0000      1.6
  @@ -1,9 +1,10 @@
  -Security Bugfix
  -http://www.securityfocus.com/archive/1/345844/2003-11-24/2003-11-30/0
  -
  ++---------------------------------------------------------------------------
  +| Security Bugfix
  +| http://www.securityfocus.com/archive/1/345844/2003-11-24/2003-11-30/0
  ++---------------------------------------------------------------------------
   Index: ansi.c
  ---- ansi.c.orig      2003-09-08 16:24:44.000000000 +0200
  -+++ ansi.c   2003-11-27 20:08:53.000000000 +0100
  +--- ansi.c.orig      2003-12-05 14:57:05 +0100
  ++++ ansi.c   2006-07-13 17:08:06 +0200
   @@ -559,7 +559,7 @@
            {
            case '0': case '1': case '2': case '3': case '4':
  @@ -14,8 +15,8 @@
                  if (curr->w_args[curr->w_NumArgs] < 100000000)
                    curr->w_args[curr->w_NumArgs] =
   Index: resize.c
  ---- resize.c.orig    2003-09-08 16:26:31.000000000 +0200
  -+++ resize.c 2003-11-27 20:09:49.000000000 +0100
  +--- resize.c.orig    2003-09-08 16:26:31 +0200
  ++++ resize.c 2006-07-13 17:08:06 +0200
   @@ -682,6 +682,17 @@
      if (wi == 0)
        he = hi = 0;
  @@ -34,38 +35,98 @@
      if (p->w_width == wi && p->w_height == he && p->w_histheight == hi)
        {
          debug("ChangeWindowSize: No change.\n");
  -Index: configure.in
  ---- configure.in.orig        2003-06-03 13:58:24.000000000 +0200
  -+++ configure.in     2004-05-27 12:43:38.909016000 +0200
  -@@ -206,7 +206,7 @@
  - 
  - AC_CHECKING(for Solaris 2.x)
  - AC_EGREP_CPP(yes,
  --[#if defined(SVR4) && defined(sun)
  -+[#if defined(__SVR4) && defined(__sun)
  +
  ++---------------------------------------------------------------------------
  +| In Solaris 10, the setenv() function has been added.
  ++---------------------------------------------------------------------------
  +Index: misc.c
  +--- misc.c.orig      2003-12-05 14:45:41 +0100
  ++++ misc.c   2006-07-13 18:00:46 +0200
  +@@ -613,7 +613,7 @@
  +    */
  + # endif /* NEEDSETENV */
  + #else /* USESETENV */
  +-# if defined(linux) || defined(__convex__) || (BSD >= 199103)
  ++# if defined(linux) || defined(__convex__) || (BSD >= 199103) || 
defined(__sun)
  +   setenv(var, value, 1);
  + # else
  +   setenv(var, value);
  +
  ++---------------------------------------------------------------------------
  +| Mainly NetBSD specific patches taken from pkgsrc, partly relevant to
  +| FreeBSD and Solaris as well
  ++---------------------------------------------------------------------------
  +Index: config.h.in
  +--- config.h.in.orig 2003-12-05 14:59:39 +0100
  ++++ config.h.in      2006-07-13 17:42:35 +0200
  +@@ -431,6 +431,11 @@
  + #undef HAVE_DIRENT_H
  + 
  + /*
  ++ * Define HAVE_SYS_STROPTS_H if your system has <sys/stropts.h>
  ++ */
  ++#undef HAVE_SYS_STROPTS_H
  ++
  ++/*
  +  * If your system has getutent(), pututline(), etc. to write to the
  +  * utmp file, define GETUTENT.
  +  */
  +@@ -514,6 +519,15 @@
  +  */
  + #undef USEVARARGS
  + 
  ++#ifdef __NetBSD__
  ++/*
  ++ * XXX gcc 3.3 on some NetBSD platforms fails the configure test for this
  ++ * so force it on anyway.
  ++ */
  ++#undef USEVARARGS
  ++#define USEVARARGS 1
  ++#endif
  ++
  + /*
  +  * If your system has strerror() define this.
  +  */
  +Index: configure
  +--- configure.orig   2003-12-05 14:46:53 +0100
  ++++ configure        2006-07-13 17:54:05 +0200
  +@@ -3911,7 +3911,7 @@
  + cat confdefs.h >>conftest.$ac_ext
  + cat >>conftest.$ac_ext <<_ACEOF
  + /* end confdefs.h.  */
  +-#if defined(SVR4) && defined(sun)
  ++#if defined(__SVR4) && defined(__sun)
      yes
    #endif
  - ], LIBS="$LIBS -lsocket -lnsl -lkstat")
  -@@ -270,7 +270,7 @@
  - dnl     multiuser screen sessions
  - AC_CHECKING(seteuid)
  - AC_TRY_LINK(,[
  + 
  +@@ -4042,7 +4042,7 @@
  + main ()
  + {
  + 
   -#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) 
|| defined(ultrix) || (defined(sun) && defined(SVR4)) || defined(ISC) || 
defined(sony_news)
   +#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) 
|| defined(ultrix) || (defined(__sun) && defined(__SVR4)) || defined(ISC) || 
defined(sony_news)
    seteuid_is_broken(0);
    #else
    seteuid(0);
  -@@ -815,7 +815,7 @@
  - AC_TRY_LINK([
  +@@ -5572,9 +5572,15 @@
  + 
    #include <time.h> /* to get time_t on SCO */
    #include <sys/types.h>
   -#if defined(SVR4) && !defined(DGUX)
  -+#if defined(__SVR4) && !defined(DGUX)
  ++#include <sys/param.h>
  ++#if defined(__SVR4) && !defined(DGUX) \
  ++ || (defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000))
    #include <utmpx.h>
    #define utmp utmpx
  ++# ifdef __NetBSD__
  ++#  define pututline pututxline
  ++#  define getutent  getutxent
  ++# endif
    #else
  -@@ -832,7 +832,7 @@
  - AC_TRY_LINK([
  + #include <utmp.h>
  + #endif
  +@@ -5624,7 +5630,7 @@
  + 
    #include <time.h>
    #include <sys/types.h>
   -#if defined(SVR4) && !defined(DGUX)
  @@ -73,8 +134,8 @@
    #include <utmpx.h>
    #define utmp utmpx
    #else
  -@@ -848,7 +848,7 @@
  - AC_TRY_COMPILE([
  +@@ -5680,7 +5686,7 @@
  + 
    #include <time.h>
    #include <sys/types.h>
   -#if defined(SVR4) && !defined(DGUX)
  @@ -82,16 +143,16 @@
    #include <utmpx.h>
    #define utmp utmpx
    #else
  -@@ -979,7 +979,7 @@
  - #include <sys/types.h>
  - #include <sys/param.h>
  - ],[
  +@@ -6316,7 +6322,7 @@
  + 
  + _CUT_HERE_
  + 
   -#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))
   +#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))
    loadtype=long
    # if defined(apollo) || defined(_IBMR2) || defined(_AUX_SOURCE) || 
defined(AUX)
    loadscale=65536
  -@@ -992,7 +992,7 @@
  +@@ -6329,7 +6335,7 @@
    loadtype=int
    loadscale=1024
    #   else
  @@ -100,38 +161,194 @@
    loadscale=256
    #    else /* not MIPS */
    loadscale=1000      /* our default value */
  -Index: configure
  ---- configure.orig   2003-12-05 14:46:53.000000000 +0100
  -+++ configure        2004-05-27 12:45:06.186001000 +0200
  -@@ -3911,7 +3911,7 @@
  - cat confdefs.h >>conftest.$ac_ext
  - cat >>conftest.$ac_ext <<_ACEOF
  - /* end confdefs.h.  */
  --#if defined(SVR4) && defined(sun)
  -+#if defined(__SVR4) && defined(__sun)
  -   yes
  - #endif
  +@@ -7501,6 +7507,147 @@
    
  -@@ -4042,7 +4042,7 @@
  - main ()
  - {
  + fi
    
  ++for ac_header in sys/stropts.h
  ++do
  ++as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
  ++if eval "test \"\${$as_ac_Header+set}\" = set"; then
  ++  echo "$as_me:$LINENO: checking for $ac_header" >&5
  ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
  ++if eval "test \"\${$as_ac_Header+set}\" = set"; then
  ++  echo $ECHO_N "(cached) $ECHO_C" >&6
  ++fi
  ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
  ++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
  ++else
  ++  # Is the header compilable?
  ++echo "$as_me:$LINENO: checking $ac_header usability" >&5
  ++echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
  ++cat >conftest.$ac_ext <<_ACEOF
  ++#line $LINENO "configure"
  ++/* confdefs.h.  */
  ++_ACEOF
  ++cat confdefs.h >>conftest.$ac_ext
  ++cat >>conftest.$ac_ext <<_ACEOF
  ++/* end confdefs.h.  */
  ++$ac_includes_default
  ++#include <$ac_header>
  ++_ACEOF
  ++rm -f conftest.$ac_objext
  ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
  ++  (eval $ac_compile) 2>&5
  ++  ac_status=$?
  ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
  ++  (exit $ac_status); } &&
  ++         { ac_try='test -s conftest.$ac_objext'
  ++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
  ++  (eval $ac_try) 2>&5
  ++  ac_status=$?
  ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
  ++  (exit $ac_status); }; }; then
  ++  ac_header_compiler=yes
  ++else
  ++  echo "$as_me: failed program was:" >&5
  ++sed 's/^/| /' conftest.$ac_ext >&5
  ++
  ++ac_header_compiler=no
  ++fi
  ++rm -f conftest.$ac_objext conftest.$ac_ext
  ++echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
  ++echo "${ECHO_T}$ac_header_compiler" >&6
  ++
  ++# Is the header present?
  ++echo "$as_me:$LINENO: checking $ac_header presence" >&5
  ++echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
  ++cat >conftest.$ac_ext <<_ACEOF
  ++#line $LINENO "configure"
  ++/* confdefs.h.  */
  ++_ACEOF
  ++cat confdefs.h >>conftest.$ac_ext
  ++cat >>conftest.$ac_ext <<_ACEOF
  ++/* end confdefs.h.  */
  ++#include <$ac_header>
  ++_ACEOF
  ++if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
  ++  (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
  ++  ac_status=$?
  ++  grep -v '^ *+' conftest.er1 >conftest.err
  ++  rm -f conftest.er1
  ++  cat conftest.err >&5
  ++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
  ++  (exit $ac_status); } >/dev/null; then
  ++  if test -s conftest.err; then
  ++    ac_cpp_err=$ac_c_preproc_warn_flag
  ++  else
  ++    ac_cpp_err=
  ++  fi
  ++else
  ++  ac_cpp_err=yes
  ++fi
  ++if test -z "$ac_cpp_err"; then
  ++  ac_header_preproc=yes
  ++else
  ++  echo "$as_me: failed program was:" >&5
  ++sed 's/^/| /' conftest.$ac_ext >&5
  ++
  ++  ac_header_preproc=no
  ++fi
  ++rm -f conftest.err conftest.$ac_ext
  ++echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
  ++echo "${ECHO_T}$ac_header_preproc" >&6
  ++
  ++# So?  What about this header?
  ++case $ac_header_compiler:$ac_header_preproc in
  ++  yes:no )
  ++    { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, 
rejected by the preprocessor!" >&5
  ++echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by 
the preprocessor!" >&2;}
  ++    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the 
preprocessor's result" >&5
  ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's 
result" >&2;}
  ++    (
  ++      cat <<\_ASBOX
  ++## ------------------------------------ ##
  ++## Report this to [EMAIL PROTECTED] ##
  ++## ------------------------------------ ##
  ++_ASBOX
  ++    ) |
  ++      sed "s/^/$as_me: WARNING:     /" >&2
  ++    ;;
  ++  no:yes )
  ++    { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be 
compiled" >&5
  ++echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
  ++    { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing 
prerequisite headers?" >&5
  ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" 
>&2;}
  ++    { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the 
preprocessor's result" >&5
  ++echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's 
result" >&2;}
  ++    (
  ++      cat <<\_ASBOX
  ++## ------------------------------------ ##
  ++## Report this to [EMAIL PROTECTED] ##
  ++## ------------------------------------ ##
  ++_ASBOX
  ++    ) |
  ++      sed "s/^/$as_me: WARNING:     /" >&2
  ++    ;;
  ++esac
  ++echo "$as_me:$LINENO: checking for $ac_header" >&5
  ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
  ++if eval "test \"\${$as_ac_Header+set}\" = set"; then
  ++  echo $ECHO_N "(cached) $ECHO_C" >&6
  ++else
  ++  eval "$as_ac_Header=$ac_header_preproc"
  ++fi
  ++echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
  ++echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
  ++
  ++fi
  ++if test `eval echo '${'$as_ac_Header'}'` = yes; then
  ++  cat >>confdefs.h <<_ACEOF
  ++#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
  ++_ACEOF
  ++
  ++fi
  ++
  ++done
  ++
  + 
  + echo "$as_me:$LINENO: checking for setenv" >&5
  + echo $ECHO_N "checking for setenv... $ECHO_C" >&6
  +Index: configure.in
  +--- configure.in.orig        2003-06-03 13:58:24 +0200
  ++++ configure.in     2006-07-13 17:50:35 +0200
  +@@ -206,7 +206,7 @@
  + 
  + AC_CHECKING(for Solaris 2.x)
  + AC_EGREP_CPP(yes,
  +-[#if defined(SVR4) && defined(sun)
  ++[#if defined(__SVR4) && defined(__sun)
  +   yes
  + #endif
  + ], LIBS="$LIBS -lsocket -lnsl -lkstat")
  +@@ -270,7 +270,7 @@
  + dnl     multiuser screen sessions
  + AC_CHECKING(seteuid)
  + AC_TRY_LINK(,[
   -#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) 
|| defined(ultrix) || (defined(sun) && defined(SVR4)) || defined(ISC) || 
defined(sony_news)
   +#if defined(linux) || defined(NeXT) || defined(_AUX_SOURCE) || defined(AUX) 
|| defined(ultrix) || (defined(__sun) && defined(__SVR4)) || defined(ISC) || 
defined(sony_news)
    seteuid_is_broken(0);
    #else
    seteuid(0);
  -@@ -5572,7 +5572,7 @@
  - 
  +@@ -815,9 +815,15 @@
  + AC_TRY_LINK([
    #include <time.h> /* to get time_t on SCO */
    #include <sys/types.h>
   -#if defined(SVR4) && !defined(DGUX)
  -+#if defined(__SVR4) && !defined(DGUX)
  ++#include <sys/param.h>
  ++#if defined(__SVR4) && !defined(DGUX) \
  ++ || (defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000))
    #include <utmpx.h>
    #define utmp utmpx
  ++# ifdef __NetBSD__
  ++#  define pututline pututxline
  ++#  define getutent  getutxent
  ++# endif
    #else
  -@@ -5624,7 +5624,7 @@
  - 
  + #include <utmp.h>
  + #endif
  +@@ -832,7 +838,7 @@
  + AC_TRY_LINK([
    #include <time.h>
    #include <sys/types.h>
   -#if defined(SVR4) && !defined(DGUX)
  @@ -139,8 +356,8 @@
    #include <utmpx.h>
    #define utmp utmpx
    #else
  -@@ -5680,7 +5680,7 @@
  - 
  +@@ -848,7 +854,7 @@
  + AC_TRY_COMPILE([
    #include <time.h>
    #include <sys/types.h>
   -#if defined(SVR4) && !defined(DGUX)
  @@ -148,16 +365,16 @@
    #include <utmpx.h>
    #define utmp utmpx
    #else
  -@@ -6316,7 +6316,7 @@
  - 
  - _CUT_HERE_
  - 
  +@@ -979,7 +985,7 @@
  + #include <sys/types.h>
  + #include <sys/param.h>
  + ],[
   -#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))
   +#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))
    loadtype=long
    # if defined(apollo) || defined(_IBMR2) || defined(_AUX_SOURCE) || 
defined(AUX)
    loadscale=65536
  -@@ -6329,7 +6329,7 @@
  +@@ -992,7 +998,7 @@
    loadtype=int
    loadscale=1024
    #   else
  @@ -166,21 +383,17 @@
    loadscale=256
    #    else /* not MIPS */
    loadscale=1000      /* our default value */
  -Index: misc.c
  ---- misc.c.orig      2004-05-27 13:32:29.762001000 +0200
  -+++ misc.c   2004-05-27 13:39:40.883005000 +0200
  -@@ -613,7 +613,7 @@
  -    */
  - # endif /* NEEDSETENV */
  - #else /* USESETENV */
  --# if defined(linux) || defined(__convex__) || (BSD >= 199103)
  -+# if defined(linux) || defined(__sun) || defined(__convex__) || (BSD >= 
199103)
  -   setenv(var, value, 1);
  - # else
  -   setenv(var, value);
  +@@ -1209,6 +1215,7 @@
  + AC_TRY_LINK(,[vsprintf(0,0,0);], AC_MSG_RESULT(yes);AC_DEFINE(USEVARARGS), 
AC_MSG_RESULT(no))
  + 
  + AC_HEADER_DIRENT
  ++AC_CHECK_HEADERS(sys/stropts.h)
  + 
  + AC_MSG_CHECKING(for setenv)
  + AC_TRY_LINK(,[setenv((char *)0,(char *)0);unsetenv((char *)0);], 
AC_MSG_RESULT(yes);AC_DEFINE(USESETENV),
   Index: os.h
   --- os.h.orig        2002-01-08 16:42:33 +0100
  -+++ os.h     2005-11-08 11:01:37 +0100
  ++++ os.h     2006-07-13 17:37:58 +0200
   @@ -25,6 +25,7 @@
    #include <stdio.h>
    #include <errno.h>
  @@ -198,10 +411,238 @@
    # define USE_SETEUID
    #endif
    
  +@@ -260,9 +261,15 @@
  + #endif
  + 
  + #if defined(UTMPOK) || defined(BUGGYGETLOGIN)
  +-# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)
  ++# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux) 
\
  ++  || (defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000))
  + #  include <utmpx.h>
  +-#  define UTMPFILE  UTMPX_FILE
  ++#  ifdef __NetBSD__
  ++#   define UTMPFILE _PATH_UTMPX
  ++#   define NetBSD_UTMP
  ++#  else
  ++#   define UTMPFILE UTMPX_FILE
  ++#  endif
  + #  define utmp              utmpx
  + #  define getutent  getutxent
  + #  define getutid   getutxid
  +Index: process.c
  +--- process.c.orig   2003-09-18 14:53:54 +0200
  ++++ process.c        2006-07-13 17:43:26 +0200
  +@@ -5466,7 +5466,7 @@
  +       *buf = 0;
  +       return;
  +     }
  +-  act.nr = (int)data;
  ++  act.nr = (int)(long)data;
  +   act.args = noargs;
  +   act.argl = 0;
  +   DoAction(&act, -1);
  +Index: pty.c
  +--- pty.c.orig       2003-09-08 16:26:18 +0200
  ++++ pty.c    2006-07-13 17:41:29 +0200
  +@@ -33,10 +33,12 @@
  + # include <sys/ioctl.h>
  + #endif
  + 
  ++#ifndef __FreeBSD__
  + /* for solaris 2.1, Unixware (SVR4.2) and possibly others */
  +-#ifdef HAVE_SVR4_PTYS
  ++#ifdef HAVE_SYS_STROPTS_H
  + # include <sys/stropts.h>
  + #endif
  ++#endif
  + 
  + #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL)
  + # include <sys/ttold.h>
  +@@ -332,6 +334,46 @@
  + 
  + /***************************************************************/
  + 
  ++#if defined(__NetBSD__) && !defined(PTY_DONE)
  ++#define PTY_DONE
  ++
  ++#include <sys/param.h>
  ++#include <string.h>
  ++
  ++int
  ++OpenPTY(ttyn)
  ++char **ttyn;
  ++{
  ++  int m, s, f;
  ++  char *t;
  ++
  ++  do
  ++    {
  ++      if (openpty(&m, &s, TtyName, NULL, NULL) < 0)
  ++        return -1;
  ++      close(m);
  ++      close(s);
  ++
  ++      strcpy(PtyName, TtyName);
  ++      t = strrchr(PtyName, '/');
  ++      if ((t == NULL ) || (*++t != 't'))
  ++        return -1;
  ++      *t = 'p';
  ++
  ++      f = open(PtyName, O_RDWR | O_NOCTTY);
  ++    }
  ++  while (f < 0);
  ++
  ++  initmaster(f);
  ++  *ttyn = TtyName;
  ++
  ++  return f;
  ++}
  ++#endif
  ++
  ++/***************************************************************/
  ++
  ++
  + #ifndef PTY_DONE
  + int
  + OpenPTY(ttyn)
  +Index: utmp-netbsd.c
  +--- utmp-netbsd.c.orig       1970-01-01 01:00:00 +0100
  ++++ utmp-netbsd.c    2006-07-13 17:57:44 +0200
  +@@ -0,0 +1,80 @@
  ++#include <sys/param.h>
  ++#if defined(__NetBSD_Version__) && (__NetBSD_Version__ >= 106050000)
  ++
  ++#include <sys/types.h>
  ++#include <sys/time.h>
  ++#include <sys/wait.h>
  ++
  ++#include <errno.h>
  ++#include <fcntl.h>
  ++#include <stdio.h>
  ++#include <stdlib.h>
  ++#include <string.h>
  ++#include <time.h>
  ++#include <ttyent.h>
  ++#include <unistd.h>
  ++#include <util.h>
  ++#include <utmp.h>
  ++
  ++static struct utmp saved_utmp;
  ++static int saved_utmp_ok = 0;
  ++
  ++int
  ++lineslot(line)
  ++char *line;
  ++{
  ++    int slot;
  ++    struct ttyent *ttyp;
  ++
  ++    setttyent();
  ++    for (slot = 1; (ttyp = getttyent()) != NULL; ++slot)
  ++            if (!strcmp(ttyp->ty_name, line)) {
  ++                    endttyent();
  ++                    return(slot);
  ++            }
  ++    endttyent();
  ++    return(0);
  ++}
  ++
  ++void
  ++utmp_login(line)
  ++char *line;
  ++{
  ++    int fd;
  ++    int tty;
  ++
  ++    if (!saved_utmp_ok)
  ++            return;
  ++
  ++    tty = lineslot(line);
  ++    if (tty > 0 && (fd = open(_PATH_UTMP, O_WRONLY|O_CREAT, 0644)) >= 0) {
  ++            (void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
  ++            (void)write(fd, &saved_utmp, sizeof(struct utmp));
  ++            (void)close(fd);
  ++    }
  ++}
  ++
  ++void
  ++utmp_logout(const char *line)
  ++{
  ++    int fd;
  ++    struct utmp ut;
  ++
  ++    if ((fd = open(_PATH_UTMP, O_RDWR, 0)) < 0)
  ++            return;
  ++    while (read(fd, &ut, sizeof(ut)) == sizeof(ut)) {
  ++            if (!ut.ut_name[0] || strncmp(ut.ut_line, line, UT_LINESIZE))
  ++                    continue;
  ++            memcpy(&saved_utmp, &ut, sizeof(ut));
  ++            saved_utmp_ok = 1;
  ++            memset(ut.ut_name, 0, UT_NAMESIZE);
  ++            memset(ut.ut_host, 0, UT_HOSTSIZE);
  ++            (void)time(&ut.ut_time);
  ++            (void)lseek(fd, -(off_t)sizeof(ut), SEEK_CUR);
  ++            (void)write(fd, &ut, sizeof(ut));
  ++    }
  ++    (void)close(fd);
  ++}
  ++
  ++#endif
  ++
   Index: utmp.c
   --- utmp.c.orig      2003-09-08 16:27:17 +0200
  -+++ utmp.c   2006-01-11 16:53:48 +0100
  -@@ -726,9 +726,12 @@
  ++++ utmp.c   2006-07-13 17:11:46 +0200
  +@@ -42,6 +42,11 @@
  + extern char *LoginName;
  + extern int real_uid, eff_uid;
  + 
  ++#ifdef NetBSD_UTMP
  ++extern void utmp_login __P((char *));
  ++extern void utmp_logout __P((char *));
  ++#endif
  ++
  + 
  + /*
  +  *  UTNOKEEP: A (ugly) hack for apollo that does two things:
  +@@ -310,6 +315,9 @@
  + 
  +   ASSERT(display);
  +   debug("RemoveLoginSlot: removing your logintty\n");
  ++#ifdef NetBSD_UTMP
  ++  utmp_logout(stripdev(D_usertty));
  ++#endif
  +   D_loginslot = TtyNameSlot(D_usertty);
  +   if (D_loginslot == (slot_t)0 || D_loginslot == (slot_t)-1)
  +     return;
  +@@ -374,6 +382,9 @@
  + 
  +   debug("RestoreLoginSlot()\n");
  +   ASSERT(display);
  ++#ifdef NetBSD_UTMP
  ++  utmp_login(stripdev(D_usertty));
  ++#endif
  +   if (utmpok && D_loginslot != (slot_t)0 && D_loginslot != (slot_t)-1)
  +     {
  +       debug1(" logging you in again (slot %#x)\n", (int)D_loginslot);
  +@@ -604,6 +615,7 @@
  + char *line, *user;
  + int pid;
  + {
  ++  time_t temp;
  +   u->ut_type = USER_PROCESS;
  +   strncpy(u->ut_user, user, sizeof(u->ut_user));
  +   /* Now the tricky part... guess ut_id */
  +@@ -618,7 +630,8 @@
  + #endif /* sgi */
  +   strncpy(u->ut_line, line, sizeof(u->ut_line));
  +   u->ut_pid = pid;
  +-  (void)time((time_t *)&u->ut_time);
  ++  (void)time(&temp);
  ++  u->ut_time = temp;
  + }
  + 
  + static slot_t
  +@@ -726,9 +739,12 @@
    char *line, *user;
    int pid;
    {
  @@ -215,19 +656,3 @@
    }
    
    static slot_t
  -Index: pty.c
  ---- pty.c.orig       Mon Feb  6 18:54:37 2006
  -+++ pty.c    Mon Feb  6 18:56:50 2006
  -@@ -33,10 +33,12 @@
  - # include <sys/ioctl.h>
  - #endif
  - 
  -+#ifndef __FreeBSD__
  - /* for solaris 2.1, Unixware (SVR4.2) and possibly others */
  - #ifdef HAVE_SVR4_PTYS
  - # include <sys/stropts.h>
  - #endif
  -+#endif
  - 
  - #if defined(sun) && defined(LOCKPTY) && !defined(TIOCEXCL)
  - # include <sys/ttold.h>
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/screen/screen.spec
  ============================================================================
  $ cvs diff -u -r1.47 -r1.48 screen.spec
  --- openpkg-src/screen/screen.spec    10 Feb 2006 22:00:37 -0000      1.47
  +++ openpkg-src/screen/screen.spec    13 Jul 2006 17:09:24 -0000      1.48
  @@ -33,7 +33,7 @@
   Group:        Terminal
   License:      GPL
   Version:      4.0.2
  -Release:      20060210
  +Release:      20060713
   
   #   list of sources
   Source0:      
ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-%{version}.tar.gz
  @@ -67,6 +67,13 @@
   %prep
       %setup -q
       %patch -p0
  +    case "%{l_platform -t}" in
  +        *-netbsd* )
  +            %{l_shtool} subst \
  +                -e 's;^\(.* nethack.[co] encoding.\([co]\).*\)$;\1 
utmp-netbsd.\2;'\
  +                Makefile.in
  +            ;;
  +    esac
   
   %build
       #   configure package
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org

Reply via email to