xserver: Branch 'master'

Tilman Sauerbeck tilman at kemper.freedesktop.org
Sat Jul 8 12:42:05 EEST 2006


 dix/Makefile.am                 |    3 +-
 dix/strcasecmp.c                |   50 ++++++++++++++++++++++++++++++++++++++++
 hw/xfree86/dixmods/Makefile.am  |    1 
 hw/xfree86/dixmods/xkbPrivate.c |    8 +++---
 include/dix.h                   |    6 ++++
 xkb/maprules.c                  |   16 ++++--------
 xkb/xkbfmisc.c                  |   16 ------------
 7 files changed, 68 insertions(+), 32 deletions(-)

New commits:
diff-tree 63f13e01ee6e7df1753f2113f4cff9538596be0a (from 5416f90e9c939027005fc01fa3ce3df56919ae0d)
Author: Tilman Sauerbeck <tilman at code-monkey.de>
Date:   Sat Jul 8 11:33:44 2006 +0200

    Bug #7097: do case-insensitive comparison for some hotkeys.
    
    xkb's strcasecmp implementation has been moved to the dix so it's now
    safe to just use strcasecmp().

diff --git a/dix/Makefile.am b/dix/Makefile.am
index c9a19f7..414f125 100644
--- a/dix/Makefile.am
+++ b/dix/Makefile.am
@@ -29,7 +29,8 @@ libdix_la_SOURCES = 	\
 	swaprep.c	\
 	swapreq.c	\
 	tables.c	\
-	window.c
+	window.c	\
+	strcasecmp.c
 
 libxpstubs_la_SOURCES =	\
 	xpstubs.c
diff --git a/dix/strcasecmp.c b/dix/strcasecmp.c
new file mode 100644
index 0000000..bf3f008
--- /dev/null
+++ b/dix/strcasecmp.c
@@ -0,0 +1,50 @@
+/* $Xorg: xkbmisc.c,v 1.4 2000/08/17 19:46:44 cpqbld Exp $ */
+/************************************************************
+ Copyright (c) 1995 by Silicon Graphics Computer Systems, Inc.
+
+ Permission to use, copy, modify, and distribute this
+ software and its documentation for any purpose and without
+ fee is hereby granted, provided that the above copyright
+ notice appear in all copies and that both that copyright
+ notice and this permission notice appear in supporting
+ documentation, and that the name of Silicon Graphics not be
+ used in advertising or publicity pertaining to distribution
+ of the software without specific prior written permission.
+ Silicon Graphics makes no representation about the suitability
+ of this software for any purpose. It is provided "as is"
+ without any express or implied warranty.
+
+ SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+ GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+ OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
+ THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ ********************************************************/
+/* $XFree86: xc/lib/xkbfile/xkbmisc.c,v 1.7 2003/07/16 02:31:10 dawes Exp $ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#endif
+
+#include <ctype.h>
+#include "dix.h"
+
+#ifdef NEED_STRCASECMP
+int
+xstrcasecmp(char *str1,char *str2)
+{
+    const u_char *us1 = (const u_char *)str1, *us2 = (const u_char *)str2;
+
+    while (tolower(*us1) == tolower(*us2)) {
+        if (*us1++ == '\0')
+            return (0);
+        us2++;
+    }
+
+    return (tolower(*us1) - tolower(*us2));
+}
+#endif
diff --git a/hw/xfree86/dixmods/Makefile.am b/hw/xfree86/dixmods/Makefile.am
index d1b806a..9023a0c 100644
--- a/hw/xfree86/dixmods/Makefile.am
+++ b/hw/xfree86/dixmods/Makefile.am
@@ -95,6 +95,7 @@ libtype1_la_SOURCES = type1mod.c
 libdixmods_la_SOURCES = $(top_srcdir)/mi/miinitext.c
 
 libxorgxkb_la_SOURCES = xkbVT.c xkbPrivate.c xkbKillSrv.c
+libxorgxkb_la_LIBADD = $(top_builddir)/dix/libdix.la
 
 libxtrap_la_LDFLAGS = -avoid-version
 libxtrap_la_LIBADD = $(top_builddir)/XTrap/libxtrap.la
diff --git a/hw/xfree86/dixmods/xkbPrivate.c b/hw/xfree86/dixmods/xkbPrivate.c
index 0479bca..b986432 100644
--- a/hw/xfree86/dixmods/xkbPrivate.c
+++ b/hw/xfree86/dixmods/xkbPrivate.c
@@ -26,13 +26,13 @@ XkbDDXPrivate(DeviceIntPtr dev,KeyCode k
     if (xf86act->type == XkbSA_XFree86Private) {
         memcpy(msgbuf, xf86act->data, XkbAnyActionDataSize);
         msgbuf[XkbAnyActionDataSize]= '\0';
-        if (strcmp(msgbuf, "-vmode")==0)
+        if (strcasecmp(msgbuf, "-vmode")==0)
             xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
-        else if (strcmp(msgbuf, "+vmode")==0)
+        else if (strcasecmp(msgbuf, "+vmode")==0)
             xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
-        else if (strcmp(msgbuf, "ungrab")==0)
+        else if (strcasecmp(msgbuf, "ungrab")==0)
             xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL);
-        else if (strcmp(msgbuf, "clsgrb")==0)
+        else if (strcasecmp(msgbuf, "clsgrb")==0)
             xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL);
         else
             xf86ProcessActionEvent(ACTION_MESSAGE, (void *) msgbuf);
diff --git a/include/dix.h b/include/dix.h
index 0177721..84fc849 100644
--- a/include/dix.h
+++ b/include/dix.h
@@ -820,4 +820,10 @@ typedef struct {
     SelectionCallbackKind   kind;
 } SelectionInfoRec;
 
+/* strcasecmp.c */
+#if NEED_STRCASECMP
+#define strcasecmp xstrcasecmp
+extern int xstrcasecmp(char *s1, char *s2);
+#endif
+
 #endif /* DIX_H */
diff --git a/xkb/maprules.c b/xkb/maprules.c
index d4e9829..eff02ad 100644
--- a/xkb/maprules.c
+++ b/xkb/maprules.c
@@ -62,12 +62,6 @@
 #define PR_DEBUG2(s,a,b)
 #endif
 
-#ifdef NEED_STRCASECMP
-extern int _XkbStrCaseCmp(char *s1, char *s2);
-#else
-#define _XkbStrCaseCmp strcasecmp
-#endif
-
 /***====================================================================***/
 
 #define DFLT_LINE_SIZE	128
@@ -1092,20 +1086,20 @@ int			len,headingtype,extra_ndx = 0;
     for ( ; GetInputLine(file,&line,False); line.num_line= 0) {
 	if (line.line[0]=='!') {
 	    tok = strtok(&(line.line[1]), " \t");
-	    if (_XkbStrCaseCmp(tok,"model") == 0)
+	    if (strcasecmp(tok,"model") == 0)
 		headingtype = HEAD_MODEL;
-	    else if (_XkbStrCaseCmp(tok,"layout") == 0)
+	    else if (strcasecmp(tok,"layout") == 0)
 		headingtype = HEAD_LAYOUT;
-	    else if (_XkbStrCaseCmp(tok,"variant") == 0)
+	    else if (strcasecmp(tok,"variant") == 0)
 		headingtype = HEAD_VARIANT;
-	    else if (_XkbStrCaseCmp(tok,"option") == 0)
+	    else if (strcasecmp(tok,"option") == 0)
 		headingtype = HEAD_OPTION;
 	    else {
 		int i;
 		headingtype = HEAD_EXTRA;
 		extra_ndx= -1;
 		for (i=0;(i<rules->num_extra)&&(extra_ndx<0);i++) {
-		    if (!_XkbStrCaseCmp(tok,rules->extra_names[i]))
+		    if (!strcasecmp(tok,rules->extra_names[i]))
 			extra_ndx= i;
 		}
 		if (extra_ndx<0) {
diff --git a/xkb/xkbfmisc.c b/xkb/xkbfmisc.c
index 3389ba8..3ed68c2 100644
--- a/xkb/xkbfmisc.c
+++ b/xkb/xkbfmisc.c
@@ -247,19 +247,3 @@ XkbNameMatchesPattern(char *name,char *p
     /* if we get here, the pattern is exhausted (-:just like me:-) */
     return (name[0]=='\0');
 }
-
-#ifdef NEED_STRCASECMP
-_X_HIDDEN int
-_XkbStrCaseCmp(char *str1,char *str2)
-{
-    const u_char *us1 = (const u_char *)str1, *us2 = (const u_char *)str2;
-
-    while (tolower(*us1) == tolower(*us2)) {
-        if (*us1++ == '\0')
-            return (0);
-        us2++;
-    }
-
-    return (tolower(*us1) - tolower(*us2));
-}
-#endif



More information about the xorg-commit mailing list