Sophie

Sophie

distrib > Mageia > 1 > i586 > media > core-updates-src > by-pkgid > 945b24a93bcf61394379dbe410f6e2ee > files > 6

x11-server-1.10.1-1.1.mga1.src.rpm

From 5ad3ada618ebdffcacc4d635d0476388227eeda5 Mon Sep 17 00:00:00 2001
From: Ander Conselvan de Oliveira <ander@localhost.(none)>
Date: Thu, 12 Mar 2009 09:45:57 -0300
Subject: [PATCH 905/908] Xorg: add an extra module path

If the extra module path is not an empty string (the default value),
module path will be searched first in the extra module path and then in
the default module path. This should simplify the alternatives system
used on Mandriva's fglrx package.
---
 configure.ac                    |    5 +++++
 hw/xfree86/common/xf86Config.c  |   14 ++++++++++++--
 hw/xfree86/common/xf86Globals.c |    1 +
 hw/xfree86/common/xf86Priv.h    |    1 +
 include/xorg-config.h.in        |    3 +++
 5 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index 91db419..19cdd76 100644
--- a/configure.ac
+++ b/configure.ac
@@ -489,6 +489,10 @@ AC_ARG_WITH(module-dir,      AS_HELP_STRING([--with-module-dir=DIR],
 				  [Directory where modules are installed (default: $libdir/xorg/modules)]),
 				[ moduledir="$withval" ],
 				[ moduledir="${libdir}/xorg/modules" ])
+AC_ARG_WITH(extra-module-dir,AS_HELP_STRING([--with-extra-module-dir=DIR],
+				  [Extra module directory to search for modules before the default one (default: empty)]),
+				[ extra_moduledir="$withval" ],
+				[ extra_moduledir="" ])
 AC_ARG_WITH(log-dir,         AS_HELP_STRING([--with-log-dir=DIR],
 				  [Directory where log files are kept (default: $localstatedir/log)]),
 				[ logdir="$withval" ],
@@ -1816,6 +1820,7 @@ if test "x$XORG" = xyes; then
 	AC_DEFINE_DIR(XF86CONFIGFILE, XF86CONFIGFILE, [Name of configuration file])
 	AC_DEFINE_DIR(__XCONFIGDIR__, XF86CONFIGDIR, [Name of configuration directory])
 	AC_DEFINE_DIR(DEFAULT_MODULE_PATH, moduledir, [Default module search path])
+	AC_DEFINE_DIR(EXTRA_MODULE_PATH, extra_moduledir, [Extra module search path, searched before the default one])
 	AC_DEFINE_DIR(DEFAULT_LIBRARY_PATH, libdir, [Default library install path])
 	AC_DEFINE_DIR(DEFAULT_LOGPREFIX, LOGPREFIX, [Default log location])
 	AC_DEFINE_UNQUOTED(__VENDORDWEBSUPPORT__, ["$VENDOR_WEB"], [Vendor web address for support])
diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index 9ed95c8..c815ec3 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -628,11 +628,21 @@ configFiles(XF86ConfFilesPtr fileconf)
   
   /* ModulePath */
 
-  if (fileconf) {
-    if (xf86ModPathFrom != X_CMDLINE && fileconf->file_modulepath) {
+  if (xf86ModPathFrom != X_CMDLINE) {
+    if (fileconf && fileconf->file_modulepath) {
       xf86ModulePath = fileconf->file_modulepath;
       xf86ModPathFrom = X_CONFIG;
     }
+    else if (strcmp(xf86ExtraModulePath, "") != 0) {
+      char *newpath = malloc(strlen(xf86ExtraModulePath)
+			     + strlen(xf86ModulePath)
+			     + 2);
+      strcpy(newpath, xf86ExtraModulePath);
+      strcat(newpath, ",");
+      strcat(newpath, xf86ModulePath);
+
+      xf86ModulePath = newpath;
+    }
   }
 
   xf86Msg(xf86ModPathFrom, "ModulePath set to \"%s\"\n", xf86ModulePath);
diff --git a/hw/xfree86/common/xf86Globals.c b/hw/xfree86/common/xf86Globals.c
index 84ac29c..d70a125 100644
--- a/hw/xfree86/common/xf86Globals.c
+++ b/hw/xfree86/common/xf86Globals.c
@@ -139,6 +139,7 @@ xf86InfoRec xf86Info = {
 const char *xf86ConfigFile = NULL;
 const char *xf86ConfigDir = NULL;
 const char *xf86ModulePath = DEFAULT_MODULE_PATH;
+const char *xf86ExtraModulePath = EXTRA_MODULE_PATH;
 MessageType xf86ModPathFrom = X_DEFAULT;
 const char *xf86LogFile = DEFAULT_LOGPREFIX;
 MessageType xf86LogFileFrom = X_DEFAULT;
diff --git a/hw/xfree86/common/xf86Priv.h b/hw/xfree86/common/xf86Priv.h
index 7137a53..03ba8e7 100644
--- a/hw/xfree86/common/xf86Priv.h
+++ b/hw/xfree86/common/xf86Priv.h
@@ -75,6 +75,7 @@ extern _X_EXPORT  char *xf86ServerName;
 
 extern _X_EXPORT  xf86InfoRec xf86Info;
 extern _X_EXPORT  const char *xf86ModulePath;
+extern _X_EXPORT  const char *xf86ExtraModulePath;
 extern _X_EXPORT  MessageType xf86ModPathFrom;
 extern _X_EXPORT  const char *xf86LogFile;
 extern _X_EXPORT  MessageType xf86LogFileFrom;
diff --git a/include/xorg-config.h.in b/include/xorg-config.h.in
index 56ffda2..c8b56e5 100644
--- a/include/xorg-config.h.in
+++ b/include/xorg-config.h.in
@@ -42,6 +42,9 @@
 /* Path to loadable modules. */
 #undef DEFAULT_MODULE_PATH
 
+/* Path to extra loadable modules. */
+#undef EXTRA_MODULE_PATH
+
 /* Path to installed libraries. */
 #undef DEFAULT_LIBRARY_PATH
 
-- 
1.7.1