Mon Jul 21 15:42:56 2014 UTC ()
Update mlterm to 3.3.7.

pkgsrc changes:
 - remove post-3.3.6 fix patches
 - pull post-3.3.7 fix patches
   (see patch comments for details)

Changes noted in doc/en/ReleaseNote:

ver 3.3.7
* Enable image processing on background terminals.
* Improve the performance of processing images on 8 or less bpp framebuffer.
* Support SGR 5, 9, 21, 25 and 29.
* Support DECFRA, SL and SR.
* Starting mlterm with -j option executes mlclient if daemon process has already
  started.
* Change the maximum number of "U+XXXX-XXXX" in ~/.mlterm/(t,v,)(aa)font
  from 7 to 511.
* Add "unlimted" to "Backlog size" entry in mlconfig.
  Add "UNICODE (ARABIC)" and "UNICODE (EMOJI)" to "Font name" entry.
* Add --it/it_color, --bl/bl_color and --co/co_color options.
* Add --itfont/use_italic_font option.
* Add --bisep/bidi_separators option.
* Add --fullwidth/unicode_full_width_areas option.
* Add --working-directory/working_directory option.
* Add --deffont option.
* Disable "_HALFWIDTH" suffix in ~/.mlterm/(t,v)(aa)font files.
* Drop --ucsprop/use_unicode_property option.
* Bug fixes:
  Fix the failure of saving font configurations from mlconfig.
  Fix the bug which sometimes causes the failure of searching closest colors on X/8bpp.


(tsutsui)
diff -r1.108 -r1.109 pkgsrc/x11/mlterm/Makefile
diff -r1.48 -r1.49 pkgsrc/x11/mlterm/distinfo
diff -r1.7 -r1.8 pkgsrc/x11/mlterm/patches/patch-configure
diff -r1.1 -r0 pkgsrc/x11/mlterm/patches/patch-mlterm_ml__config__proto.c
diff -r1.1 -r0 pkgsrc/x11/mlterm/patches/patch-mlterm_ml__config__proto.h
diff -r1.1 -r0 pkgsrc/x11/mlterm/patches/patch-xwindow_fb_x__display__freebsd.c
diff -r1.1 -r0 pkgsrc/x11/mlterm/patches/patch-xwindow_fb_x__display__linux.c
diff -r1.3 -r0 pkgsrc/x11/mlterm/patches/patch-mlterm_ml__vt100__parser.c
diff -r1.1 -r1.2 pkgsrc/x11/mlterm/patches/patch-xwindow_fb_x.h
diff -r1.6 -r1.7 pkgsrc/x11/mlterm/patches/patch-xwindow_fb_x__display.c
diff -r1.3 -r1.4 pkgsrc/x11/mlterm/patches/patch-xwindow_fb_x__display__wscons.c
diff -r0 -r1.6 pkgsrc/x11/mlterm/patches/patch-xwindow_fb_x__display__x68kgrf.c
diff -r0 -r1.1 pkgsrc/x11/mlterm/patches/patch-xwindow_libtype_Makefile.in

cvs diff -r1.108 -r1.109 pkgsrc/x11/mlterm/Makefile (expand / switch to unified diff)

--- pkgsrc/x11/mlterm/Makefile 2014/06/08 16:46:25 1.108
+++ pkgsrc/x11/mlterm/Makefile 2014/07/21 15:42:56 1.109
@@ -1,17 +1,16 @@ @@ -1,17 +1,16 @@
1# $NetBSD: Makefile,v 1.108 2014/06/08 16:46:25 tsutsui Exp $ 1# $NetBSD: Makefile,v 1.109 2014/07/21 15:42:56 tsutsui Exp $
2 2
3DISTNAME= mlterm-3.3.6 3DISTNAME= mlterm-3.3.7
4PKGREVISION= 2 
5CATEGORIES= x11 4CATEGORIES= x11
6MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=mlterm/} 5MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=mlterm/}
7 6
8MAINTAINER= uebayasi@NetBSD.org 7MAINTAINER= uebayasi@NetBSD.org
9HOMEPAGE= http://mlterm.sourceforge.net/ 8HOMEPAGE= http://mlterm.sourceforge.net/
10COMMENT= Multilingual terminal emulator 9COMMENT= Multilingual terminal emulator
11LICENSE= modified-bsd 10LICENSE= modified-bsd
12 11
13# CODESET is only supported on NetBSD in 1.5T and later - see <langinfo.h> 12# CODESET is only supported on NetBSD in 1.5T and later - see <langinfo.h>
14NOT_FOR_PLATFORM= NetBSD-1.[0-4]*-* NetBSD-1.5[A-S]-* 13NOT_FOR_PLATFORM= NetBSD-1.[0-4]*-* NetBSD-1.5[A-S]-*
15 14
16USE_TOOLS+= pkg-config msgfmt 15USE_TOOLS+= pkg-config msgfmt
17USE_LIBTOOL= yes 16USE_LIBTOOL= yes

cvs diff -r1.48 -r1.49 pkgsrc/x11/mlterm/distinfo (expand / switch to unified diff)

--- pkgsrc/x11/mlterm/distinfo 2014/06/08 16:46:25 1.48
+++ pkgsrc/x11/mlterm/distinfo 2014/07/21 15:42:56 1.49
@@ -1,15 +1,12 @@ @@ -1,15 +1,12 @@
1$NetBSD: distinfo,v 1.48 2014/06/08 16:46:25 tsutsui Exp $ 1$NetBSD: distinfo,v 1.49 2014/07/21 15:42:56 tsutsui Exp $
2 2
3SHA1 (mlterm-3.3.6.tar.gz) = 02ce7544c17aa6c33ddc4ad4e103d2e2bbfde85a 3SHA1 (mlterm-3.3.7.tar.gz) = a6ba30fb73ac183aff0b1b91d83af3fe960799a8
4RMD160 (mlterm-3.3.6.tar.gz) = a4145851a09595f1c07c9151f939a30fc55865bb 4RMD160 (mlterm-3.3.7.tar.gz) = 366592392644fb7a9c8029994f7cf92b9e0f442d
5Size (mlterm-3.3.6.tar.gz) = 3600399 bytes 5Size (mlterm-3.3.7.tar.gz) = 3610286 bytes
6SHA1 (patch-configure) = 5e3b0c709d447c49b0d26c40bde8ded4ade013c3 6SHA1 (patch-configure) = 923dfcba01d52d655defffa9a7ec96e56207df6e
7SHA1 (patch-etc_font-fb) = c9f116aae7640807f4adc4042adc49ddd9805e67 7SHA1 (patch-etc_font-fb) = c9f116aae7640807f4adc4042adc49ddd9805e67
8SHA1 (patch-mlterm_ml__config__proto.c) = 49f10818a07b5bd9114d48f37b7274dc289d9a18 8SHA1 (patch-xwindow_fb_x.h) = 1eabc67aeb2df3fdc212fb5855ffd3a63f6ad83d
9SHA1 (patch-mlterm_ml__config__proto.h) = f768eb18ad021aa85a734cf755334d09fdfacf89 9SHA1 (patch-xwindow_fb_x__display.c) = 4afe5b96dbb9af47bb78f632182adebb7525abe2
10SHA1 (patch-mlterm_ml__vt100__parser.c) = 79fdd1ab3e539eef098dbedeed25e1c77455a95f 10SHA1 (patch-xwindow_fb_x__display__wscons.c) = 20d43950a2f96109bbbe30f9aaf3561cd6ecc398
11SHA1 (patch-xwindow_fb_x.h) = 4def4f9f72fc2b5c34e3da476ef29d810880a0bb 11SHA1 (patch-xwindow_fb_x__display__x68kgrf.c) = a2b6384835523fb8c4f8beec21d5c80304bb4d92
12SHA1 (patch-xwindow_fb_x__display.c) = 22113aea58162ba650ee22fe6d39c667aa754030 12SHA1 (patch-xwindow_libtype_Makefile.in) = 350da4e217a1014d258e6c77a1de443392e50d57
13SHA1 (patch-xwindow_fb_x__display__freebsd.c) = 9dcb1cc6c8d73b1ee5ed990eb4f6f3eed49b1737 
14SHA1 (patch-xwindow_fb_x__display__linux.c) = aec0904457ffcaebab6d1af99ef3147d0df62c40 
15SHA1 (patch-xwindow_fb_x__display__wscons.c) = f94ada7963477ba43fa2cd8db0cc0202e8bd1fc9 

cvs diff -r1.7 -r1.8 pkgsrc/x11/mlterm/patches/patch-configure (expand / switch to unified diff)

--- pkgsrc/x11/mlterm/patches/patch-configure 2014/03/23 07:04:00 1.7
+++ pkgsrc/x11/mlterm/patches/patch-configure 2014/07/21 15:42:56 1.8
@@ -1,15 +1,43 @@ @@ -1,15 +1,43 @@
1$NetBSD: patch-configure,v 1.7 2014/03/23 07:04:00 tsutsui Exp $ 1$NetBSD: patch-configure,v 1.8 2014/07/21 15:42:56 tsutsui Exp $
2 2
3- setuid root is handled by SPECIAL_PERMS in pkgsrc 3- setuid root is handled by SPECIAL_PERMS in pkgsrc
4 4
5--- configure.orig 2014-03-22 22:06:40.000000000 +0000 5- pull post 3.3.7 fixes:
 6http://sourceforge.net/projects/mlterm/files/01release/mlterm-3.3.7/mlterm-3.3.7-fixes.patch/download
 7 * configure.in: "-lfontconfig -lfreetype" is added to CAIRO_LIBS and XFT_LIBS
 8 because mlterm has undefined symbols if --disable-shared is specified on
 9 some platforms where dependency_libs="" in libcairo.la.
 10
 11--- configure.orig 2014-07-05 21:40:48.000000000 +0000
