libxkbfile: Changes to 'upstream-unstable'
.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.coopersmith@sun.com>
Date: Tue Oct 6 17:08:58 2009 -0700
libxkbfile 1.0.6
Signed-off-by: Alan Coopersmith <alan.coopersmith@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.coopersmith@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.coopersmith@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 <ajax@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 <ajax@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 <ajax@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.coopersmith@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.coopersmith@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 <pcpa@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.cook@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.cook@canonical.com>
Signed-off-by: Peter Hutterer <peter.hutterer@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+github@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 <svu@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);
Reply to: