[prev in list] [next in list] [prev in thread] [next in thread]
List: freedesktop-xorg-devel
Subject: [PATCH xserver] config: Support multiple 'Files' sections
From: Michał Górny <mgorny () gentoo ! org>
Date: 2015-02-26 21:55:11
Message-ID: 1424987711-12013-1-git-send-email-mgorny () gentoo ! org
[Download RAW message or body]
Support reading multiple 'Files' sections in configuration,
concatenating the resulting paths. This makes it possible to add
ModulePaths and FontPaths within xorg.conf.d/ files without interfering
with user-provided xorg.conf. Gentoo needs this to support using
replacement xorg modules provided by proprietary video drivers.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=88003
Signed-off-by: Michał Górny <mgorny@gentoo.org>
---
[not subscribed, please CC me on replies]
hw/xfree86/parser/Files.c | 8 ++++++--
hw/xfree86/parser/configProcs.h | 2 +-
hw/xfree86/parser/read.c | 2 +-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/hw/xfree86/parser/Files.c b/hw/xfree86/parser/Files.c
index 849bf92..5cc3ec7 100644
--- a/hw/xfree86/parser/Files.c
+++ b/hw/xfree86/parser/Files.c
@@ -76,14 +76,18 @@ static xf86ConfigSymTabRec FilesTab[] = {
#define CLEANUP xf86freeFiles
XF86ConfFilesPtr
-xf86parseFilesSection(void)
+xf86parseFilesSection(XF86ConfFilesPtr ptr)
{
int i, j;
int k, l;
char *str;
int token;
- parsePrologue(XF86ConfFilesPtr, XF86ConfFilesRec)
+ if (!ptr) {
+ if( (ptr=calloc(1,sizeof(XF86ConfFilesRec))) == NULL ) {
+ return NULL;
+ }
+ }
while ((token = xf86getToken(FilesTab)) != ENDSECTION) {
switch (token) {
diff --git a/hw/xfree86/parser/configProcs.h b/hw/xfree86/parser/configProcs.h
index 774e2a2..b9fdebb 100644
--- a/hw/xfree86/parser/configProcs.h
+++ b/hw/xfree86/parser/configProcs.h
@@ -37,7 +37,7 @@ void xf86freeDeviceList(XF86ConfDevicePtr ptr);
int xf86validateDevice(XF86ConfigPtr p);
/* Files.c */
-XF86ConfFilesPtr xf86parseFilesSection(void);
+XF86ConfFilesPtr xf86parseFilesSection(XF86ConfFilesPtr ptr);
void xf86printFileSection(FILE * cf, XF86ConfFilesPtr ptr);
void xf86freeFiles(XF86ConfFilesPtr p);
diff --git a/hw/xfree86/parser/read.c b/hw/xfree86/parser/read.c
index 327c02a..e0d6139 100644
--- a/hw/xfree86/parser/read.c
+++ b/hw/xfree86/parser/read.c
@@ -110,7 +110,7 @@ xf86readConfigFile(void)
if (xf86nameCompare(xf86_lex_val.str, "files") == 0) {
free(xf86_lex_val.str);
xf86_lex_val.str = NULL;
- HANDLE_RETURN(conf_files, xf86parseFilesSection());
+ HANDLE_RETURN(conf_files, xf86parseFilesSection(ptr->conf_files));
}
else if (xf86nameCompare(xf86_lex_val.str, "serverflags") == 0) {
free(xf86_lex_val.str);
--
2.3.0
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic