.gitignore             |    8 ++++++++
 Makefile.am            |    6 ++----
 README                 |   24 ++++++++++++++++++++++++
 configure.ac           |   14 +++++++++-----
 include/X11/.gitignore |    1 -
 src/.gitignore         |    6 ------
 src/Makefile.am        |    2 +-
 src/XKBfileInt.h       |    9 ++++++---
 src/cout.c             |   26 +++++++++++++++++++++-----
 src/maprules.c         |   11 +++++++++++
 src/xkbatom.c          |    4 ++--
 src/xkbconfig.c        |    2 +-
 src/xkberrs.c          |    7 +++++++
 src/xkmread.c          |   17 ++---------------
 14 files changed, 94 insertions(+), 43 deletions(-)

New commits:
commit fa9520d5a63e181c05dd850223a1916e37e71a13
Author: Alan Coopersmith <alan.coopersm...@sun.com>
Date:   Tue Oct 6 17:08:58 2009 -0700

    libxkbfile 1.0.6
    
    Signed-off-by: Alan Coopersmith <alan.coopersm...@sun.com>

diff --git a/configure.ac b/configure.ac
index c1dd57d..0506307 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@ dnl Process this file with autoconf to create configure.
 
 AC_PREREQ([2.57])
 
-AC_INIT(libxkbfile, 1.0.5, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libxkbfile)
+AC_INIT(libxkbfile, 1.0.6, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], libxkbfile)
 AM_INIT_AUTOMAKE([dist-bzip2])
 AM_MAINTAINER_MODE
 

commit a3d95aedf3a6d1859387fb08b46cd66cd61cec83
Author: Alan Coopersmith <alan.coopersm...@sun.com>
Date:   Tue Oct 6 17:05:00 2009 -0700

    Migrate to xorg macros 1.3 & XORG_DEFAULT_OPTIONS
    
    Signed-off-by: Alan Coopersmith <alan.coopersm...@sun.com>

diff --git a/configure.ac b/configure.ac
index 3a3822b..c1dd57d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,15 +27,16 @@ AC_INIT(libxkbfile, 1.0.5, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=x
 AM_INIT_AUTOMAKE([dist-bzip2])
 AM_MAINTAINER_MODE
 
-# Require xorg-macros: XORG_CWARNFLAGS, XORG_CHANGELOG
-m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or 
later before running autoconf/autogen])])
-XORG_MACROS_VERSION(1.2)
+# Require xorg-macros: XORG_DEFAULT_OPTIONS
+m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.3 or 
later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.3)
 AM_CONFIG_HEADER(config.h)
 
 # Check for progs
 AC_PROG_CC
 AC_PROG_LIBTOOL
-XORG_CWARNFLAGS
+
+XORG_DEFAULT_OPTIONS
 
 AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
                                         [Do not have 'strcasecmp'.]))
@@ -44,13 +45,9 @@ AC_CHECK_FUNC(getc_unlocked, 
AC_DEFINE([HAVE_UNLOCKED_STDIO], 1,
 
 # Check for dependencies
 PKG_CHECK_MODULES(XKBFILE, x11 kbproto)
-XKBFILE_CFLAGS="$CWARNFLAGS $XKBFILE_CFLAGS"
 AC_SUBST(XKBFILE_CFLAGS)
 AC_SUBST(XKBFILE_LIBS)
                  
-XORG_RELEASE_VERSION
-XORG_CHANGELOG
-
 AC_OUTPUT([Makefile
           src/Makefile
            xkbfile.pc])
diff --git a/src/Makefile.am b/src/Makefile.am
index 6e3ec5f..98e1614 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -20,7 +20,7 @@ INCLUDES = -I$(top_srcdir)/include/ 
-I$(top_srcdir)/include/X11/extensions/
 
 
 libxkbfile_la_LIBADD = @XKBFILE_LIBS@
-AM_CFLAGS = @XKBFILE_CFLAGS@
+AM_CFLAGS = $(CWARNFLAGS) @XKBFILE_CFLAGS@
 
 libxkbfile_la_LDFLAGS = -version-number 1:0:2 -no-undefined
 

commit d36a99d961c6649ca1b0319c2aadc6763edb07ad
Author: Adam Jackson <a...@redhat.com>
Date:   Fri May 8 14:15:21 2009 -0400

    Semi-revert 33b839e16fe681ba915658f824ceb1b252084ea4
    
    _XkbDupString() checks for NULL, strdup doesn't.  Still, implement in
    terms of real strdup and skip the calloc.

diff --git a/src/XKBfileInt.h b/src/XKBfileInt.h
index 5573638..a99b7c8 100644
--- a/src/XKBfileInt.h
+++ b/src/XKBfileInt.h
@@ -65,6 +65,12 @@
 
 _XFUNCPROTOBEGIN
 
+static inline
+char *_XkbDupString(const char *s)
+{
+    return s ? strdup(s) : NULL;
+}
+
 #define _XkbStrCaseEqual(s1,s2)        (_XkbStrCaseCmp(s1,s2)==0)
 
 #ifdef NEED_STRCASECMP
diff --git a/src/maprules.c b/src/maprules.c
index b6d773c..104dad3 100644
--- a/src/maprules.c
+++ b/src/maprules.c
@@ -449,8 +449,8 @@ Bool                append = False;
             }
             if (*words == '\0')
                 return False;
-            group->name = strdup(gname);
-            group->words = strdup(words);
+            group->name = _XkbDupString(gname);
+            group->words = _XkbDupString(words);
             for (i = 1, words = group->words; *words; words++) {
                  if ( *words == ' ') {
                      *words++ = '\0';
@@ -501,17 +501,17 @@ Bool              append = False;
         rule->flags|= XkbRF_Append;
     else
         rule->flags|= XkbRF_Normal;
-    rule->model= strdup(tmp.name[MODEL]);
-    rule->layout= strdup(tmp.name[LAYOUT]);
-    rule->variant= strdup(tmp.name[VARIANT]);
-    rule->option= strdup(tmp.name[OPTION]);
-
-    rule->keycodes= strdup(tmp.name[KEYCODES]);
-    rule->symbols= strdup(tmp.name[SYMBOLS]);
-    rule->types= strdup(tmp.name[TYPES]);
-    rule->compat= strdup(tmp.name[COMPAT]);
-    rule->geometry= strdup(tmp.name[GEOMETRY]);
-    rule->keymap= strdup(tmp.name[KEYMAP]);
+    rule->model= _XkbDupString(tmp.name[MODEL]);
+    rule->layout= _XkbDupString(tmp.name[LAYOUT]);
+    rule->variant= _XkbDupString(tmp.name[VARIANT]);
+    rule->option= _XkbDupString(tmp.name[OPTION]);
+
+    rule->keycodes= _XkbDupString(tmp.name[KEYCODES]);
+    rule->symbols= _XkbDupString(tmp.name[SYMBOLS]);
+    rule->types= _XkbDupString(tmp.name[TYPES]);
+    rule->compat= _XkbDupString(tmp.name[COMPAT]);
+    rule->geometry= _XkbDupString(tmp.name[GEOMETRY]);
+    rule->keymap= _XkbDupString(tmp.name[KEYMAP]);
 
     rule->layout_num = rule->variant_num = 0;
     for (i = 0; i < nread; i++) {
@@ -556,7 +556,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr 
defs)
 
    bzero((char *)mdefs,sizeof(XkbRF_MultiDefsRec));
    mdefs->model = defs->model;
-   mdefs->options = strdup(defs->options);
+   mdefs->options = _XkbDupString(defs->options);
    if (mdefs->options) squeeze_spaces(mdefs->options); 
 
    if (defs->layout) {
@@ -565,7 +565,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr 
defs)
        } else {
            char *p;
            int i;
-           mdefs->layout[1] = strdup(defs->layout);
+           mdefs->layout[1] = _XkbDupString(defs->layout);
           if (mdefs->layout[1] == NULL)
              return False;
            squeeze_spaces(mdefs->layout[1]);
@@ -589,7 +589,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr 
defs)
        } else {
            char *p;
            int i;
-           mdefs->variant[1] = strdup(defs->variant);
+           mdefs->variant[1] = _XkbDupString(defs->variant);
           if (mdefs->variant[1] == NULL)
              return False;
            squeeze_spaces(mdefs->variant[1]);
@@ -625,7 +625,7 @@ Apply(char *src, char **dst)
            *dst= _Concat(*dst, src);
         } else {
             if (*dst == NULL)
-               *dst= strdup(src);
+               *dst= _XkbDupString(src);
         }
     }
 }
@@ -1069,8 +1069,8 @@ XkbRF_AddVarDescCopy(XkbRF_DescribeVarsPtr 
vars,XkbRF_VarDescPtr from)
 XkbRF_VarDescPtr       nd;
 
     if ((nd=XkbRF_AddVarDesc(vars))!=NULL) {
-       nd->name= strdup(from->name);
-       nd->desc= strdup(from->desc);
+       nd->name= _XkbDupString(from->name);
+       nd->desc= _XkbDupString(from->desc);
     }
     return nd;
 }
@@ -1098,7 +1098,7 @@ XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules,char *name)
        rules->extra= NULL;
        return NULL;
     }
-    rules->extra_names[rules->num_extra]= strdup(name);
+    rules->extra_names[rules->num_extra]= _XkbDupString(name);
     bzero(&rules->extra[rules->num_extra],sizeof(XkbRF_DescribeVarsRec));
     return &rules->extra[rules->num_extra++];
 }
@@ -1389,30 +1389,30 @@ Status          rtrn;
     out=(char*)data;
     end=out+nitems;
     if (out && (*out) && rf_rtrn)
