diff --git a/xorg-server-option_libxf86config.diff b/xorg-server-option_libxf86config.diff new file mode 100644 index 0000000..8b5a76f --- /dev/null +++ b/xorg-server-option_libxf86config.diff @@ -0,0 +1,91 @@ +--- hw/xfree86/parser/InputClass.c ++++ hw/xfree86/parser/InputClass.c +@@ -61,6 +61,47 @@ + + #define TOKEN_SEP "|" + ++/* ++ * Tokenize a string into a NULL terminated array of strings. Always returns ++ * an allocated array unless an error occurs. ++ */ ++char** ++m_xstrtokenize(const char *str, const char *separators) ++{ ++ char **list, **nlist; ++ char *tok, *tmp; ++ unsigned num = 0, n; ++ ++ if (!str) ++ return NULL; ++ list = calloc(1, sizeof(*list)); ++ if (!list) ++ return NULL; ++ tmp = strdup(str); ++ if (!tmp) ++ goto error; ++ for (tok = strtok(tmp, separators); tok; tok = strtok(NULL, separators)) { ++ nlist = realloc(list, (num + 2) * sizeof(*list)); ++ if (!nlist) ++ goto error; ++ list = nlist; ++ list[num] = strdup(tok); ++ if (!list[num]) ++ goto error; ++ list[++num] = NULL; ++ } ++ free(tmp); ++ return list; ++ ++error: ++ free(tmp); ++ for (n = 0; n < num; n++) ++ free(list[n]); ++ free(list); ++ return NULL; ++} ++ ++ + XF86ConfInputClassPtr + xf86parseInputClassSection(void) + { +@@ -96,22 +137,22 @@ + case MATCH_PRODUCT: + if (xf86getSubToken(&(ptr->comment)) != STRING) + Error(QUOTE_MSG, "MatchProduct"); +- ptr->match_product = xstrtokenize(val.str, TOKEN_SEP); ++ ptr->match_product = m_xstrtokenize(val.str, TOKEN_SEP); + break; + case MATCH_VENDOR: + if (xf86getSubToken(&(ptr->comment)) != STRING) + Error(QUOTE_MSG, "MatchVendor"); +- ptr->match_vendor = xstrtokenize(val.str, TOKEN_SEP); ++ ptr->match_vendor = m_xstrtokenize(val.str, TOKEN_SEP); + break; + case MATCH_DEVICE_PATH: + if (xf86getSubToken(&(ptr->comment)) != STRING) + Error(QUOTE_MSG, "MatchDevicePath"); +- ptr->match_device = xstrtokenize(val.str, TOKEN_SEP); ++ ptr->match_device = m_xstrtokenize(val.str, TOKEN_SEP); + break; + case MATCH_TAG: + if (xf86getSubToken(&(ptr->comment)) != STRING) + Error(QUOTE_MSG, "MatchTag"); +- ptr->match_tag = xstrtokenize(val.str, TOKEN_SEP); ++ ptr->match_tag = m_xstrtokenize(val.str, TOKEN_SEP); + break; + case MATCH_IS_KEYBOARD: + if (xf86getSubToken(&(ptr->comment)) != STRING) +--- hw/xfree86/parser/Layout.c ++++ hw/xfree86/parser/Layout.c +@@ -449,7 +449,10 @@ + /* add all AutoServerLayout devices to the server layout */ + while (input) + { +- if (xf86CheckBoolOption(input->inp_option_lst, "AutoServerLayout", FALSE)) ++ Bool asl_value = FALSE; ++ char *s = xf86findOptionValue(input->inp_option_lst ,"AutoServerLayout"); ++ Bool asl_found = xf86getBoolValue(&asl_value, s); ++ if (asl_found == TRUE && asl_value == TRUE) + { + XF86ConfInputrefPtr iref = layout->lay_input_lst; + diff --git a/xorg-x11-server.changes b/xorg-x11-server.changes index 0e89235..10c711c 100644 --- a/xorg-x11-server.changes +++ b/xorg-x11-server.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Tue Apr 6 20:48:21 CEST 2010 - ro@suse.de + +- fix libxf86config (resolve references) + ------------------------------------------------------------------- Tue Apr 6 18:20:00 CEST 2010 - sndirsch@suse.de diff --git a/xorg-x11-server.spec b/xorg-x11-server.spec index 919a28b..0e87827 100644 --- a/xorg-x11-server.spec +++ b/xorg-x11-server.spec @@ -127,6 +127,7 @@ Patch203: 0001-Fix-segfault-when-killing-X-with-ctrl-alt-backspace.patch Patch204: missing_font_paths.diff Patch205: xorg-server-1.8.0.diff Patch206: fix_fglrx_screendepth_issue.patch +Patch207: xorg-server-option_libxf86config.diff %description This package contains the X.Org Server. @@ -251,6 +252,7 @@ popd %patch204 -p0 %patch205 -p0 %patch206 -p0 +%patch207 -p0 %build pushd xorg-docs-* @@ -320,7 +322,7 @@ autoreconf -fi --with-xkb-path="/usr/share/X11/xkb" \ --with-xkb-output="/var/lib/xkb/compiled" #make %{?jobs:-j %jobs} -make +make V=1 make -C hw/kdrive %{?jobs:-j %jobs} %install