6+++ configure 12+++ configure
7@@ -21377,7 +21377,7 @@ else 13@@ -21066,6 +21066,10 @@ if test "x$ac_cv_lib_Xft_XftDrawCreate"
 14 fi
 15
 16 fi
 17+ elif test "$gui" = "xlib" -a "$enable_shared" = "no" ; then
 18+ # In case --disable-shared is specified on some platforms
 19+ # (e.g. ubuntu 14.04) where dependency_libs="" in libXft.la.
 20+ XFT_LIBS="$XFT_LIBS -lfontconfig -lfreetype"
 21 fi
 22
 23 if test "$have_xft" = "yes" ; then
 24@@ -21193,6 +21197,10 @@ if test "x$ac_cv_lib_cairo_cairo_create"
 25
 26 fi
 27
 28+ elif test "$gui" = "xlib" -a "$enable_shared" = "no" ; then
 29+ # In case --disable-shared is specified on some platforms
 30+ # (e.g. ubuntu 14.04) where dependency_libs="" in libcairo.la.
 31+ CAIRO_LIBS="$CAIRO_LIBS -lfontconfig -lfreetype"
 32 fi
 33
 34 if test "$have_cairo" = "yes" ; then
 35@@ -21382,7 +21390,7 @@ else
8 fi 36 fi
9  37
10 if test "$gui" = "fb" ; then 38 if test "$gui" = "fb" ; then
11- INSTALL_OPT="-m 4755 -o root" 39- INSTALL_OPT="-m 4755 -o root"
12+ INSTALL_OPT="" 40+ INSTALL_OPT=""
13 fi 41 fi
14  42
15  43

File Deleted: pkgsrc/x11/mlterm/patches/Attic/patch-mlterm_ml__config__proto.c

File Deleted: pkgsrc/x11/mlterm/patches/Attic/patch-mlterm_ml__config__proto.h

File Deleted: pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display__freebsd.c

File Deleted: pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display__linux.c

File Deleted: pkgsrc/x11/mlterm/patches/Attic/patch-mlterm_ml__vt100__parser.c

cvs diff -r1.1 -r1.2 pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x.h (expand / switch to unified diff)

--- pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x.h 2014/06/08 16:46:25 1.1
+++ pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x.h 2014/07/21 15:42:56 1.2
@@ -1,39 +1,17 @@ @@ -1,39 +1,17 @@
1$NetBSD: patch-xwindow_fb_x.h,v 1.1 2014/06/08 16:46:25 tsutsui Exp $ 1$NetBSD: patch-xwindow_fb_x.h,v 1.2 2014/07/21 15:42:56 tsutsui Exp $
2 2
3Pull upstream changes: 3- pull post 3.3.7 fixes:
4 * fb/x_display.c, x.h: x_display_get_closest_color() caches 512 + 64 pixels. 4http://sourceforge.net/projects/mlterm/files/01release/mlterm-3.3.7/mlterm-3.3.7-fixes.patch/download
5https://bitbucket.org/arakiken/mlterm/commits/f3ea4bb79134409b0b66ba22676b9b4d1f5e1c02 5 * x.h: KS_Print -> KS_Print_Screen
6 6
7--- xwindow/fb/x.h.orig 2014-05-25 05:42:24.000000000 +0000 7--- xwindow/fb/x.h.orig 2014-07-05 21:40:41.000000000 +0000
8+++ xwindow/fb/x.h 8+++ xwindow/fb/x.h
9@@ -72,8 +72,28 @@ typedef struct 9@@ -309,7 +309,7 @@ typedef int XFontSet ; /* dummy */
10 fb_cmap_t * cmap ; 10 #define XK_Right KS_Right
11 fb_cmap_t * cmap_orig ; 11 #define XK_Down KS_Down
12  12 #define XK_Select KS_Select
13- u_long prev_pixel ; 13-#define XK_Print KS_Print
14- u_long prev_closest_color ; 14+#define XK_Print KS_Print_Screen
15+ struct 15 #define XK_Execute KS_Execute
16+ { 16 #define XK_Insert KS_Insert
17+ /* 17 #define XK_Delete KS_Delete
18+ * Closest color is searched by 15 bits. 
19+ * R(3)G(3)B(3): segment(9bits) 
20+ * R(2)G(2)B(2): offset(6bits) 
21+ */ 
22+ 
23+ /* Closest pixels cached by every segment. */ 
24+ u_int8_t pixels[512] ; /* 2^9 */ 
25+ u_int8_t offsets[512] ; /* 2^9 */ 
26+ 
27+ /* Closest pixels cached in recent segment. */ 
28+ u_int8_t seg_pixels[64] ; 
29+ struct 
30+ { 
31+ u_int32_t offsets ; 
32+ u_int segment ; 
33+ 
34+ } seg[2] ; 
35+ 
36+ } * color_cache ; 
37  
38 int key_state ; 
39 int lock_state ; 

