Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Feb 2008 19:35:45 +0100
From:      Ed Schouten <ed@fxq.nl>
To:        FreeBSD-gnats-submit@FreeBSD.org, freebsd-ports-bugs@FreeBSD.org
Subject:   Re: ports/120049: [Patch] cad/magic: don't use sgtty
Message-ID:  <20080204183545.GP1179@hoeg.nl>
In-Reply-To: <200801271620.m0RGK0qS017052@freefall.freebsd.org>
References:  <20080127161840.14CA31CC44@palm.hoeg.nl> <200801271620.m0RGK0qS017052@freefall.freebsd.org>

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

--v+Mbu5iuT/5Blw/K
Content-Type: multipart/mixed; boundary="0UhZIN3Sa23/ILEd"
Content-Disposition: inline


--0UhZIN3Sa23/ILEd
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

It turned out the make scripts of magic lied to me a little; for some
reason, not all errors are caught during compilation, which made me
thing I ported magic to termios, which I didn't.

Please use the attached patch. This *really* ports magic to termios.

--=20
 Ed Schouten <ed@fxq.nl>
 WWW: http://g-rave.nl/

--0UhZIN3Sa23/ILEd
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="freebsd-magic.diff"
Content-Transfer-Encoding: quoted-printable

--- cad/magic/files/patch-misc::magsgtty.h	1970-01-01 01:00:00.000000000 +0=
100
+++ cad/magic/files/patch-misc::magsgtty.h	2008-02-04 19:29:11.000000000 +0=
100
@@ -0,0 +1,13 @@
+--- misc/magsgtty.h	2001-09-21 17:15:45.000000000 +0200
++++ misc/magsgtty.h	2008-02-04 19:28:46.000000000 +0100
+@@ -20,7 +20,9 @@
+=20
+ #ifndef	_MAGSGTTY
+=20
+-#if !defined(SYSV) && !defined(CYGWIN)
++#ifdef __FreeBSD__
++#include <termios.h>
++#elif !defined(SYSV) && !defined(CYGWIN)
+ # ifdef	ALPHA
+ # undef MAX
+ # undef MIN
--- cad/magic/files/patch-textio::textioInt.h	2003-12-09 17:20:31.000000000=
 +0100
+++ cad/magic/files/patch-textio::textioInt.h	2008-02-04 19:32:48.000000000=
 +0100
@@ -1,11 +1,16 @@
 --- textio/textioInt.h.orig	Tue Dec  9 16:41:17 2003
 +++ textio/textioInt.h	Tue Dec  9 16:41:29 2003
-@@ -53,7 +53,7 @@
+@@ -48,7 +48,7 @@
+ #define TX_LONG_CMD2	';'	/* Alternate way of invoking a long command. */
+=20
+ /* all of the state associated with a tty terminal */
+-#if !defined(SYSV) && !defined(CYGWIN)
++#if !defined(__FreeBSD__) && !defined(SYSV) && !defined(CYGWIN)
+ typedef struct {
      struct sgttyb tx_i_sgtty;
      struct tchars tx_i_tchars;
- } txTermState;
--#endif SYSV
-+#endif
+@@ -56,4 +56,4 @@
+ #endif SYSV
 =20
  extern int TxGetInputEvent();
 -extern void txFprintfBasic();
--- cad/magic/files/patch-textio::txInput.c	1970-01-01 01:00:00.000000000 +=
0100
+++ cad/magic/files/patch-textio::txInput.c	2008-02-04 19:27:16.000000000 +=
0100
@@ -0,0 +1,96 @@
+--- textio/txInput.c	2001-09-21 17:15:56.000000000 +0200
++++ textio/txInput.c	2008-02-04 19:26:44.000000000 +0100
+@@ -1027,7 +1027,16 @@
+  * ----------------------------------------------------------------------=
------
+  */
+=20
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++void
++txGetTermState(buf)
++    struct termios *buf;
++
++{
++    tcgetattr( fileno( stdin ), buf);
++}
++
++#elif defined(SYSV) || defined(CYGWIN)
+ void
+ txGetTermState(buf)
+     struct termio *buf;
+@@ -1066,13 +1075,17 @@
+=20
+ void
+ txSetTermState(buf)
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++    struct termios *buf;
++#elif defined(SYSV) || defined(CYGWIN)
+     struct termio *buf;
+ #else
+     txTermState *buf;
+ #endif SYSV
+ {
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++    tcsetattr( fileno(stdin), TCSAFLUSH, buf );
++#elif defined(SYSV) || defined(CYGWIN)
+     ioctl( fileno(stdin), TCSETAF, buf );
+ #else
+     /* set the current terminal characteristics */
+@@ -1100,13 +1113,15 @@
+=20
+ void
+ txInitTermRec(buf)
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++    struct termios *buf;
++#elif defined(SYSV) || defined(CYGWIN)
+     struct termio *buf;
+ #else
+     txTermState *buf;
+ #endif SYSV
+ {
+-#if defined(SYSV) || defined(CYGWIN)
++#if defined(__FreeBSD__) || defined(SYSV) || defined(CYGWIN)
+     buf->c_lflag =3D ISIG;    /* raw: no echo and no processing, allow si=
gnals */
+     buf->c_cc[ VMIN ] =3D 1;
+     buf->c_cc[ VTIME ] =3D 0;
+@@ -1124,7 +1139,9 @@
+=20
+ =0C
+=20
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++struct termios closeTermState;
++#elif defined(SYSV) || defined(CYGWIN)
+ struct termio closeTermState;
+ #else
+ static txTermState closeTermState;
+@@ -1151,7 +1168,14 @@
+ void
+ txSaveTerm()
+ {
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++    tcgetattr( fileno( stdin ), &closeTermState);
++    txEraseChar =3D closeTermState.c_cc[VERASE];
++    txKillChar =3D  closeTermState.c_cc[VKILL];
++    TxEOFChar =3D closeTermState.c_cc[VEOF];
++    TxInterruptChar =3D closeTermState.c_cc[VINTR];
++    haveCloseState =3D TRUE;
++#elif defined(SYSV) || defined(CYGWIN)
+     ioctl( fileno( stdin ), TCGETA, &closeTermState);
+     txEraseChar =3D closeTermState.c_cc[VERASE];
+     txKillChar =3D  closeTermState.c_cc[VKILL];
+@@ -1192,7 +1216,9 @@
+ void
+ TxSetTerminal()
+ {
+-#if defined(SYSV) || defined(CYGWIN)
++#ifdef __FreeBSD__
++    struct termios buf;
++#elif defined(SYSV) || defined(CYGWIN)
+     struct termio buf;
+ #else
+     txTermState buf;

--0UhZIN3Sa23/ILEd--

--v+Mbu5iuT/5Blw/K
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (FreeBSD)

iEYEARECAAYFAkenWwEACgkQ52SDGA2eCwW4NwCfWCatewniUnMp18a4FrClV0f7
/9wAn1XL8vajS8Z+0ZSWSC4FCEYlASJJ
=vTri
-----END PGP SIGNATURE-----

--v+Mbu5iuT/5Blw/K--



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