[PATCH:xserver 2/2] xkb: Fix case checks for Latin 8.

Cyril Brulebois kibi at debian.org
Tue May 24 04:08:28 PDT 2011


Spotted by -Wlogical-op:
|   CC     xkbfmisc.lo
| xkbfmisc.c: In function '_XkbKSCheckCase':
| xkbfmisc.c:104:3: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
| xkbfmisc.c:118:3: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]

A quick look at the keysymdef.h file (from xproto) suggests the
implementor chose to use interval checks to determine the case, but
since lines weren't sorted by codepoints, checks were quite wrong.

Implement _XkbKSUpper/_XkbKSLower checks based on a grep for
CAPITAL/SMALL (respectively) on the Latin 8 part of the said file.

Signed-off-by: Cyril Brulebois <kibi at debian.org>
---
 xkb/xkbfmisc.c |   41 ++++++++++++++++++++++++++---------------
 1 files changed, 26 insertions(+), 15 deletions(-)

diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index dea3473..1ac9d82 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -99,23 +99,34 @@ unsigned	set,rtrn;
 	    }
 	    break;
 	case 18:		/* latin 8 */
-	    if ((ks==XK_Babovedot)||
-                ((ks>=XK_Dabovedot)&&(ks<=XK_Wacute))||
-		((ks>=XK_Ygrave)&&(ks<=XK_Fabovedot))||
-	        (ks==XK_Mabovedot)||
-	        (ks==XK_Pabovedot)||
-	        (ks==XK_Sabovedot)||
-	        (ks==XK_Wdiaeresis)||
-		((ks>=XK_Wcircumflex)&&(ks<=XK_Ycircumflex))) {
+	    if ((ks==XK_Wcircumflex)||
+		(ks==XK_Ycircumflex)||
+		(ks==XK_Babovedot)||
+		(ks==XK_Dabovedot)||
+		(ks==XK_Fabovedot)||
+		(ks==XK_Mabovedot)||
+		(ks==XK_Pabovedot)||
+		(ks==XK_Sabovedot)||
+		(ks==XK_Tabovedot)||
+		(ks==XK_Wgrave)||
+		(ks==XK_Wacute)||
+		(ks==XK_Wdiaeresis)||
+		(ks==XK_Ygrave)) {
 		rtrn|= _XkbKSUpper;
 	    }
-	    if ((ks==XK_babovedot)||
-	        (ks==XK_dabovedot)||
-	        (ks==XK_fabovedot)||
-	        (ks==XK_mabovedot)||
-                ((ks>=XK_wgrave)&&(ks<=XK_wacute))||
-	        (ks==XK_ygrave)||
-		((ks>=XK_wdiaeresis)&&(ks<=XK_ycircumflex))) {
+	    if ((ks==XK_wcircumflex)||
+		(ks==XK_ycircumflex)||
+		(ks==XK_babovedot)||
+		(ks==XK_dabovedot)||
+		(ks==XK_fabovedot)||
+		(ks==XK_mabovedot)||
+		(ks==XK_pabovedot)||
+		(ks==XK_sabovedot)||
+		(ks==XK_tabovedot)||
+		(ks==XK_wgrave)||
+		(ks==XK_wacute)||
+		(ks==XK_wdiaeresis)||
+		(ks==XK_ygrave)) {
 		rtrn|= _XkbKSLower;
 	    }
 	    break;
-- 
1.7.5.1



More information about the xorg-devel mailing list