-        *rf_rtrn= strdup(out);
+        *rf_rtrn= _XkbDupString(out);
     out+=strlen(out)+1;
 
     if (out<end) {
        if (*out)
-           vd_rtrn->model= strdup(out);
+           vd_rtrn->model= _XkbDupString(out);
        out+=strlen(out)+1;
     }
 
     if (out<end) {
        if (*out)
-           vd_rtrn->layout= strdup(out);
+           vd_rtrn->layout= _XkbDupString(out);
        out+=strlen(out)+1;
     }
 
     if (out<end) {
        if (*out)
-           vd_rtrn->variant= strdup(out);
+           vd_rtrn->variant= _XkbDupString(out);
        out+=strlen(out)+1;
     }
 
     if (out<end) {
        if (*out)
-           vd_rtrn->options= strdup(out);
+           vd_rtrn->options= _XkbDupString(out);
        out+=strlen(out)+1;
     }
 
diff --git a/src/xkbconfig.c b/src/xkbconfig.c
index dd04e81..37272ce 100644
--- a/src/xkbconfig.c
+++ b/src/xkbconfig.c
@@ -377,7 +377,7 @@ XkbCFAddModByName(  XkbConfigRtrnPtr        rtrn,
            last->merge= merge;
            last->name= NULL;
        }
-       last->name= strdup(name);
+       last->name= _XkbDupString(name);
     }
     return last;
 }
@@ -501,7 +501,7 @@ unsigned            what;
            }
            if (*str!=NULL)
                _XkbFree(*str);
-           *str= strdup(val.str);
+           *str= _XkbDupString(val.str);
            break;
        case _XkbCF_InitialMods:
        case _XkbCF_IgnoreLockMods:
