Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Jun 2008 22:41:51 +0200 (CEST)
From:      Ed Schouten <ed@FreeBSD.org>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   ports/124460: [Patch] math/calctool: make it use termios
Message-ID:  <20080610204151.8EAF11CCAD@palm.hoeg.nl>
Resent-Message-ID: <200806102050.m5AKo1D8003800@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         124460
>Category:       ports
>Synopsis:       [Patch] math/calctool: make it use termios
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Jun 10 20:50:01 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Ed Schouten
>Release:        FreeBSD 6.3-STABLE i386
>Organization:
>Environment:
System: FreeBSD palm.hoeg.nl 6.3-STABLE FreeBSD 6.3-STABLE #0: Wed Jun 4 08:56:01 CEST 2008 ed@palm.hoeg.nl:/usr/obj/usr/src/sys/PALM i386
>Description:
The math/calctool port still makes use of the sgtty interface. This
means it only works when one compiles a kernel with COMPAT_43TTY
enabled. We'd better switch to termios. The following patch changes
calctool to use termios instead of sgtty.h.

>How-To-Repeat:
>Fix:
Remove files/patch-aa and save this patch as files/patch-tty.c:

--- tty.c
+++ tty.c
@@ -1,5 +1,3 @@
-/*LINTLIBRARY*/
-
 /*  @(#)tty.c 1.14 90/02/06
  *
  *  These are the dumb tty dependent graphics routines used by calctool.
@@ -21,6 +19,7 @@
 #include <sys/types.h>
 #include <sys/ioctl.h>
 #include <sys/time.h>
+#include <termios.h>
 #include "calctool.h"
 #include "color.h"
 #include "extern.h"
@@ -30,7 +29,7 @@
 char *getenv(), *tgetstr(), *tgoto() ;
 int destroy_frame(), outc() ;
 
-struct sgttyb in_new, in_old ;
+struct termios in_new, in_old ;
 
 
 SIGRET
@@ -90,7 +89,7 @@
     }
   do_move(0, 0) ;
   SIGNAL(SIGINT, SIG_IGN) ;
-  IOCTL(0, TIOCSETP, &in_old) ;
+  tcsetattr(0, TCSANOW, &in_old) ;
   exit(0) ;
 }
 
@@ -315,11 +314,14 @@
 
   SIGNAL(SIGINT, cleanup) ;
 
-  IOCTL(0, TIOCGETP, &in_old) ;        /* Setup standard input. */
+  tcgetattr(0, &in_old) ;        /* Setup standard input. */
   in_new = in_old ;
-  in_new.sg_flags |= RAW ;
-  in_new.sg_flags &= ~(ECHO | CRMOD) ;
-  IOCTL(0, TIOCSETP, &in_new) ;
+  in_new.c_iflag |= IGNBRK;
+  in_new.c_iflag &= ~ICRNL;
+  in_new.c_lflag &= ~(ECHOCTL|ISIG|ICANON|IEXTEN);
+  in_new.c_oflag &= ~ONLCR;
+  in_new.c_lflag &= ~ECHO;
+  tcsetattr(0, TCSANOW, &in_new) ;
 
   setbuf(stdout, (char *) NULL) ;
 
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080610204151.8EAF11CCAD>