summaryrefslogtreecommitdiff
path: root/korean
diff options
context:
space:
mode:
authorCHOI Junho <cjh@FreeBSD.org>2000-07-16 09:01:54 +0000
committerCHOI Junho <cjh@FreeBSD.org>2000-07-16 09:01:54 +0000
commitf38f930b0b84bbe2f323658631f3f49f81f6fae0 (patch)
tree69412f4ce0933263a4754013bcec2a1486e9ce19 /korean
parentMake it compileable with libtabe-0.1.5. (diff)
- Update han to work in 4.x. Use patches from kon2-16dot.
(it still has a bug: cursor doesn't displayed) - distfile location moved.
Notes
Notes: svn path=/head/; revision=30683
Diffstat (limited to 'korean')
-rw-r--r--korean/han/Makefile7
-rw-r--r--korean/han/files/patch-aa71
-rw-r--r--korean/han/files/patch-ab44
-rw-r--r--korean/han/files/patch-af21
-rw-r--r--korean/han/files/patch-ag103
-rw-r--r--korean/han/files/patch-ah23
-rw-r--r--korean/han/files/patch-ak25
-rw-r--r--korean/han/files/patch-al159
-rw-r--r--korean/han/files/patch-am15
-rw-r--r--korean/han/files/patch-ba35
-rw-r--r--korean/han/files/patch-bb19
-rw-r--r--korean/han/files/patch-bc12
-rw-r--r--korean/han/files/patch-bd37
-rw-r--r--korean/han/files/patch-be12
-rw-r--r--korean/han/pkg-descr12
15 files changed, 586 insertions, 9 deletions
diff --git a/korean/han/Makefile b/korean/han/Makefile
index 59ec471425e0..7d04d6fc764b 100644
--- a/korean/han/Makefile
+++ b/korean/han/Makefile
@@ -1,6 +1,6 @@
# New ports collection makefile for: han
# Date created: 12 Apr 1997
-# Whom: Choi Jun Ho <junker@jazz.snu.ac.kr>
+# Whom: CHOI Junho <cjh@FreeBSD.org>
#
# $FreeBSD$
#
@@ -8,11 +8,12 @@
PORTNAME= han
PORTVERSION= 1.0fb
CATEGORIES= korean
-MASTER_SITES= ftp://jazz.snu.ac.kr/pub/unix/FreeBSD-kr/source/han/
+MASTER_SITES= ftp://ftp.kr.freebsd.org/pub/FreeBSD-kr/distfiles/ \
+ ftp://jazz.snu.ac.kr/pub/unix/FreeBSD-kr/source/han/
ONLY_FOR_ARCHS= i386
-USE_GMAKE= yes
+USE_GMAKE= YES
post-configure:
${SED} -e 's%%WRKSRC%%${WRKSRC}' \
diff --git a/korean/han/files/patch-aa b/korean/han/files/patch-aa
new file mode 100644
index 000000000000..e559212d276e
--- /dev/null
+++ b/korean/han/files/patch-aa
@@ -0,0 +1,71 @@
+--- src/vc.c.orig Sat Mar 29 04:35:50 1997
++++ src/vc.c Sun Jul 16 12:44:05 2000
+@@ -310,12 +310,23 @@
+ {
+ struct vt_mode vtm;
+
++#if defined(__FreeBSD__)
++ signal(SIGUSR1, SIG_IGN);
++ signal(SIGUSR2, SIG_IGN);
++#else /* linux */
+ signal(SIGUSR1, SIG_DFL);
+ signal(SIGUSR2, SIG_DFL);
++#endif
+ vtm.mode = VT_AUTO;
+ vtm.waitv = 0;
++#if defined(__FreeBSD__)
++ vtm.relsig = SIGUSR1;
++ vtm.acqsig = SIGUSR2;
++ vtm.frsig = SIGUSR1;
++#else /* linux */
+ vtm.relsig = 0;
+ vtm.acqsig = 0;
++#endif
+ ioctl(0, VT_SETMODE, &vtm);
+ #if defined(__FreeBSD__)
+ ioctl(0, VT_RELDISP, 1);
+@@ -341,6 +352,9 @@
+ vtm.waitv = 0;
+ vtm.relsig = SIGUSR1;
+ vtm.acqsig = SIGUSR2;
++#if defined(__FreeBSD__)
++ vtm.frsig = SIGUSR1;
++#endif
+ ioctl(0, VT_SETMODE, &vtm);
+ vInfo.graph_mode();
+ if (useHardScroll)
+@@ -859,20 +873,31 @@
+
+ static int ConfigBeep(const char *confstr)
+ {
+- beepCount = atoi(confstr) * 10000;
+ #if defined(linux)
+- ioperm(COUNTER_ADDR, 1, TRUE);
++ beepCount = atoi(confstr) * 10000;
++ if (beepCount > 0)
++ ioperm(COUNTER_ADDR, 1, TRUE);
++#endif
++#if defined(__FreeBSD__)
++ beepCount = atoi(confstr) * 10;
+ #endif
+ return SUCCESS;
+ }
+
++#define BELL_PITCH 800
++
+ void Beep(void)
+ {
+- if (!con.active) return;
+ #ifdef linux
++ if (!con.active) return;
+ PortOutb(PortInb(COUNTER_ADDR)|3, COUNTER_ADDR);
+ usleep(beepCount);
+ PortOutb(PortInb(COUNTER_ADDR)&0xFC, COUNTER_ADDR);
++#endif
++#if defined(__FreeBSD__)
++ if(beepCount <= 0) return;
++ ioctl(fileno(stdout), KDMKTONE, (BELL_PITCH & 0xffff) |
++ ((beepCount & 0xffff) << 16));
+ #endif
+ }
+
diff --git a/korean/han/files/patch-ab b/korean/han/files/patch-ab
new file mode 100644
index 000000000000..e5e72bfb0180
--- /dev/null
+++ b/korean/han/files/patch-ab
@@ -0,0 +1,44 @@
+--- src/child.c.orig Sat Mar 29 05:29:53 1997
++++ src/child.c Sun Jul 16 12:48:02 2000
+@@ -26,6 +26,7 @@
+
+ #ifdef __FreeBSD__
+ #include <errno.h>
++#include <sys/ioctl.h>
+ #endif
+
+ #include <getcap.h>
+@@ -98,6 +99,9 @@
+ {
+ char *shell, *tail, *tcap;
+ char buff[80];
++#if defined(__FreeBSD__)
++ struct winsize win;
++#endif
+
+ setgid(getgid());
+ setuid(getuid());
+@@ -107,6 +111,10 @@
+ sprintf(buff, "TERMCAP=:co#%d:li#%d:tc=console:",
+ dInfo.txmax + 1, dInfo.tymax + 1);
+ #elif defined(__FreeBSD__)
++ win.ws_row = dInfo.tymax + 1;
++ win.ws_col = dInfo.txmax + 1;
++ win.ws_xpixel = win.ws_ypixel = 0;
++ ioctl(STDIN_FILENO, TIOCSWINSZ, &win);
+ sprintf(buff,"TERM=vt100");
+ #endif
+ tcap = strdup(buff);
+@@ -120,10 +128,10 @@
+ "HAN is free software, and you are welcome to redistribute it\r\n"
+ "HAN under certain conditions; show COPYING for details.\r\n");
+ #if defined(__FreeBSD__)
+- printf("\rHAN for FreeBSD-2.x\r\n");
++ printf("\rHAN for FreeBSD\r\n");
+ #endif
+ }
+- printf("HAN using VT number %c.\n\n",
++ printf("HAN using VT number %c.\r\n",
+ #if defined(linux)
+ *(ttyname(fileno(errfp))+8));
+ #elif defined(__FreeBSD__)
diff --git a/korean/han/files/patch-af b/korean/han/files/patch-af
new file mode 100644
index 000000000000..1b9fb6473f9f
--- /dev/null
+++ b/korean/han/files/patch-af
@@ -0,0 +1,21 @@
+--- src/term.c.orig Sat Mar 29 04:36:54 1997
++++ src/term.c Sun Jul 16 12:50:34 2000
+@@ -209,6 +209,9 @@
+ }
+ if (FD_ISSET(0, &readFds)) {
+ i = read(0, buff, BUFSIZ);
++#if defined(__FreeBSD__)
++ i = cons25tovt100(buff, i, BUFSIZ);
++#endif
+ #if 1
+ {
+ int k, l;
+@@ -239,7 +242,7 @@
+ PollCursor(TRUE);
+ }
+ if (FD_ISSET(sockFd, &readFds)) SocketInterface(sockFd);
+- if (mInfo.has_mouse) {
++ if (mInfo.has_mouse && mouseFd > 0) {
+ if (FD_ISSET(mouseFd, &readFds) && con.active) {
+ i = read(mouseFd, buff, BUFSIZ);
+ if (i > 0) MouseGetPacket(buff, i);
diff --git a/korean/han/files/patch-ag b/korean/han/files/patch-ag
new file mode 100644
index 000000000000..66ac5d73c41c
--- /dev/null
+++ b/korean/han/files/patch-ag
@@ -0,0 +1,103 @@
+--- src/utmp.c.orig Fri Jan 24 09:37:28 1997
++++ src/utmp.c Sat Apr 26 21:50:30 1997
+@@ -41,20 +41,32 @@
+ #include <utmp.h>
+ #include <grp.h>
+ #include <sys/stat.h>
++#if defined(__FreeBSD__)
++#include <ttyent.h>
++#endif
+
++#if !defined(__FreeBSD__)
+ static int ttyGid;
++#else
++static gid_t ttyGid;
++static int ts;
++#endif
+
+ void SetUtmp(char *tty)
+ {
+-#ifdef linux
+ struct utmp utmp;
+ struct passwd *pw;
+ struct group *ttygrp;
+ char *tn;
++#if defined(__FreeBSD__)
++ struct ttyent *ttyp;
++ int fd, i;
++#endif
+
+ pw = getpwuid(getuid());
+ tn = rindex(tty, '/') + 1;
+ memset((char *)&utmp, 0, sizeof(utmp));
++#if !defined(__FreeBSD__)
+ strncpy(utmp.ut_id, tn + 3, sizeof(utmp.ut_id));
+ utmp.ut_type = DEAD_PROCESS;
+ setutent();
+@@ -66,21 +78,43 @@
+ time(&(utmp.ut_time));
+ pututline(&utmp);
+ endutent();
++#else
++ time(&(utmp.ut_time));
++ strncpy(utmp.ut_name, pw->pw_name, sizeof(utmp.ut_name));
++ strncpy(utmp.ut_line, tn, sizeof(utmp.ut_line));
++ setttyent();
++ ts = 0;
++ for (i = 1; (ttyp = getttyent()); ++i)
++ if (!strcmp(ttyp->ty_name,tn)) {
++ ts = i;
++ break;
++ }
++ endttyent();
++ if (ts > 0 && (fd = open(_PATH_UTMP, O_WRONLY|O_CREAT, 0644)) >= 0) {
++ lseek(fd, (ts*sizeof(struct utmp)), L_SET);
++ write(fd, &utmp, sizeof(struct utmp));
++ close(fd);
++ }
++#endif
+ if ((ttygrp = getgrnam("tty")) != NULL)
+ ttyGid = ttygrp->gr_gid;
+ else
+ ttyGid = -1;
+ chmod(tty, 0622);
+ chown(tty, getuid(), ttyGid);
+-#endif
+ }
+
+ void ResetUtmp(char *tty)
+ {
+-#ifdef linux
++#if !defined(__FreeBSD__)
+ struct utmp utmp, *utp;
+ char *tn;
++#else
++ struct utmp utmp;
++ int fd;
++#endif
+
++#if !defined(__FreeBSD__)
+ tn = rindex(tty, '/') + 4;
+ memset((char *)&utmp, 0, sizeof(utmp));
+ strncpy(utmp.ut_id, tn, sizeof(utmp.ut_id));
+@@ -93,7 +127,19 @@
+ time(&(utp->ut_time));
+ pututline(utp);
+ endutent();
++#else
++ if (ts > 0 && (fd = open(_PATH_UTMP, O_RDWR, 0)) >= 0) {
++ lseek(fd, (ts*sizeof(struct utmp)), L_SET);
++ if (read(fd, &utmp, sizeof(struct utmp)) == sizeof(struct utmp)) {
++ bzero(utmp.ut_name, sizeof(utmp.ut_name));
++ bzero(utmp.ut_host, sizeof(utmp.ut_host));
++ time(&utmp.ut_time);
++ lseek(fd, (ts*sizeof(struct utmp)), L_SET);
++ write(fd, &utmp, sizeof(struct utmp));
++ }
++ close(fd);
++ }
++#endif
+ chmod(tty, 0600);
+ chown(tty, 0, ttyGid);
+-#endif
+ }
diff --git a/korean/han/files/patch-ah b/korean/han/files/patch-ah
new file mode 100644
index 000000000000..0db1f75c0c95
--- /dev/null
+++ b/korean/han/files/patch-ah
@@ -0,0 +1,23 @@
+--- src/display/vga.c.orig Wed Apr 9 21:34:02 1997
++++ src/display/vga.c Sun Jul 16 12:52:41 2000
+@@ -379,7 +379,7 @@
+ /* if (!code) return;*/
+ VgaSetColor(fc);
+ if (bc & 0x8) *(vcls - dInfo.glineByte) = 0;
+- for (x = 0;x < sbFReg->high;x ++, code ++, fm >>= 1) {
++ if (code) for (x = 0;x < sbFReg->high;x ++, code ++, fm >>= 1) {
+ if (*code) {
+ VgaOutByte(*code);
+ *gram = *gram;
+@@ -617,7 +617,11 @@
+ Perror("ioctl CONSOLE_IO_ENABLE/KDSETMODE");
+ return FAILURE;
+ }
++#if (__FreeBSD__ <= 3)
+ if ((devMem = open("/dev/vga", O_RDWR|O_NDELAY) ) < 0) {
++#else
++ if ((devMem = open("/dev/mem", O_RDWR|O_NDELAY) ) < 0) {
++#endif
+ Perror("/dev/mem");
+ return FAILURE;
+ }
diff --git a/korean/han/files/patch-ak b/korean/han/files/patch-ak
new file mode 100644
index 000000000000..bd724bb48035
--- /dev/null
+++ b/korean/han/files/patch-ak
@@ -0,0 +1,25 @@
+--- include/vt.h.orig Fri Jan 24 16:08:13 1997
++++ include/vt.h Sat Aug 7 05:06:49 1999
+@@ -59,7 +59,12 @@
+ ins,
+ active,
+ wrap,
++#if defined(__FreeBSD__)
++ text_mode,
++ cursor_key_mode;
++#else
+ text_mode;
++#endif
+ };
+
+ extern struct _con_info con;
+@@ -75,6 +80,9 @@
+ extern void VtStart(void);
+ extern void VtEmu(const char*, int nchars);
+ extern void VtCleanup(void);
++#if defined(__FreeBSD__)
++extern int cons25tovt100(u_char *buff, int len, const int max);
++#endif
+
+ #define sjistojis(ch, cl)\
+ {\
diff --git a/korean/han/files/patch-al b/korean/han/files/patch-al
new file mode 100644
index 000000000000..5555214c56d5
--- /dev/null
+++ b/korean/han/files/patch-al
@@ -0,0 +1,159 @@
+--- src/vt.c.orig Sat Jan 25 17:55:02 1997
++++ src/vt.c Sat Aug 7 05:09:15 1999
+@@ -185,6 +185,11 @@
+ static void VtSetMode(u_char mode, bool sw)
+ {
+ switch(mode) {
++#if defined(__FreeBSD__)
++ case 1:
++ con.cursor_key_mode = sw;
++ break;
++#endif
+ case 4:
+ con.ins = sw;
+ break;
+@@ -654,4 +659,144 @@
+ con.sb = lInfo.sb;
+ con.db = lInfo.db|LATCH_1;
+ con.active = cInfo.sw = TRUE;
++#if defined(__FreeBSD__)
++ con.cursor_key_mode = FALSE;
++#endif
+ }
++
++#if defined(__FreeBSD__)
++
++static int ReplaceString(char *sp, const int len, const int maxlen,
++ const int oldlen, const char *newstr)
++{
++ int newlen, copylen, diff;
++
++ newlen = strlen(newstr);
++ diff = newlen - oldlen;
++ copylen = len - oldlen;
++
++ if(len + diff > maxlen){
++ diff -= (len + diff - maxlen);
++ copylen = maxlen - newlen;
++ }
++ if(copylen > 0)
++ memcpy(sp + newlen, sp + oldlen, copylen);
++
++ copylen = newlen;
++ if(newlen > maxlen){
++ copylen = maxlen;
++ diff = maxlen - len;
++ }
++ if(copylen > 0)
++ memcpy(sp, newstr, copylen);
++
++ return(diff);
++}
++
++int cons25tovt100(u_char *buff, int len, const int max)
++{
++ u_char *p;
++ int i;
++ int newlen = len;
++
++ p = buff;
++
++ for(i=0; i<newlen; i++, p++){
++ switch(*p){
++ case '\177':
++ newlen += ReplaceString(p, len-i, max-i, 1, "\x1b[3~");
++ i += 3; p += 3;
++ break;
++ case '\033': /* ESC */
++ if(i + 2 <= newlen && *(p+1) == '['){
++ switch(*(p+2)){
++ case 'A': /* up arrow */
++ if(con.cursor_key_mode)
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1bOA");
++ break;
++ case 'B': /* down arrow */
++ if(con.cursor_key_mode)
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1bOB");
++ break;
++ case 'C': /* right arrow */
++ if(con.cursor_key_mode)
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1bOC");
++ break;
++ case 'D': /* left arrow */
++ if(con.cursor_key_mode)
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1bOD");
++ break;
++ case 'L': /* insert */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[2~");
++ i++; p++;
++ break;
++ case 'H': /* home key */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[4~");
++ i++; p++;
++ break;
++ case 'I': /* prev page */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[5~");
++ i++; p++;
++ break;
++ case 'G': /* next page */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[6~");
++ i++; p++;
++ break;
++ case 'M': /* F1 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[11~");
++ i += 2; p += 2;
++ break;
++ case 'N': /* F2 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[12~");
++ i += 2; p += 2;
++ break;
++ case 'O': /* F3 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[13~");
++ i += 2; p += 2;
++ break;
++ case 'P': /* F4 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[14~");
++ i += 2; p += 2;
++ break;
++ case 'Q': /* F5 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[15~");
++ i += 2; p += 2;
++ break;
++ case 'R': /* F6 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[17~");
++ i += 2; p += 2;
++ break;
++ case 'S': /* F7 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[18~");
++ i += 2; p += 2;
++ break;
++ case 'T': /* F8 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[19~");
++ i += 2; p += 2;
++ break;
++ case 'U': /* F9 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[20~");
++ i += 2; p += 2;
++ break;
++ case 'V': /* F10 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[21~");
++ i += 2; p += 2;
++ break;
++ case 'W': /* F11 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[23~");
++ i += 2; p += 2;
++ break;
++ case 'X': /* F12 */
++ newlen += ReplaceString(p, len-i, max-i, 3, "\x1b[24~");
++ i += 2; p += 2;
++ break;
++ }
++ i += 2; p += 2;
++ }
++ }
++ }
++
++ return(newlen);
++}
++
++#endif
diff --git a/korean/han/files/patch-am b/korean/han/files/patch-am
new file mode 100644
index 000000000000..89c19f5d9b1c
--- /dev/null
+++ b/korean/han/files/patch-am
@@ -0,0 +1,15 @@
+--- include/vga.h.orig Fri Jan 24 16:08:01 1997
++++ include/vga.h Mon Jan 31 14:13:08 2000
+@@ -59,7 +59,11 @@
+ #if defined(linux)
+ #define GRAPH_BASE 0xA0000
+ #elif defined(__FreeBSD__)
+-#define GRAPH_BASE 0x0
++# if (__FreeBSD__ <= 3)
++# define GRAPH_BASE 0x0
++# else
++# define GRAPH_BASE 0xA0000
++# endif
+ #endif
+ #define FONT_SIZE 0x2000
+
diff --git a/korean/han/files/patch-ba b/korean/han/files/patch-ba
new file mode 100644
index 000000000000..f47facb6fe2f
--- /dev/null
+++ b/korean/han/files/patch-ba
@@ -0,0 +1,35 @@
+diff -ur include/mem.h.old include/mem.h
+--- include/mem.h.old Tue Jan 25 20:16:57 2000
++++ include/mem.h Tue Jan 25 20:30:48 2000
+@@ -46,6 +46,7 @@
+ "d" ((u_short) port));
+ }
+
++#if 0
+ static inline
+ void lzero(void *head, int n)
+ {
+@@ -93,11 +94,23 @@
+ "D" ((long)head)
+ :"cx","di");
+ }
++#endif
+
+ extern u_char PortInb(u_short);
++#if 1
++#define bzero(b, len) bzero(b, len)
++#define bzero2(b, len) bzero(b, len)
++#define lzero(b, len) bzero(b, len)
++#define wzero(b, len) bzero(b, len)
++#define bmove(dst, src, len) bcopy(src, dst, len)
++#define brmove(dst, src, len) bcopy(src, dst, len)
++#define wmove(dst, src, len) bcopy(src, dst, len)
++#define lmove(dst, src, len) bcopy(src, dst, len)
++#else
+ extern void wzero(void *, int);
+ extern void wmove(void *, void *, int);
+ extern void lmove(void *, void *, int);
++#endif
+ extern void SafeFree(void **);
+
+ #endif
diff --git a/korean/han/files/patch-bb b/korean/han/files/patch-bb
new file mode 100644
index 000000000000..fc703b8536b0
--- /dev/null
+++ b/korean/han/files/patch-bb
@@ -0,0 +1,19 @@
+diff -ur lib/mem.c.old lib/mem.c
+--- lib/mem.c.old Tue Jan 25 20:16:57 2000
++++ lib/mem.c Tue Jan 25 20:28:18 2000
+@@ -44,6 +44,7 @@
+ return(_rval);
+ }
+
++#if 0
+ void wzero(void *head, int n)
+ {
+ __asm__ ("cld\n\t"
+@@ -76,6 +77,7 @@
+ "S" ((long)src)
+ :"cx","di","si");
+ }
++#endif
+
+ void SafeFree(void **p)
+ {
diff --git a/korean/han/files/patch-bc b/korean/han/files/patch-bc
new file mode 100644
index 000000000000..7cba6bf48f5f
--- /dev/null
+++ b/korean/han/files/patch-bc
@@ -0,0 +1,12 @@
+diff -ur src/main.c.old src/main.c
+--- src/main.c.old Tue Jan 25 20:16:57 2000
++++ src/main.c Tue Jan 25 20:32:52 2000
+@@ -34,7 +34,7 @@
+ #include <version.h>
+ #include <term.h>
+
+-void main(int argc, const char *argv[])
++int main(int argc, const char *argv[])
+ {
+ char *p;
+
diff --git a/korean/han/files/patch-bd b/korean/han/files/patch-bd
new file mode 100644
index 000000000000..fe963c1be494
--- /dev/null
+++ b/korean/han/files/patch-bd
@@ -0,0 +1,37 @@
+--- src/vc.c.orig Fri Jun 9 04:14:43 2000
++++ src/vc.c Fri Jun 9 04:27:53 2000
+@@ -95,28 +95,26 @@
+ inline void blatch(void *head, int n)
+ {
+
+- __asm__("\t clc\n"
++ __asm__ volatile("\t clc\n"
+ "1:\n"
+ "\t andb %%bl, (%%eax)\n"
+ "\t incl %%eax\n"
+ "\t loop 1b\n"
+- :
+- : "eax" ((long)head), "bl" (0x7F), "c" (n)
+- : "bl", "cx" );
++ : "=bl" (head), "=c" (n)
++ : "eax" ((long)head), "0" (0x7F), "1" (n));
+ }
+
+ static
+ inline void llatch(void *head, int n)
+ {
+
+- __asm__("\t clc\n"
++ __asm__ volatile("\t clc\n"
+ "1:\n"
+ "\t andl %%ebx, (%%eax)\n"
+ "\t addl $4, %%eax\n"
+ "\t loop 1b\n"
+- :
+- : "eax" ((long)head), "ebx" (0x7F7F7F7F), "c" (n>>2)
+- : "ebx", "cx" );
++ : "=ebx" (head), "=c" (n)
++ : "eax" ((long)head), "0" (0x7F7F7F7F), "1" (n>>2));
+ }
+
+ static inline u_int TextAddress(u_int x, u_int y)
diff --git a/korean/han/files/patch-be b/korean/han/files/patch-be
new file mode 100644
index 000000000000..e85ef0e9a9a0
--- /dev/null
+++ b/korean/han/files/patch-be
@@ -0,0 +1,12 @@
+--- src/mouse.c.orig Mon Jan 27 20:40:27 1997
++++ src/mouse.c Tue May 9 18:08:44 2000
+@@ -176,7 +176,8 @@
+
+ mouseType = MOUSE_NONE;
+ mInfo.has_mouse = FALSE;
+- sscanf(config, "%s", name);
++ strncpy(name, config, MAX_COLS - 1);
++ name[MAX_COLS - 1] = '\0';
+ for (p = mice; p->name != NULL; p++) {
+ if (strcasecmp(name, p->name) == 0) {
+ mouseType = p->type;
diff --git a/korean/han/pkg-descr b/korean/han/pkg-descr
index 47ad41dd1501..337d472ce0b3 100644
--- a/korean/han/pkg-descr
+++ b/korean/han/pkg-descr
@@ -1,17 +1,17 @@
-Han-1.0fb
----------
+HAN
+---
HAN is a hangul console. This is an alpha version. Supported video card is
VGA only, and, supported font are Minix/V and BDF. This program requires
-shared memory.
+shared memory. HAN is derived from KON, a Kanji COnsole for Linux/FreeBSD.
This version supports ko_KR.euc.
Orignal kon written by manabe@papilio.tutics.tut.ac.jp.
FreeBSD port of kon is done by ogura@st.rim.or.jp.
-Han written by nsroh@juno.kaist.ac.kr, hanmaum@baram.kaist.ac.kr.
-FreeBSD port of han is done by yujeny@pandora.snu.ac.kr.
+HAN written by nsroh@juno.kaist.ac.kr, hanmaum@baram.kaist.ac.kr.
+FreeBSD port of HAN is done by yujeny@pandora.snu.ac.kr & cjh@FreeBSD.org.
--
-Port by Choi Jun Ho <junker@jazz.snu.ac.kr>
+CHOI Junho <cjh@FreeBSD.org>