.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