cvs diff -r1.6 -r1.7 pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display.c (expand / switch to unified diff)

--- pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display.c 2014/06/08 16:46:25 1.6
+++ pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display.c 2014/07/21 15:42:56 1.7
@@ -1,154 +1,47 @@ @@ -1,154 +1,47 @@
1$NetBSD: patch-xwindow_fb_x__display.c,v 1.6 2014/06/08 16:46:25 tsutsui Exp $ 1$NetBSD: patch-xwindow_fb_x__display.c,v 1.7 2014/07/21 15:42:56 tsutsui Exp $
2 2
3Pull upstream changes: 3- pull post 3.3.7 fixes:
4 * fb/x_display.c, x.h: x_display_get_closest_color() caches 512 + 64 pixels. 4http://sourceforge.net/projects/mlterm/files/01release/mlterm-3.3.7/mlterm-3.3.7-fixes.patch/download
5https://bitbucket.org/arakiken/mlterm/commits/f3ea4bb79134409b0b66ba22676b9b4d1f5e1c02 5 * x_display.c: Key squences on NetBSD/x68k are added to the table in
 6 receive_stdin_key_event().
6 7
7--- xwindow/fb/x_display.c.orig 2014-05-25 05:42:24.000000000 +0000 8--- xwindow/fb/x_display.c.orig 2014-07-05 21:40:41.000000000 +0000
8+++ xwindow/fb/x_display.c 9+++ xwindow/fb/x_display.c
9@@ -1311,6 +1311,14 @@ cmap_init(void) 10@@ -1084,6 +1084,20 @@ receive_stdin_key_event(void)
 11 { "[B" , XK_Down } ,
 12 { "[C" , XK_Right } ,
 13 { "[D" , XK_Left } ,
 14+ #if defined(USE_GRF)
 15+ { "[7~" , XK_End } ,
 16+ { "[1~" , XK_Home } ,
 17+ { "OP" , XK_F1 } ,
 18+ { "OQ" , XK_F2 } ,
 19+ { "OR" , XK_F3 } ,
 20+ { "OS" , XK_F4 } ,
 21+ { "[17~" , XK_F5 } ,
 22+ { "[18~" , XK_F6 } ,
 23+ { "[19~" , XK_F7 } ,
 24+ { "[20~" , XK_F8 } ,
 25+ { "[21~" , XK_F9 } ,
 26+ { "[29~" , XK_F10 } ,
 27+ #else /* USE_GRF */
 28 #if defined(__NetBSD__) || defined(__OpenBSD__)
 29 { "[8~" , XK_End } ,
 30 { "[7~" , XK_Home } ,
 31@@ -1117,6 +1131,7 @@ receive_stdin_key_event(void)
 32 { "[21~" , XK_F10 } ,
 33 { "[23~" , XK_F11 } ,
 34 { "[24~" , XK_F12 } ,
 35+ #endif /* USE_GRF */
 36 } ;
