aboutsummaryrefslogtreecommitdiff
path: root/japanese
diff options
context:
space:
mode:
authorEdwin Groothuis <edwin@FreeBSD.org>2008-07-05 01:15:43 +0000
committerEdwin Groothuis <edwin@FreeBSD.org>2008-07-05 01:15:43 +0000
commit2851d3204402f3f1a369e254d64ff7c3ce13cd61 (patch)
tree46c36c6a810e50a1c809cbd46177b018400becf9 /japanese
parent1ccec1e635be191bbf4eb628a6b143ee42c6f9a3 (diff)
downloadports-2851d3204402f3f1a369e254d64ff7c3ce13cd61.tar.gz
ports-2851d3204402f3f1a369e254d64ff7c3ce13cd61.zip
[Patch] japanese/mh: port to termios
The japanese/mh port is one of the last ports that still depends on COMPAT_43TTY, because it uses the sgtty programming interface. We'd better port it to the POSIX termios interface. The source code already contains code for SysV termio, which makes it easier to port. PR: ports/124466 Submitted by: Ed Schouten <ed@FreeBSD.org> Approved by: maintainer timeout
Notes
Notes: svn path=/head/; revision=216338
Diffstat (limited to 'japanese')
-rw-r--r--japanese/mh/Makefile4
-rw-r--r--japanese/mh/files/patch-uip_msh.c17
-rw-r--r--japanese/mh/files/patch-uip_prompter.c100
-rw-r--r--japanese/mh/files/patch-uip_trmsbr.c51
4 files changed, 172 insertions, 0 deletions
diff --git a/japanese/mh/Makefile b/japanese/mh/Makefile
index 98a623ebdd42..93dbcf63d9cf 100644
--- a/japanese/mh/Makefile
+++ b/japanese/mh/Makefile
@@ -7,6 +7,7 @@
PORTNAME= mh
PORTVERSION= ${VERSION}.j${JP_VERSION}
+PORTREVISION= 1
CATEGORIES= japanese mail
MASTER_SITES= ${MASTER_SITE_LOCAL} \
ftp://komadori.planet.sci.kobe-u.ac.jp/pub/MH/ \
@@ -52,4 +53,7 @@ post-install:
(cd ${WRKSRC}/doc-JP; ${INSTALL_DATA} ${READMES} ${DOCDIR})
.endif
+pre-install:
+ ${MKDIR} ${PREFIX}/share/doc/ja-mh
+
.include <bsd.port.post.mk>
diff --git a/japanese/mh/files/patch-uip_msh.c b/japanese/mh/files/patch-uip_msh.c
new file mode 100644
index 000000000000..e7c35f422a8d
--- /dev/null
+++ b/japanese/mh/files/patch-uip_msh.c
@@ -0,0 +1,17 @@
+--- uip/msh.c
++++ uip/msh.c
+@@ -17,14 +17,7 @@
+ #include <ctype.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+-#ifndef SYS5
+-#include <sgtty.h>
+-#else /* SYS5 */
+-#include <termio.h>
+-#ifndef NOIOCTLH
+ #include <sys/ioctl.h>
+-#endif /* NOIOCTLH */
+-#endif /* SYS5 */
+ #include <pwd.h>
+ #include <setjmp.h>
+ #include <signal.h>
diff --git a/japanese/mh/files/patch-uip_prompter.c b/japanese/mh/files/patch-uip_prompter.c
new file mode 100644
index 000000000000..f013576ee353
--- /dev/null
+++ b/japanese/mh/files/patch-uip_prompter.c
@@ -0,0 +1,100 @@
+--- uip/prompter.c
++++ uip/prompter.c
+@@ -6,15 +6,7 @@
+ #include "../h/mh.h"
+ #include <stdio.h>
+ #include <errno.h>
+-#ifndef SYS5
+-#include <sgtty.h>
+-#else /* SYS5 */
+-#include <sys/types.h>
+-#include <termio.h>
+-#ifndef NOIOCTLH
+-#include <sys/ioctl.h>
+-#endif /* NOIOCTLH */
+-#endif /* SYS5 */
++#include <termios.h>
+ #if defined(BSD42) || defined(SVR4)
+ #include <setjmp.h>
+ #endif /* BSD42 || SVR4 */
+@@ -71,19 +63,10 @@
+ extern int errno;
+
+
+-#ifndef SYS5
+-#define ERASE sg.sg_erase
+-#define KILL sg.sg_kill
+-static struct sgttyb sg;
+-
+-#define INTR tc.t_intrc
+-static struct tchars tc;
+-#else /* SYS5 */
+ #define ERASE sg.c_cc[VERASE]
+ #define KILL sg.c_cc[VKILL]
+ #define INTR sg.c_cc[VINTR]
+-static struct termio sg;
+-#endif /* SYS5 */
++static struct termios sg;
+
+
+ static TYPESIG intrser ();
+@@ -209,29 +192,14 @@
+ (void) chmod (tmpfil, 0600);
+
+ if (killp || erasep) {
+-#ifndef SYS5
+- int serase,
+- skill;
+-#else /* SYS5 */
+- char serase,
+- skill;
+-#endif /* SYS5 */
+-
+-#ifndef SYS5
+- (void) ioctl (0, TIOCGETP, (char *) &sg);
+- (void) ioctl (0, TIOCGETC, (char *) &tc);
+-#else /* SYS5 */
+- (void) ioctl(0, TCGETA, &sg);
+-#endif /* SYS5 */
++ cc_t serase, skill;
++
++ (void) tcgetattr(0, &sg);
+ skill = KILL;
+ serase = ERASE;
+ KILL = killp ? chrcnv (killp) : skill;
+ ERASE = erasep ? chrcnv (erasep) : serase;
+-#ifndef SYS5
+- (void) ioctl (0, TIOCSETN, (char *) &sg);
+-#else /* SYS5 */
+- (void) ioctl(0, TCSETAW, &sg);
+-#endif /* SYS5 */
++ (void) tcsetattr(0, TCSADRAIN, &sg);
+
+ chrdsp ("erase", ERASE);
+ chrdsp (", kill", KILL);
+@@ -273,11 +241,7 @@
+ if (i == -1) {
+ abort: ;
+ if (killp || erasep)
+-#ifndef SYS5
+- (void) ioctl (0, TIOCSETN, (char *) &sg);
+-#else /* SYS5 */
+- (void) ioctl (0, TCSETA, &sg);
+-#endif /* SYS5 */
++ (void) tcsetattr (0, TCSANOW, &sg);
+ (void) unlink (tmpfil);
+ done (1);
+ }
+@@ -365,11 +329,7 @@
+ /* */
+
+ if (killp || erasep)
+-#ifndef SYS5
+- (void) ioctl (0, TIOCSETN, (char *) &sg);
+-#else /* SYS5 */
+- (void) ioctl (0, TCSETAW, &sg);
+-#endif /* SYS5 */
++ (void) tcsetattr (0, TCSANOW, &sg);
+
+ if ((fdi = open (tmpfil, 0)) == NOTOK)
+ adios (tmpfil, "unable to re-open");
diff --git a/japanese/mh/files/patch-uip_trmsbr.c b/japanese/mh/files/patch-uip_trmsbr.c
new file mode 100644
index 000000000000..b0fd2fc7e3b7
--- /dev/null
+++ b/japanese/mh/files/patch-uip_trmsbr.c
@@ -0,0 +1,51 @@
+--- uip/trmsbr.c
++++ uip/trmsbr.c
+@@ -5,19 +5,8 @@
+
+ #include "../h/mh.h"
+ #include <stdio.h>
+-#ifndef SYS5
+-#include <sgtty.h>
+-#if defined(ULTRIX) && !defined(BSD43)
+-#undef TIOCGWINSZ
+-#endif
+-#else /* SYS5 */
+-#include <sys/types.h>
+-#include <termio.h>
+-#ifndef NOIOCTLH
+ #include <sys/ioctl.h>
+-#endif /* NOIOCTLH */
+-#undef TIOCGWINSZ
+-#endif /* SYS5 */
++#include <termios.h>
+
+
+ #if BUFSIZ<2048
+@@ -58,11 +47,7 @@
+ *term;
+ char *cp,
+ myterm[TXTSIZ];
+-#ifndef SYS5
+- struct sgttyb sg;
+-#else /* SYS5 */
+- struct termio sg;
+-#endif /* SYS5 */
++ struct termios sg;
+ static int inited = 0;
+
+ if (inited++)
+@@ -71,13 +56,7 @@
+ if ((term = getenv ("TERM")) == NULL || tgetent (myterm, term) <= OK)
+ return;
+
+-#ifndef SYS5
+- ospeed = ioctl (fileno (stdout), TIOCGETP, (char *) &sg) != NOTOK
+- ? sg.sg_ospeed : 0;
+-#else /* SYS5 */
+- ospeed = ioctl (fileno (stdout), TCGETA, &sg) != NOTOK
+- ? sg.c_cflag & CBAUD : 0;
+-#endif /* SYS5 */
++ ospeed = tcgetattr (fileno (stdout), &sg) != NOTOK ? cfgetospeed(&sg) : 0;
+
+ HC = tgetflag ("hc");
+