@@ -1060,7 +1060,7 @@ DefaultFinish(    XkbConfigFieldsPtr      fields,
        return DefaultCleanUp(rtrn);
     if (what==XkbCF_Check) {
        if ((rtrn->symbols==NULL)&&(rtrn->phys_symbols!=NULL))
-           rtrn->symbols= strdup(rtrn->phys_symbols);
+           rtrn->symbols= _XkbDupString(rtrn->phys_symbols);
     }
     if ((what==XkbCF_Apply)||(what==XkbCF_Check)) {
        if (xkb && xkb->names && (rtrn->num_unbound_mods>0))
diff --git a/src/xkmread.c b/src/xkmread.c
index b746ce8..bf46bec 100644
--- a/src/xkmread.c
+++ b/src/xkmread.c
@@ -779,9 +779,9 @@ int         nRead=0;
            doodad->text.height= doodadWire.text.height;
            doodad->text.color_ndx= doodadWire.text.color_ndx;
            nRead+= XkmGetCountedString(file,buf,100);
-           doodad->text.text= strdup(buf);
+           doodad->text.text= _XkbDupString(buf);
            nRead+= XkmGetCountedString(file,buf,100);
-           doodad->text.font= strdup(buf);
+           doodad->text.font= _XkbDupString(buf);
            break;
        case XkbIndicatorDoodad:
            doodad->indicator.shape_ndx= doodadWire.indicator.shape_ndx;
@@ -793,7 +793,7 @@ int         nRead=0;
            doodad->logo.color_ndx= doodadWire.logo.color_ndx;
            doodad->logo.shape_ndx= doodadWire.logo.shape_ndx;
            nRead+= XkmGetCountedString(file,buf,100);
-           doodad->logo.logo_name= strdup(buf);
+           doodad->logo.logo_name= _XkbDupString(buf);
            break;
        default:
            /* report error? */
@@ -957,7 +957,7 @@ XkbGeometrySizesRec sizes;
     geom->width_mm= wireGeom.width_mm;
     geom->height_mm= wireGeom.height_mm;
     nRead+= XkmGetCountedString(file,buf,100);
-    geom->label_font= strdup(buf);
+    geom->label_font= _XkbDupString(buf);
     if (wireGeom.num_properties>0) {
        char val[1024];
        for (i=0;i<wireGeom.num_properties;i++) {
@@ -1213,7 +1213,7 @@ char              name[100];
                return NULL;
            }
            if (XkmGetCountedString(file,name,100)>0)
-               return strdup(name);
+               return _XkbDupString(name);
            break;
        default:
            _XkbLibError(_XkbErrBadImplementation,

commit 29f27b16dbe511a27a0e953b32913f9d9bf24f2d
Author: Adam Jackson <a...@redhat.com>
Date:   Thu May 7 16:59:59 2009 -0400

    Use flockfile if available.
    
    Not really a huge improvement, but we might as well.

diff --git a/configure.ac b/configure.ac
index df2c072..3a3822b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,7 +38,9 @@ AC_PROG_LIBTOOL
 XORG_CWARNFLAGS
 
 AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
-                                        [Do not have `strcasecmp'.]))
+                                        [Do not have 'strcasecmp'.]))
+AC_CHECK_FUNC(getc_unlocked, AC_DEFINE([HAVE_UNLOCKED_STDIO], 1,
+                                      ['Unlocked stdio']), [])
 
 # Check for dependencies
 PKG_CHECK_MODULES(XKBFILE, x11 kbproto)
diff --git a/src/maprules.c b/src/maprules.c
index cfc4d6d..b6d773c 100644
--- a/src/maprules.c
+++ b/src/maprules.c
@@ -137,6 +137,14 @@ InputLineAddChar(InputLine *line,int ch)
                                (int)((l)->line[(l)->num_line++]= (c)):\
                                InputLineAddChar(l,c))
 
+#ifdef HAVE_UNLOCKED_STDIO
+#undef getc
+#define getc(x) getc_unlocked(x)
+#else
+#define flockfile(x) do {} while (0)
+#define funlockfile(x) do {} while (0)
+#endif
+
 static Bool
 GetInputLine(FILE *file,InputLine *line,Bool checkbang)
 {
@@ -144,6 +152,7 @@ int ch;
 Bool   endOfFile,spacePending,slashPending,inComment;
 
      endOfFile= False;
+     flockfile(file);
      while ((!endOfFile)&&(line->num_line==0)) {
        spacePending= slashPending= inComment= False;
        while (((ch=getc(file))!='\n')&&(ch!=EOF)) {
@@ -208,6 +217,7 @@ Bool        endOfFile,spacePending,slashPending,inComment;
             endOfFile= True;
 /*     else line->num_line++;*/
      }
+     funlockfile(file);
      if ((line->num_line==0)&&(endOfFile))
        return False;
       ADD_CHAR(line,'\0');

commit 33b839e16fe681ba915658f824ceb1b252084ea4
Author: Adam Jackson <a...@redhat.com>
Date:   Thu May 7 16:31:39 2009 -0400

    s/_XkbDupString/strdup/
    
    Super special bonus lols edition: _XkbDupString would allocate the new
    string with calloc, just to be extra sure.

diff --git a/src/XKBfileInt.h b/src/XKBfileInt.h
index 7eb81a0..5573638 100644
--- a/src/XKBfileInt.h
+++ b/src/XKBfileInt.h
@@ -30,6 +30,7 @@
 /* $XFree86$ */
 
 #include "XKBfile.h"
+#include <string.h>
 
 #ifdef DEBUG
 #define        _XkbLibError(c,l,d) \
@@ -64,10 +65,6 @@
 
 _XFUNCPROTOBEGIN
 
-extern char *  _XkbDupString(
-       char *  /* old_str */
-);
-
 #define _XkbStrCaseEqual(s1,s2)        (_XkbStrCaseCmp(s1,s2)==0)
 
 #ifdef NEED_STRCASECMP
diff --git a/src/maprules.c b/src/maprules.c
index 6060a03..cfc4d6d 100644
--- a/src/maprules.c
+++ b/src/maprules.c
@@ -439,8 +439,8 @@ Bool                append = False;
             }
             if (*words == '\0')
                 return False;
-            group->name = _XkbDupString(gname);
-            group->words = _XkbDupString(words);
+            group->name = strdup(gname);
+            group->words = strdup(words);
             for (i = 1, words = group->words; *words; words++) {
                  if ( *words == ' ') {
                      *words++ = '\0';
@@ -491,17 +491,17 @@ Bool              append = False;
         rule->flags|= XkbRF_Append;
     else
         rule->flags|= XkbRF_Normal;
-    rule->model= _XkbDupString(tmp.name[MODEL]);
-    rule->layout= _XkbDupString(tmp.name[LAYOUT]);
-    rule->variant= _XkbDupString(tmp.name[VARIANT]);
-    rule->option= _XkbDupString(tmp.name[OPTION]);
-
-    rule->keycodes= _XkbDupString(tmp.name[KEYCODES]);
-    rule->symbols= _XkbDupString(tmp.name[SYMBOLS]);
-    rule->types= _XkbDupString(tmp.name[TYPES]);
-    rule->compat= _XkbDupString(tmp.name[COMPAT]);
-    rule->geometry= _XkbDupString(tmp.name[GEOMETRY]);
-    rule->keymap= _XkbDupString(tmp.name[KEYMAP]);
+    rule->model= strdup(tmp.name[MODEL]);
+    rule->layout= strdup(tmp.name[LAYOUT]);
+    rule->variant= strdup(tmp.name[VARIANT]);
+    rule->option= strdup(tmp.name[OPTION]);
+
+    rule->keycodes= strdup(tmp.name[KEYCODES]);
+    rule->symbols= strdup(tmp.name[SYMBOLS]);
+    rule->types= strdup(tmp.name[TYPES]);
+    rule->compat= strdup(tmp.name[COMPAT]);
+    rule->geometry= strdup(tmp.name[GEOMETRY]);
+    rule->keymap= strdup(tmp.name[KEYMAP]);
 
     rule->layout_num = rule->variant_num = 0;
     for (i = 0; i < nread; i++) {
@@ -546,7 +546,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr 
defs)
 
    bzero((char *)mdefs,sizeof(XkbRF_MultiDefsRec));
    mdefs->model = defs->model;
-   mdefs->options = _XkbDupString(defs->options);
+   mdefs->options = strdup(defs->options);
    if (mdefs->options) squeeze_spaces(mdefs->options); 
 
    if (defs->layout) {
@@ -555,7 +555,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr 
defs)
        } else {
            char *p;
            int i;
-           mdefs->layout[1] = _XkbDupString(defs->layout);
+           mdefs->layout[1] = strdup(defs->layout);
           if (mdefs->layout[1] == NULL)
              return False;
            squeeze_spaces(mdefs->layout[1]);
@@ -579,7 +579,7 @@ MakeMultiDefs(XkbRF_MultiDefsPtr mdefs, XkbRF_VarDefsPtr 
defs)
        } else {
            char *p;
            int i;
-           mdefs->variant[1] = _XkbDupString(defs->variant);
+           mdefs->variant[1] = strdup(defs->variant);
           if (mdefs->variant[1] == NULL)
              return False;
            squeeze_spaces(mdefs->variant[1]);
@@ -615,7 +615,7 @@ Apply(char *src, char **dst)
            *dst= _Concat(*dst, src);
         } else {
             if (*dst == NULL)
-               *dst= _XkbDupString(src);
+               *dst= strdup(src);
         }
     }
 }
@@ -1059,8 +1059,8 @@ XkbRF_AddVarDescCopy(XkbRF_DescribeVarsPtr 
vars,XkbRF_VarDescPtr from)
 XkbRF_VarDescPtr       nd;
 
     if ((nd=XkbRF_AddVarDesc(vars))!=NULL) {
-       nd->name= _XkbDupString(from->name);
-       nd->desc= _XkbDupString(from->desc);
+       nd->name= strdup(from->name);
+       nd->desc= strdup(from->desc);
     }
     return nd;
 }
@@ -1088,7 +1088,7 @@ XkbRF_AddVarToDescribe(XkbRF_RulesPtr rules,char *name)
        rules->extra= NULL;
        return NULL;
     }
-    rules->extra_names[rules->num_extra]= _XkbDupString(name);
+    rules->extra_names[rules->num_extra]= strdup(name);
     bzero(&rules->extra[rules->num_extra],sizeof(XkbRF_DescribeVarsRec));
     return &rules->extra[rules->num_extra++];
 }
@@ -1379,30 +1379,30 @@ Status          rtrn;
     out=(char*)data;
     end=out+nitems;
     if (out && (*out) && rf_rtrn)
-        *rf_rtrn= _XkbDupString(out);
+        *rf_rtrn= strdup(out);
     out+=strlen(out)+1;
 
     if (out<end) {
        if (*out)
-           vd_rtrn->model= _XkbDupString(out);
+           vd_rtrn->model= strdup(out);
        out+=strlen(out)+1;
     }
 
     if (out<end) {
        if (*out)
-           vd_rtrn->layout= _XkbDupString(out);
+           vd_rtrn->layout= strdup(out);
        out+=strlen(out)+1;
     }
 
     if (out<end) {
        if (*out)
-           vd_rtrn->variant= _XkbDupString(out);
+           vd_rtrn->variant= strdup(out);
        out+=strlen(out)+1;
     }
 
     if (out<end) {
        if (*out)
-           vd_rtrn->options= _XkbDupString(out);
+           vd_rtrn->options= strdup(out);
        out+=strlen(out)+1;
     }
 
diff --git a/src/xkbconfig.c b/src/xkbconfig.c
index 37272ce..dd04e81 100644
--- a/src/xkbconfig.c
+++ b/src/xkbconfig.c
@@ -377,7 +377,7 @@ XkbCFAddModByName(  XkbConfigRtrnPtr        rtrn,
            last->merge= merge;
            last->name= NULL;
        }
-       last->name= _XkbDupString(name);
+       last->name= strdup(name);
     }
     return last;
 }
@@ -501,7 +501,7 @@ unsigned            what;
            }
            if (*str!=NULL)
                _XkbFree(*str);
-           *str= _XkbDupString(val.str);
+           *str= strdup(val.str);
            break;
        case _XkbCF_InitialMods:
        case _XkbCF_IgnoreLockMods:
@@ -1060,7 +1060,7 @@ DefaultFinish(    XkbConfigFieldsPtr      fields,
        return DefaultCleanUp(rtrn);
     if (what==XkbCF_Check) {
        if ((rtrn->symbols==NULL)&&(rtrn->phys_symbols!=NULL))
-           rtrn->symbols= _XkbDupString(rtrn->phys_symbols);
+           rtrn->symbols= strdup(rtrn->phys_symbols);
     }
     if ((what==XkbCF_Apply)||(what==XkbCF_Check)) {
        if (xkb && xkb->names && (rtrn->num_unbound_mods>0))
diff --git a/src/xkmread.c b/src/xkmread.c
index 91bfa7b..b746ce8 100644
--- a/src/xkmread.c
+++ b/src/xkmread.c
@@ -76,19 +76,6 @@ XkbInternAtom(Display *dpy,char *str,Bool only_if_exists)
 #define        SEEK_SET 0
 #endif
 
-char *
-_XkbDupString(char *str)
-{
-char *new;
-   
-   if (str==NULL)
-       return NULL;
-   new= (char *)_XkbCalloc(strlen(str)+1,sizeof(char));
-   if (new)
-       strcpy(new,str);
-   return new;
-}
-
 /***====================================================================***/
 
 static XPointer
@@ -792,9 +779,9 @@ int         nRead=0;
            doodad->text.height= doodadWire.text.height;
            doodad->text.color_ndx= doodadWire.text.color_ndx;
            nRead+= XkmGetCountedString(file,buf,100);
-           doodad->text.text= _XkbDupString(buf);
+           doodad->text.text= strdup(buf);
            nRead+= XkmGetCountedString(file,buf,100);
-           doodad->text.font= _XkbDupString(buf);
+           doodad->text.font= strdup(buf);
            break;
        case XkbIndicatorDoodad:
            doodad->indicator.shape_ndx= doodadWire.indicator.shape_ndx;
@@ -806,7 +793,7 @@ int         nRead=0;
            doodad->logo.color_ndx= doodadWire.logo.color_ndx;
            doodad->logo.shape_ndx= doodadWire.logo.shape_ndx;
            nRead+= XkmGetCountedString(file,buf,100);
-           doodad->logo.logo_name= _XkbDupString(buf);
+           doodad->logo.logo_name= strdup(buf);
            break;
        default:
            /* report error? */
@@ -970,7 +957,7 @@ XkbGeometrySizesRec sizes;
     geom->width_mm= wireGeom.width_mm;
     geom->height_mm= wireGeom.height_mm;
     nRead+= XkmGetCountedString(file,buf,100);
-    geom->label_font= _XkbDupString(buf);
+    geom->label_font= strdup(buf);
     if (wireGeom.num_properties>0) {
        char val[1024];
        for (i=0;i<wireGeom.num_properties;i++) {
@@ -1226,7 +1213,7 @@ char              name[100];
                return NULL;
            }
            if (XkmGetCountedString(file,name,100)>0)
-               return _XkbDupString(name);
+               return strdup(name);
            break;
        default:
            _XkbLibError(_XkbErrBadImplementation,

commit 4f8dd1aa10a36700bf1f2b05931cd29151b9fee4
Author: Alan Coopersmith <alan.coopersm...@sun.com>
Date:   Mon Feb 2 20:34:39 2009 -0800

    Add README with pointers to mailing list, bugzilla & git repos
    
    Signed-off-by: Alan Coopersmith <alan.coopersm...@sun.com>

diff --git a/README b/README
index e69de29..84be6b3 100644
--- a/README
+++ b/README
@@ -0,0 +1,24 @@
+
+All questions regarding this software should be directed at the
+Xorg mailing list:
+
+        http://lists.freedesktop.org/mailman/listinfo/xorg
+
+Please submit bug reports to the Xorg bugzilla:
+
+        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg
+
+The master development code repository can be found at:
+
+        git://anongit.freedesktop.org/git/xorg/lib/libxkbfile
+
+        http://cgit.freedesktop.org/xorg/lib/libxkbfile
+
+For patch submission instructions, see:
+
+       http://www.x.org/wiki/Development/Documentation/SubmittingPatches
+
+For more information on the git code manager, see:
+
+        http://wiki.x.org/wiki/GitPage
+

commit d17cd6e80f1ec78b69ba11ee55465420e6d7e9a9
Author: Paulo Cesar Pereira de Andrade <p...@mandriva.com.br>
Date:   Thu Jan 29 19:52:34 2009 -0200

    Janitor: distcheck, compiler warnings, .gitignore.

diff --git a/.gitignore b/.gitignore
index 9a1dc8e..76d2892 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+.deps
+.libs
 aclocal.m4
 autom4te.cache
 compile
@@ -20,3 +22,9 @@ mkinstalldirs
 stamp-h1
 xkbfile.pc
 *~
+*.o
+*.la
+*.lo
+libxkbfile-*.tar.*
+ChangeLog
+tags
diff --git a/Makefile.am b/Makefile.am
index 14028f2..0f095e8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -24,14 +24,12 @@ SUBDIRS = src
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = xkbfile.pc
 
-EXTRA_DIST = xkbfile.pc.in autogen.sh
-
-EXTRA_DIST += ChangeLog
+EXTRA_DIST = xkbfile.pc.in ChangeLog
 MAINTAINERCLEANFILES = ChangeLog
 
 .PHONY: ChangeLog
 
 ChangeLog:
-       (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv 
.changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git 
directory not found: installing possibly empty changelog.' >&2)
+       $(CHANGELOG_CMD)
 
 dist-hook: ChangeLog
diff --git a/configure.ac b/configure.ac
index fc8b8c3..df2c072 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,22 +27,27 @@ AC_INIT(libxkbfile, 1.0.5, 
[https://bugs.freedesktop.org/enter_bug.cgi?product=x
 AM_INIT_AUTOMAKE([dist-bzip2])
 AM_MAINTAINER_MODE
 
+# Require xorg-macros: XORG_CWARNFLAGS, XORG_CHANGELOG
+m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or 
later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.2)
 AM_CONFIG_HEADER(config.h)
 
 # Check for progs
 AC_PROG_CC
 AC_PROG_LIBTOOL
+XORG_CWARNFLAGS
 
 AC_CHECK_FUNC(strcasecmp, [], AC_DEFINE([NEED_STRCASECMP], 1,
                                         [Do not have `strcasecmp'.]))
 
 # Check for dependencies
 PKG_CHECK_MODULES(XKBFILE, x11 kbproto)
-
+XKBFILE_CFLAGS="$CWARNFLAGS $XKBFILE_CFLAGS"
 AC_SUBST(XKBFILE_CFLAGS)
 AC_SUBST(XKBFILE_LIBS)
                  
 XORG_RELEASE_VERSION
+XORG_CHANGELOG
 
 AC_OUTPUT([Makefile
           src/Makefile
diff --git a/include/X11/.gitignore b/include/X11/.gitignore
deleted file mode 100644
index f427429..0000000
--- a/include/X11/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-extensions
diff --git a/src/.gitignore b/src/.gitignore
deleted file mode 100644
index fc50197..0000000
--- a/src/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.deps
-.libs
-libxkbfile.la
-*.lo
-Makefile
-Makefile.in
diff --git a/src/xkbatom.c b/src/xkbatom.c
index 24bdcd7..4fca90c 100644
--- a/src/xkbatom.c
+++ b/src/xkbatom.c
@@ -178,8 +178,8 @@ static char *
 _XkbNameForAtom(Atom atom)
 {
     NodePtr node;
-    if (atom > lastAtom) return 0;
-    if ((node = nodeTable[atom]) == (NodePtr)NULL) return 0;
+    if (atom > lastAtom) return NULL;
+    if ((node = nodeTable[atom]) == (NodePtr)NULL) return NULL;
     return strdup(node->string);
 }
 
diff --git a/src/xkbconfig.c b/src/xkbconfig.c
index 7930979..37272ce 100644
--- a/src/xkbconfig.c
+++ b/src/xkbconfig.c
@@ -340,7 +340,7 @@ XkbCFAddModByName(  XkbConfigRtrnPtr        rtrn,
                                                  XkbConfigUnboundModRec);
        if (rtrn->unbound_mods==NULL) {
            rtrn->error= XkbCF_BadAlloc;
-           return False;
+           return NULL;
        }
     }
     if (last==NULL) {
diff --git a/src/xkberrs.c b/src/xkberrs.c
index 1b856bc..a3ad52d 100644
--- a/src/xkberrs.c
+++ b/src/xkberrs.c
@@ -36,6 +36,13 @@
 #include <ctype.h>
 #include <stdlib.h>
 
+#include <X11/Xproto.h>
+#include <X11/Xlib.h>
+#include <X11/Xos.h>
+#include <X11/Xfuncs.h>
+#include <X11/XKBlib.h>
+#include <X11/extensions/XKBfile.h>
+
 char *         _XkbErrMessages[] = {
        "success",                              /* _XkbSuccess               */
        "key names not defined",                /* _XkbErrMissingNames       */
diff --git a/src/xkmread.c b/src/xkmread.c
index f22941f..91bfa7b 100644
--- a/src/xkmread.c
+++ b/src/xkmread.c
@@ -1208,7 +1208,7 @@ xkmSectionInfo    tmpTOC;
 char           name[100];
 
     if ((!file)||(!toc))
-       return 0;
+       return NULL;
     switch (toc->type) {
        case XkmVirtualModsIndex:
        case XkmIndicatorsIndex:
@@ -1223,7 +1223,7 @@ char              name[100];
            if ((tmpTOC.type!=toc->type)||(tmpTOC.format!=toc->format)||
                (tmpTOC.size!=toc->size)||(tmpTOC.offset!=toc->offset)) {
                _XkbLibError(_XkbErrIllegalContents,"XkmReadFileSectionName",0);
-               return 0;
+               return NULL;
            }
            if (XkmGetCountedString(file,name,100)>0)
                return _XkbDupString(name);

commit dd9514fe714d81b881a1bd6bd88d4287adc5fc7e
Author: Kees Cook <kees.c...@canonical.com>
Date:   Tue Jan 13 15:40:37 2009 -0800

    Fix static buffer overflow in "xkbcomp -C :0"
    
    This patch uses dynamically allocated strings instead of the fixed-length
    buffers to avoid stack overflows.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=19490
    https://bugs.launchpad.net/ubuntu/+source/x11-xkb-utils/+bug/309013
    
    Signed-off-by: Kees Cook <kees.c...@canonical.com>
    Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net>

diff --git a/src/cout.c b/src/cout.c
index 161bd0f..70aa370 100644
--- a/src/cout.c
+++ b/src/cout.c
@@ -132,13 +132,17 @@ WriteTypeInitFunc(FILE *file,Display *dpy,XkbDescPtr xkb)
 register unsigned      i,n;
 XkbKeyTypePtr          type;
 Atom *                 names;
-char                   prefix[32];
+char *                 prefix = NULL;
 
     fprintf(file,"\n\nstatic void\n");
     fprintf(file,"initTypeNames(DPYTYPE dpy)\n");
     fprintf(file,"{\n");
     for (i=0,type=xkb->map->types;i<xkb->map->num_types;i++,type++) {
-       strcpy(prefix,XkbAtomText(dpy,type->name,XkbCFile));
+       if (!(prefix = strdup(XkbAtomText(dpy,type->name,XkbCFile)))) {
+               _XkbLibError(_XkbErrBadAlloc,"WriteTypeInitFunc",0);
+               fprintf(file,"#error XkbErrBadAlloc WriteTypeInitFunc\n");
+               break;
+       }
        if (type->name!=None)
            fprintf(file,"    dflt_types[%d].name= GET_ATOM(dpy,\"%s\");\n",i,
                                        XkbAtomText(dpy,type->name,XkbCFile));
@@ -155,6 +159,8 @@ char                        prefix[32];
                fprintf(file,"GET_ATOM(dpy,\"%s\");\n",tmp);
            }
        }
+       free(prefix);
+       prefix = NULL;
     }
     fprintf(file,"}\n");
     return;
@@ -166,7 +172,7 @@ WriteCHdrKeyTypes(FILE *file,Display *dpy,XkbDescPtr xkb)
 register unsigned      i,n;
 XkbClientMapPtr                map;
 XkbKeyTypePtr          type;
-char                   prefix[32];
+char *                         prefix = NULL;
 
     if ((!xkb)||(!xkb->map)||(!xkb->map->types)) {
        _XkbLibError(_XkbErrMissingTypes,"WriteCHdrKeyTypes",0);
@@ -182,7 +188,10 @@ char                       prefix[32];
                                XkbAtomText(dpy,xkb->names->types,XkbCFile));
     }
     for (i=0,type=map->types;i<map->num_types;i++,type++) {
-       strcpy(prefix,XkbAtomText(dpy,type->name,XkbCFile));
+       if (!(prefix = strdup(XkbAtomText(dpy,type->name,XkbCFile)))) {
+               _XkbLibError(_XkbErrBadAlloc,"WriteCHdrKeyTypes",0);
+               return False;
+       }
 
        if (type->map_count>0) {
            XkbKTMapEntryPtr    entry;
@@ -209,10 +218,15 @@ char                      prefix[32];
                                                         type->num_levels);
        }
        fprintf(file,"\n");
+       free(prefix);
+       prefix = NULL;
     }
     fprintf(file,"static XkbKeyTypeRec dflt_types[]= {\n");
     for (i=0,type=map->types;i<(unsigned)map->num_types;i++,type++) {
-       strcpy(prefix,XkbAtomText(dpy,type->name,XkbCFile));
+       if (!(prefix = strdup(XkbAtomText(dpy,type->name,XkbCFile)))) {
+               _XkbLibError(_XkbErrBadAlloc,"WriteCHdrKeyTypes",0);
+               return False;
+       }
        if (i!=0)       fprintf(file,",\n");
        fprintf(file,"    {\n   { %15s, %15s, %15s },\n",
                        XkbModMaskText(type->mods.mask,XkbCFile),
@@ -229,6 +243,8 @@ char                        prefix[32];
        if (type->level_names!=NULL)
             fprintf(file,"     None,   lnames_%s\n    }",prefix);
        else fprintf(file,"     None,   NULL\n    }");
+       free(prefix);
+       prefix = NULL;
     }
     fprintf(file,"\n};\n");
     fprintf(file,"#define num_dflt_types 
(sizeof(dflt_types)/sizeof(XkbKeyTypeRec))\n");

commit e695be2ab7eb1361b204f98c3da872eff58ad6b5
Author: Alexey Ten <alexeyten+git...@gmail.com>
Date:   Thu Jan 15 01:39:01 2009 +0300

    Apply partial matches for option (#19563)
    
    Rules which match star (*) and option, like one below, should be applied
    
    layout[2] option    = symbols
    *         misc:typo = +typo(base)
    
    X.Org bug 19563 <http://bugs.freedesktop.org/show_bug.cgi?id=19563>
    
    Signed-off-by: Sergey V. Udaltsov <s...@gnome.org>

diff --git a/src/maprules.c b/src/maprules.c
index ab164c6..6060a03 100644
--- a/src/maprules.c
+++ b/src/maprules.c
@@ -891,6 +891,7 @@ XkbRF_GetComponents(        XkbRF_RulesPtr          rules,
     XkbRF_CheckApplyRules(rules, &mdefs, names, XkbRF_Append);
     XkbRF_ApplyPartialMatches(rules, names);
     XkbRF_CheckApplyRules(rules, &mdefs, names, XkbRF_Option);
+    XkbRF_ApplyPartialMatches(rules, names);
 
     if (names->keycodes)
        names->keycodes= XkbRF_SubstituteVars(names->keycodes, &mdefs);


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to