10  37
11 return 0 ; 38 size_t count ;
12 } 39@@ -1468,7 +1483,7 @@ x_display_close_all(void)
13+ 
14+ if( ! ( _display.color_cache = calloc( 1 , sizeof(*_display.color_cache)))) 
15+ { 
16+ free( _display.cmap_orig) ; 
17+ free( _display.cmap) ; 
18+ 
19+ return 0 ; 
20+ } 
21 } 
22  
23 if( num_of_colors == 2) 
24@@ -1361,9 +1369,6 @@ cmap_init(void) 
25 } 
26 #endif 
27  
28- _display.prev_pixel = 0xff000000 ; 
29- _display.prev_closest_color = 0 ; 
30- 
31 return 1 ; 
32 } 
33  
34@@ -1383,6 +1388,7 @@ cmap_final(void) 
35 } 
36  
37 free( _display.cmap) ; 
38+ free( _display.color_cache) ; 
39 } 
40  
41  
42@@ -1716,8 +1722,10 @@ x_display_get_group_leader( 
43 int 
44 x_display_reset_cmap(void) 
45 { 
46- _display.prev_pixel = 0xff000000 ; 
47- _display.prev_closest_color = 0 ; 
48+ if( _display.color_cache) 
49+ { 
50+ memset( _display.color_cache , 0 , sizeof(*_display.color_cache)) ; 
51+ } 
52  
53 return _display.cmap && cmap_init() 
54 #ifdef USE_GRF 
55@@ -1814,8 +1822,10 @@ x_display_set_cmap( 
56 gpal_init( ((fb_reg_t*)_display.fb)->gpal) ; 
57 #endif 
58  
59- _display.prev_pixel = 0xff000000 ; 
60- _display.prev_closest_color = 0 ; 
61+ if( _display.color_cache) 
62+ { 
63+ memset( _display.color_cache , 0 , sizeof(*_display.color_cache)) ; 
64+ } 
65  
66 kik_msg_printf( "Palette changed.\n") ; 
67 } 
68@@ -2418,7 +2428,10 @@ x_cmap_get_closest_color( 
69 int blue 
70 ) 
71 { 40 {
72- u_long pixel ; 41 if( DISP_IS_INITED)
73+ u_int segment ; 
74+ u_int offset ; 
75+ u_int offset_arr ; 
76+ int arr_idx ; 
77 u_int color ; 
78 u_long min = 0xffffff ; 
79 u_long diff ; 
80@@ -2429,16 +2442,51 @@ x_cmap_get_closest_color( 
81 return 0 ; 
82 } 
83  
84- /* 0xf8f8f8 ignores least significant 3bits */ 
85- if( (((pixel = (red << 16) | (green << 8) | blue) ^ _display.prev_pixel) 
86- & 0xfff8f8f8) == 0) 
87- { 
88- *closest = _display.prev_closest_color ; 
89+ /* R(3)G(3)B(3) */ 
90+ segment = ((red << 1) & 0x1c0) | ((green >> 2) & 0x38) | ((blue >> 5) & 0x7) ; 
91+ /* R(2)G(2)B(2) */ 
92+ offset = ((red << 1) & 0x30) | ((green >> 1) & 0xc) | ((blue >> 3) & 0x3) ; 
93+ 
94+ if( _display.color_cache->offsets[segment] == (offset|0x80)) 
95+ { 
96+ *closest = _display.color_cache->pixels[segment] ; 
97+ #ifdef __DEBUG 
98+ kik_debug_printf( "CACHED PIXEL %x <= r%x g%x b%x segment %x offset %x\n" , 
99+ *closest , red , green , blue , segment , offset) ; 
100+ #endif 
101  
102 return 1 ; 
103 } 
104  
105- _display.prev_pixel = pixel ; 
106+ if( offset >= 32) 
107+ { 
108+ arr_idx = 1 ; 
109+ offset_arr = offset - 32 ; 
110+ } 
111+ else 
112+ { 
113+ arr_idx = 0 ; 
114+ offset_arr = offset ; 
115+ } 
116+ 
117+ if( _display.color_cache->seg[arr_idx].segment == segment) 
118+ { 
119+ if( _display.color_cache->seg[arr_idx].offsets & (1U << offset_arr)) 
120+ { 
121+ *closest = _display.color_cache->seg_pixels[offset] ; 
122+ #ifdef __DEBUG 
123+ kik_debug_printf( "CACHED2 PIXEL %x <= r%x g%x b%x segment %x offset %x\n" , 
124+ *closest , red , green , blue , segment , offset) ; 
125+ #endif 
126+ 
127+ return 1 ; 
128+ } 
129+ } 
130+ else 
131+ { 
132+ _display.color_cache->seg[arr_idx].segment = segment ; 
133+ _display.color_cache->seg[arr_idx].offsets = 0U ; 
134+ } 
135  
136 for( color = 0 ; color < CMAP_SIZE(_display.cmap) ; color++) 
137 { 42 {
138@@ -2468,7 +2516,15 @@ x_cmap_get_closest_color( 43- x_picture_display_closed( &_disp.display) ;
139 } 44+ x_picture_display_closed( _disp.display) ;
140 } 
141  45
142- _display.prev_closest_color = *closest ; 46 x_virtual_kbd_hide() ;
143+ _display.color_cache->seg_pixels[offset] = 
144+ _display.color_cache->pixels[segment] = *closest ; 
145+ _display.color_cache->offsets[segment] = (offset|0x80) ; 
146+ _display.color_cache->seg[arr_idx].offsets |= (1U << offset_arr) ; 
147+ 
148+#ifdef __DEBUG 
149+ kik_debug_printf( "NEW PIXEL %x <= r%x g%x b%x segment %x offset %x\n" , 
150+ *closest , red , green , blue , segment , offset) ; 
151+#endif 
152  47
153 return 1 ; 
154 } 

cvs diff -r1.3 -r1.4 pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display__wscons.c (expand / switch to unified diff)

--- pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display__wscons.c 2014/06/08 16:46:25 1.3
+++ pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display__wscons.c 2014/07/21 15:42:56 1.4
@@ -1,18 +1,25 @@ @@ -1,18 +1,25 @@
1$NetBSD: patch-xwindow_fb_x__display__wscons.c,v 1.3 2014/06/08 16:46:25 tsutsui Exp $ 1$NetBSD: patch-xwindow_fb_x__display__wscons.c,v 1.4 2014/07/21 15:42:56 tsutsui Exp $
2 2
3Pull upstream changes: 3- pull post 3.3.7 fixes:
4 * fb/x_display.c, x.h: x_display_get_closest_color() caches 512 + 64 pixels. 4http://sourceforge.net/projects/mlterm/files/01release/mlterm-3.3.7/mlterm-3.3.7-fixes.patch/download
5https://bitbucket.org/arakiken/mlterm/commits/f3ea4bb79134409b0b66ba22676b9b4d1f5e1c02 5 * x_display_wscons.c: The null pointer bug of_display.color_cache in the case
 6 of vinfo.depth >= 2 && _disp.depth == 1 is fixed.
6 7
7--- xwindow/fb/x_display_wscons.c.orig 2014-05-25 05:42:25.000000000 +0000 8--- xwindow/fb/x_display_wscons.c.orig 2014-07-05 21:40:42.000000000 +0000
8+++ xwindow/fb/x_display_wscons.c 9+++ xwindow/fb/x_display_wscons.c
9@@ -532,9 +532,6 @@ open_display( 10@@ -522,6 +522,15 @@ open_display(
 11
 12 goto error ;
 13 }
 14+
 15+ if( ! ( _display.color_cache =
 16+ calloc( 1 , sizeof(*_display.color_cache))))
 17+ {
 18+ free( _display.cmap_orig) ;
 19+ free( _display.cmap) ;
 20+
 21+ goto error ;
 22+ }
10 } 23 }
11  24
12 ioctl( _display.fb_fd , FBIOPUTCMAP , _display.cmap) ; 25 for( color = 0 ; color < num_of_colors ; color ++)
13- 
14- _display.prev_pixel = 0xff000000 ; 
15- _display.prev_closest_color = 0 ; 
16 } 
17 else if( ! cmap_init()) 
18 { 

File Added: pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_fb_x__display__x68kgrf.c
$NetBSD: patch-xwindow_fb_x__display__x68kgrf.c,v 1.6 2014/07/21 15:42:56 tsutsui Exp $

- pull post 3.3.7 fixes:
http://sourceforge.net/projects/mlterm/files/01release/mlterm-3.3.7/mlterm-3.3.7-fixes.patch/download
 * x_display_x68kgrf.c:
  - Keyboard events from /dev/kbd are processed instead of stdin.
  - x68k_set_use_tvram_colors() and x68k_set_tvram_cmap() resets
    _display.color_cache.

--- xwindow/fb/x_display_x68kgrf.c.orig	2014-07-05 21:40:42.000000000 +0000
+++ xwindow/fb/x_display_x68kgrf.c
@@ -4,6 +4,8 @@
 
 #include  <dev/wscons/wsdisplay_usl_io.h>	/* VT_GETSTATE */
 #include  <machine/grfioctl.h>
+#include  <machine/vuid_event.h>
+#include  <dev/sun/kbio.h>
 
 
 #define get_key_state()  (0)
@@ -329,12 +331,32 @@ open_display(
 	tm.c_cc[VTIME] = 0 ;
 	tcsetattr( STDIN_FILENO , TCSAFLUSH , &tm) ;
 
-	_display.fd = STDIN_FILENO ;
-
 	kik_priv_restore_euid() ;
 	kik_priv_restore_egid() ;
 
-	_mouse.fd = open( "/dev/mouse" , O_RDWR|O_NONBLOCK|O_EXCL) ;
+	if( ( _display.fd = open( "/dev/kbd" , O_RDONLY)) >= 0)
+	{
+		int  mode ;
+
+		fcntl( _display.fd , F_SETOWN , getpid()) ;
+		fcntl( _display.fd , F_SETFL , O_NONBLOCK|O_ASYNC) ;
+		mode = 1 ;
+		ioctl( _display.fd , KIOCSDIRECT , &mode) ;
+	}
+	else
+	{
+		_display.fd = STDIN_FILENO ;
+	}
+
+	if( ( _mouse.fd = open( "/dev/mouse" , O_RDONLY)) >= 0)
+	{
+		int  format ;
+
+		format = VUID_FIRM_EVENT ;
+		ioctl( _mouse.fd , VUIDSFORMAT , &format) ;
+		fcntl( _mouse.fd , F_SETOWN , getpid()) ;
+		fcntl( _mouse.fd , F_SETFL , O_NONBLOCK|O_ASYNC) ;
+	}
 
 	kik_priv_change_euid( kik_getuid()) ;
 	kik_priv_change_egid( kik_getgid()) ;
@@ -400,13 +422,7 @@ receive_mouse_event(void)
 #define  VKEY_UP      0
 #define  VKEY_DOWN    1
 
-	struct
-	{
-		u_short  id ;
-		u_short  pad ;
-		int  value ;
-		struct timeval  time ;
-	} ev ;
+	Firm_event  ev ;
 	ssize_t  len ;
 
 	if( console_id != get_active_console())
@@ -544,7 +560,148 @@ receive_mouse_event(void)
 static int
 receive_key_event(void)
 {
-	return  receive_stdin_key_event() ;
+	static u_int16_t  keymap[] =
+	{
+		XK_Escape , '1' , '2' , '3' , '4' , '5' , '6' , '7' ,
+		'8' , '9' , '0' , '-' , '^' , '\\' , XK_BackSpace , XK_Tab ,
+		'q' , 'w' , 'e' , 'r' , 't' , 'y' , 'u' , 'i' ,
+		'o' , 'p' , '@' , '[' , XK_Return , 'a' , 's' , 'd' ,
+		'f' , 'g' , 'h' , 'j' , 'k' , 'l' , ';' , ':' ,
+		']' , 'z' , 'x' , 'c' , 'v' , 'b' , 'n' , 'm' ,
+		',' , '.' , '/' , 0 , ' ' , XK_Home , XK_Delete , XK_Prior ,
+		XK_Next , 0 /* XK_Undo */ , XK_Left , XK_Up , XK_Right , XK_Down ,
+			XK_Clear , XK_KP_Divide ,
+		XK_KP_Multiply , XK_KP_Subtract , XK_KP_7 , XK_KP_8 , XK_KP_9 , XK_KP_Add ,
+			XK_KP_4 , XK_KP_5 ,
+		XK_KP_6 , '=' /* XK_KP_Equal */ , XK_KP_1 , XK_KP_2 , XK_KP_3 ,
+			XK_Return /* XK_KP_Enter */ , XK_KP_0 , ',' ,
+		'.' , 0 , 0 /* XK_Touroku */ , XK_Help , XK_Alt_L , XK_Meta_L ,
+			XK_Meta_R , XK_Alt_R ,
+		XK_Control_R , 0 /* XK_Kana_Lock */ , 0 /* XK_Romaji */ , 0 , XK_Caps_Lock ,
+			XK_Insert , XK_Hiragana_Katakana , XK_Zenkaku_Hankaku ,
+		0 /* XK_Break */ , XK_Print , XK_F1 , XK_F2 , XK_F3 , XK_F4 , XK_F5 , XK_F6 ,
+		XK_F7 , XK_F8 , XK_F9 , XK_F10 , 0 , 0 , 0 , XK_Shift_L ,
+		XK_Control_L , XK_Super_L , XK_Super_R ,
+	} ;
+	static u_int8_t  shift_keymap[] =
+	{
+		0 , '!' , '\"' , '#' , '$' , '%' , '&' , '\'' ,
+		'(' , ')' , 0 , '=' , '~' , '|' , 0 , 0 ,
+		'Q' , 'W' , 'E' , 'R' , 'T' , 'Y' , 'U' , 'I' ,
+		'O' , 'P' , '`' , '{' , 0 , 'A' , 'S' , 'D' ,
+		'F' , 'G' , 'H' , 'J' , 'K' , 'L' , '+' , '*' ,
+		'}' , 'Z' , 'X' , 'C' , 'V' , 'B' , 'N' , 'M' ,
+		'<' , '>' , '?' , '_' ,
+	} ;
+	Firm_event  ev ;
+
+	if( _display.fd == STDIN_FILENO)
+	{
+		return  receive_stdin_key_event() ;
+	}
+
+	if( console_id != get_active_console())
+	{
+		return  0 ;
+	}
+
+	while( read( _display.fd , memset( &ev , 0 , sizeof(ev)) , sizeof(ev)) > 0)
+	{
+		XKeyEvent  xev ;
+		int  pressed ;
+		int  shift ;
+
+		pressed = (ev.value == VKEY_DOWN) ;
+
+		ev.id -- ;
+		ev.id &= 0x7f ;
+
+		if( _display.lock_state & CLKED)
+		{
+			shift = ! (_display.key_state & ShiftMask) ;
+		}
+		else
+		{
+			shift = _display.key_state & ShiftMask ;
+		}
+
+		if( ! shift ||
+		    ev.id >= sizeof(shift_keymap) / sizeof(*shift_keymap) ||
+		    ! ( xev.ksym = shift_keymap[ev.id]))
+		{
+			if( ev.id >= sizeof(keymap) / sizeof(*keymap) ||
+			    ! ( xev.ksym = keymap[ev.id]))
+			{
+				continue ;
+			}
+		}
+
+		if( pressed)
+		{
+			if( xev.ksym == XK_Shift_R ||
+			    xev.ksym == XK_Shift_L)
+			{
+				_display.key_state |= ShiftMask ;
+			}
+			else if( xev.ksym == XK_Control_R ||
+				 xev.ksym == XK_Control_L)
+			{
+				_display.key_state |= ControlMask ;
+			}
+			else if( xev.ksym == XK_Alt_R ||
+				 xev.ksym == XK_Alt_L ||
+				 xev.ksym == XK_Meta_R ||
+				 xev.ksym == XK_Meta_L)
+			{
+				_display.key_state |= ModMask ;
+			}
+			else if( xev.ksym == XK_Num_Lock)
+			{
+				_display.lock_state ^= NLKED ;
+			}
+			else if( xev.ksym == XK_Caps_Lock)
+			{
+				_display.lock_state ^= CLKED ;
+			}
+			else
+			{
+				xev.type = KeyPress ;
+				xev.state = _mouse.button_state |
+					    _display.key_state ;
+				xev.keycode = ev.id + 1 ;
+
+			#ifdef  __DEBUG
+				kik_debug_printf( KIK_DEBUG_TAG
+					"scancode %d -> ksym 0x%x state 0x%x\n" ,
+					ev.id , xev.ksym , xev.state) ;
+			#endif
+
+				receive_event_for_multi_roots( &xev) ;
+			}
+		}
+		else
+		{
+			if( xev.ksym == XK_Shift_R ||
+			    xev.ksym == XK_Shift_L)
+			{
+				_display.key_state &= ~ShiftMask ;
+			}
+			else if( xev.ksym == XK_Control_R ||
+				 xev.ksym == XK_Control_L)
+			{
+				_display.key_state &= ~ControlMask ;
+			}
+			else if( xev.ksym == XK_Alt_R ||
+				 xev.ksym == XK_Alt_L ||
+				 xev.ksym == XK_Meta_R ||
+				 xev.ksym == XK_Meta_L)
+			{
+				_display.key_state &= ~ModMask ;
+			}
+		}
+	}
+
+	return  1 ;
 }
 
 static int
@@ -590,6 +747,12 @@ x68k_set_use_tvram_colors(
 		if( _display.cmap == tcmap)
 		{
 			_display.cmap = gcmap ;
+
+			if( _display.color_cache)
+			{
+				memset( _display.color_cache , 0 ,
+					sizeof(*_display.color_cache)) ;
+			}
 		}
 
 		use_tvram_cmap = 0 ;
@@ -620,6 +783,12 @@ x68k_set_tvram_cmap(
 			gcmap = _display.cmap ;
 			_display.cmap = tcmap ;
 
+			if( _display.color_cache)
+			{
+				memset( _display.color_cache , 0 ,
+					sizeof(*_display.color_cache)) ;
+			}
+
 			return  1 ;
 		}
 	}

File Added: pkgsrc/x11/mlterm/patches/Attic/patch-xwindow_libtype_Makefile.in
$NetBSD: patch-xwindow_libtype_Makefile.in,v 1.1 2014/07/21 15:42:56 tsutsui Exp $

- pull post 3.3.7 fixes:
http://sourceforge.net/projects/mlterm/files/01release/mlterm-3.3.7/mlterm-3.3.7-fixes.patch/download
 * libtype/Makefile.in: Compiling error is fixed.

--- xwindow/libtype/Makefile.in.orig	2014-07-21 09:30:22.000000000 +0000
+++ xwindow/libtype/Makefile.in
@@ -59,7 +59,7 @@ libtype_cairo.la: $(CAIRO_OBJ)
 libtype.a: $(NODL_OBJ)
 	$(LIBTOOL_LINK) -o libtype.a $(NODL_OBJ:.o=.lo)
 
-x_font_ft.o:
+x_font_ft.o: x_font_ft.c
 	$(LIBTOOL_CC) @TYPE_CFLAGS@ -c $<
 
 .SUFFIXES: .c .o