aboutsummaryrefslogtreecommitdiffstats
path: root/korean/han/files/patch-al
diff options
context:
space:
mode:
authorcjh <cjh@FreeBSD.org>2000-07-16 17:01:54 +0800
committercjh <cjh@FreeBSD.org>2000-07-16 17:01:54 +0800
commite104b470ef31ac97f618734f0393954806ac0c8b (patch)
tree327dd7f16fe99dcbd7f0367ae7e300922eba14c3 /korean/han/files/patch-al
parent429b32b03113e484c13fa4742182852533d4deb2 (diff)
downloadfreebsd-ports-gnome-e104b470ef31ac97f618734f0393954806ac0c8b.tar.gz
freebsd-ports-gnome-e104b470ef31ac97f618734f0393954806ac0c8b.tar.zst
freebsd-ports-gnome-e104b470ef31ac97f618734f0393954806ac0c8b.zip
- Update han to work in 4.x. Use patches from kon2-16dot.
(it still has a bug: cursor doesn't displayed) - distfile location moved.
Diffstat (limited to 'korean/han/files/patch-al')
-rw-r--r--korean/han/files/patch-al159
1 files changed, 159 insertions, 0 deletions
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