summaryrefslogtreecommitdiffstats
path: root/contrib/xorg
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/xorg')
-rwxr-xr-xcontrib/xorg/build-xorg347
-rwxr-xr-xcontrib/xorg/download-xorg-7.585
-rw-r--r--contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch131
-rw-r--r--contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch46
4 files changed, 609 insertions, 0 deletions
diff --git a/contrib/xorg/build-xorg b/contrib/xorg/build-xorg
new file mode 100755
index 00000000..a847292e
--- /dev/null
+++ b/contrib/xorg/build-xorg
@@ -0,0 +1,347 @@
+#!/bin/bash
+# -*- mode: shell-script; coding: UTF-8 -*-
+#
+# Build Xvnc with Xorg 7.4 or 7.5
+#
+
+set -e
+
+PREFIX=
+MAKE="make"
+PARALLEL_MAKE=0
+XORG_VERSION=7.5
+XONLY=0
+CFGHOST=
+SRCDIR=`dirname $0`/..
+
+modules="dri2proto \
+ libpthread-stubs \
+ glproto \
+ xf86vidmodeproto \
+ xextproto \
+ xproto \
+ kbproto \
+ inputproto \
+ xcmiscproto \
+ bigreqsproto \
+ fixesproto \
+ damageproto \
+ xf86driproto \
+ randrproto \
+ renderproto \
+ scrnsaverproto \
+ resourceproto \
+ fontsproto \
+ videoproto \
+ compositeproto \
+ xineramaproto \
+ libdrm \
+ libXau \
+ xtrans \
+ libXdmcp \
+ libX11 \
+ libXext \
+ libXxf86vm \
+ libICE \
+ libSM \
+ libXt \
+ libXmu \
+ libXfixes \
+ libXdamage \
+ libXi \
+ libxkbfile \
+ libfontenc \
+ libXfont \
+ libpciaccess \
+ pixman"
+
+init()
+{
+ update_modules
+
+ pushd xorg
+ tar jxf ~/.tigervnc-xorg-$XORG_VERSION/util-macros.tar.bz2
+ pushd util-macros-*
+ echo "Building macros"
+ ./configure --prefix=${PREFIX}
+ ($MAKE install)
+ popd
+
+ pushd xserver
+
+ patch -p1 < $SRCDIR/unix/xserver18.patch
+ for all in `find $SRCDIR/contrib/xorg/xorg-$XORG_VERSION-patches/ -type f |grep '.*\.patch$'`; do
+ echo Applying $all
+ patch -p1 < $all
+ done
+
+ popd
+ popd
+}
+
+
+update_modules()
+{
+ if [ -d xorg ]; then rm -rf xorg; fi
+ if [ -d xorg.build ]; then rm -rf xorg.build; fi
+ mkdir xorg
+ pushd xorg
+ $SRCDIR/contrib/xorg/download-xorg-$XORG_VERSION
+ for module in ${modules}; do
+ tar jxf ~/.tigervnc-xorg-$XORG_VERSION/${module}.tar.bz2
+ done
+
+ [ -r ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.bz2 ] && \
+ tar jxf ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.bz2
+ [ -r ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.gz ] && \
+ tar zxf ~/.tigervnc-xorg-$XORG_VERSION/Mesa.tar.gz
+
+ tar jxf ~/.tigervnc-xorg-$XORG_VERSION/freetype.tar.bz2
+ tar jxf ~/.tigervnc-xorg-$XORG_VERSION/xorg-server.tar.bz2
+ cp -r $SRCDIR/unix/xserver xserver
+ cp -r xorg-server-1.*/* xserver
+ popd
+}
+
+
+build ()
+{
+ if [ $XONLY -eq 0 ]; then
+
+ # Build VNC
+ echo "*** Building VNC ***"
+ cmake -G"Unix Makefiles" ${1+"$@"} -DBUILD_STATIC=1 $SRCDIR
+ $MAKE
+
+ # Build Xorg
+ echo "*** Building Xorg ***"
+ pushd xorg
+
+ # build freetype
+ echo "*** Building freetype ***"
+ pushd freetype-*
+ ./configure ${CFGHOST} --prefix=${PREFIX} --enable-static --disable-shared
+ if [ $? -ne 0 ]; then
+ echo "Failed to configure freetype."
+ exit
+ fi
+ $MAKE install
+ popd
+
+ for module in ${modules}; do
+ extraoptions=""
+ cd ${module}-*
+ echo ======================
+ echo configuring ${module}
+ echo ======================
+ if [ "${module}" = "libX11" ]; then
+ extraoptions="${extraoptions} --without-xcb --disable-specs"
+ fi
+ if [ "${module}" = "libSM" ]; then
+ extraoptions="${extraoptions} --without-libuuid"
+ fi
+ if [ "${module}" = "pixman" ]; then
+ extraoptions="${extraoptions} --disable-gtk"
+ fi
+ if [ "${module}" = "libXfont" ]; then
+ extraoptions="${extraoptions} --with-freetype-config=${PREFIX}/bin/freetype-config"
+ fi
+ OLD_CFLAGS=${CFLAGS}
+ OLD_CXXFLAGS=${CXXFLAGS}
+ CFLAGS=${CFLAGS}' -fPIC'
+ CXXFLAGS=${CXXFLAGS}' -fPIC'
+ export CFLAGS CXXFLAGS
+ ./configure ${CFGHOST} --prefix="${PREFIX}" ${extraoptions} --enable-static --disable-shared
+ CFLAGS=${OLD_CFLAGS}
+ CXXFLAGS=${OLD_CXXFLAGS}
+ export CFLAGS CXXFLAGS
+ echo ======================
+ echo building ${module}
+ echo ======================
+ if [ $? -ne 0 ]; then
+ echo "Failed to configure ${module}."
+ exit
+ fi
+ $MAKE install
+ cd ..
+ done
+
+ # build mesa
+ echo "*** Building Mesa ***"
+ pushd Mesa-*
+ ./configure ${CFGHOST} --prefix=${PREFIX} --disable-driglx-direct --with-dri-drivers=swrast --with-driver=dri --disable-glut --without-demos
+ if [ $? -ne 0 ]; then
+ echo "Failed to configure Mesa."
+ exit
+ fi
+ $MAKE
+ $MAKE install
+ popd
+
+ popd
+
+ fi # XONLY
+
+ # build xserver
+ echo "*** Building xserver ***"
+ pushd xorg/xserver
+ autoreconf -fiv
+ XORGCFGFLAGS="--disable-dri --enable-dri2 --disable-composite --disable-xinerama --disable-xvfb --disable-xnest --disable-xorg --disable-dmx --disable-xwin --disable-xephyr --disable-kdrive --disable-config-dbus --disable-config-hal --disable-config-udev --with-sha1=libgcrypt SHA1_LIB=-lcrypto --disable-shared --enable-static ${XORGCFGFLAGS}"
+ ./configure ${CFGHOST} --prefix=${PREFIX} ${XORGCFGFLAGS}
+ if [ $? -ne 0 ]; then
+ echo "Failed to configure X server."
+ exit
+ fi
+ $MAKE TIGERVNC_SRCDIR=$SRCDIR install
+ popd
+}
+
+rebuild ()
+{
+ # Build VNC
+ echo "*** Building VNC ***"
+ $MAKE ${1+"$@"}
+
+ # build xserver
+ echo "*** Building xserver ***"
+ pushd xorg/xserver
+ $MAKE TIGERVNC_SRCDIR=$SRCDIR install ${1+"$@"}
+ popd
+}
+
+
+usage ()
+{
+ echo "Usage: $0 init [-version <7.4 | 7.5>]"
+ echo
+ echo " $0 build [-version <7.4 | 7.5>]"
+ echo " [additional CMake flags]"
+ echo
+ echo " $0 rebuild [additional make options]"
+ echo
+ echo " $0 update [-version <7.4 | 7.5>]"
+ echo
+ exit 1
+}
+
+if [ -x '/usr/bin/getconf' -a "$PARALLEL_MAKE" = "1" ]; then
+ MAKE_PARALLEL=`/usr/bin/getconf _NPROCESSORS_ONLN 2>&1`
+ [ "$MAKE_PARALLEL" -gt 1 ] && MAKE="$MAKE -j$MAKE_PARALLEL"
+fi
+
+while [ $# -gt 0 ]
+do
+ case "$1" in
+ init) MODE=init ;;
+ build) MODE=build ;;
+ xbuild) MODE=build; XONLY=1 ;;
+ rebuild) MODE=rebuild ;;
+ update) MODE=update ;;
+ -parallel) PARALLEL_MAKE=1; ;;
+ -srcdir) SRCDIR=$2; shift ;;
+ *) break ;;
+ esac
+ shift
+done
+
+pushd $SRCDIR
+SRCDIR=`pwd`
+echo "*** Using TigerVNC source tree at $SRCDIR ***"
+popd
+
+if [ "`pwd`" = "$SRCDIR/unix" ]; then
+ cd $SRCDIR
+fi
+
+if [ "$PREFIX" = "" ]; then
+ PREFIX=`pwd`/xorg.build
+fi
+
+if [ "$MODE" = "build" ]; then
+ if [ ! -d ./xorg.build/syslib ]; then
+ mkdir -p ./xorg.build/syslib
+ fi
+
+ for i in "$@"; do
+ case "$i" in
+ CC=*) CC=`echo $i | sed s/^CC=//g` ;;
+ CXX=*) CXX=`echo $i | sed s/^CXX=//g` ;;
+ CFLAGS=*) CFLAGS=`echo $i | sed s/^CFLAGS=//g` ;;
+ CXXFLAGS=*) CXXFLAGS=`echo $i | sed s/^CXXFLAGS=//g` ;;
+ LDFLAGS=*) LDFLAGS=`echo $i | sed s/^LDFLAGS=//g` ;;
+ esac
+ done
+ if [ "$CC" = "" ]; then
+ CC=gcc
+ fi
+ if [ "$CXX" = "" ]; then
+ CXX=g++
+ fi
+ if [ "$CFLAGS" = "" ]; then
+ CFLAGS=-O3
+ fi
+ if [ "$CXXFLAGS" = "" ]; then
+ CXXFLAGS=-O3
+ fi
+ CFLAGS="$CFLAGS -fPIC"
+ CXXFLAGS="$CXXFLAGS -fPIC"
+ LDFLAGS="$LDFLAGS -static-libgcc -L`pwd`/xorg.build/syslib"
+ echo CC = $CC
+ echo CXX = $CXX
+ echo CFLAGS = $CFLAGS
+ echo CXXFLAGS = $CXXFLAGS
+ echo LDFLAGS = $LDFLAGS
+ if [[ $CFLAGS = *-m32* ]]; then
+ CFGHOST="--host i686-pc-linux-gnu"
+ fi
+ STATICLIBS='libcrypto.a libz.a'
+ for lib in $STATICLIBS; do
+ if [ -f ./xorg.build/syslib/$lib ]; then
+ rm -f ./xorg.build/syslib/$lib
+ fi
+ done
+ IS64BIT=`echo -e "#ifdef __x86_64__\nis64bit_yes\n#else\nis64bit_no\n#endif" | $CC $CFLAGS -E - | grep is64bit`
+ STATICLIBDIR=
+ case $IS64BIT in
+ is64bit_yes)
+ if [ -d /usr/lib64 ]; then STATICLIBDIR=lib64;
+ else STATICLIBDIR=lib; fi
+ ;;
+ is64bit_no)
+ if [ -d /usr/lib32 ]; then STATICLIBDIR=lib32;
+ else STATICLIBDIR=lib; fi
+ ;;
+ *)
+ echo "Cannot determine whether compiler output is 64-bit or 32-bit. Are you using GCC?"
+ exit 1
+ ;;
+ esac
+ for lib in $STATICLIBS; do
+ if [ -f /usr/$STATICLIBDIR/$lib ]; then
+ ln -fs /usr/$STATICLIBDIR/$lib ./xorg.build/syslib
+ else
+ if [ -f /$STATICLIBDIR/$lib ]; then
+ ln -fs /$STATICLIBDIR/$lib ./xorg.build/syslib
+ else
+ DYLIB=`echo $lib | sed s/\\\.a/\\.so/g`
+ if [ -f /usr/$STATICLIBDIR/$DYLIB -o -f /$STATICLIBDIR/$DYLIB ]; then
+ echo WARNING: Cannot find suitable $lib. Xvnc will depend on $DYLIB.
+ fi
+ fi
+ fi
+ done
+fi
+
+export ACLOCAL="aclocal -I ${PREFIX}/share/aclocal"
+export PKG_CONFIG_PATH="${PREFIX}/lib/pkgconfig:${PREFIX}/share/pkgconfig"
+
+case "$MODE" in
+ init) init ;;
+ build)
+ export CFLAGS CXXFLAGS LDFLAGS
+ build ${1+"$@"};
+ ;;
+ rebuild) rebuild ${1+"$@"} ;;
+ update) update ;;
+ *) usage ;;
+esac
diff --git a/contrib/xorg/download-xorg-7.5 b/contrib/xorg/download-xorg-7.5
new file mode 100755
index 00000000..1b802a2b
--- /dev/null
+++ b/contrib/xorg/download-xorg-7.5
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+# -*-mode: python; coding: UTF-8 -*-
+
+import os
+import glob
+
+#INDI = "http://ftp.sunet.se/pub/X11/ftp.x.org/individual"
+INDI = "http://ftp.x.org/pub/individual/"
+PROTO = INDI + "proto/"
+LIB = INDI + "lib/"
+SERVER = INDI + "xserver/"
+UTIL = INDI + "util/"
+DATA = INDI + "data/"
+APP = INDI + "app/"
+
+packages = {
+ "damageproto": PROTO + "damageproto-1.2.0.tar.bz2",
+ "fixesproto": PROTO + "fixesproto-4.1.1.tar.bz2",
+ "resourceproto": PROTO + "resourceproto-1.1.0.tar.bz2",
+ "fontsproto": PROTO + "fontsproto-2.1.0.tar.bz2",
+ "bigreqsproto": PROTO + "bigreqsproto-1.1.0.tar.bz2",
+ "kbproto": PROTO + "kbproto-1.0.4.tar.bz2",
+ "inputproto": PROTO + "inputproto-2.0.tar.bz2",
+ "glproto": PROTO + "glproto-1.4.12.tar.bz2",
+ "xineramaproto": PROTO + "xineramaproto-1.2.tar.bz2",
+ "randrproto": PROTO + "randrproto-1.3.1.tar.bz2",
+ "scrnsaverproto": PROTO + "scrnsaverproto-1.2.0.tar.bz2",
+ "renderproto": PROTO + "renderproto-0.11.tar.bz2",
+ "xcmiscproto": PROTO + "xcmiscproto-1.2.0.tar.bz2",
+ "xextproto": PROTO + "xextproto-7.1.1.tar.bz2",
+ "xf86driproto": PROTO + "xf86driproto-2.1.0.tar.bz2",
+ "dri2proto": PROTO + "dri2proto-2.1.tar.bz2",
+ "compositeproto": PROTO + "compositeproto-0.4.1.tar.bz2",
+ "xf86vidmodeproto": PROTO + "xf86vidmodeproto-2.3.tar.bz2",
+ "videoproto": PROTO + "videoproto-2.3.0.tar.bz2",
+ "xproto": PROTO + "xproto-7.0.16.tar.bz2",
+
+ "libxkbfile": LIB + "libxkbfile-1.0.6.tar.bz2",
+ "libXxf86vm": LIB + "libXxf86vm-1.1.0.tar.bz2",
+ "libXext": LIB + "libXext-1.1.2.tar.bz2",
+ "libfontenc": LIB + "libfontenc-1.0.5.tar.bz2",
+ "libXau": LIB + "libXau-1.0.6.tar.bz2",
+ "libXfont": LIB + "libXfont-1.4.2.tar.bz2",
+ "libXfixes": LIB + "libXfixes-4.0.5.tar.bz2",
+ "libSM": LIB + "libSM-1.1.1.tar.bz2",
+ "libXi": LIB + "libXi-1.3.2.tar.bz2",
+ "libXmu": LIB + "libXmu-1.0.5.tar.bz2",
+ "libX11": LIB + "libX11-1.3.5.tar.bz2",
+ "libXdmcp": LIB + "libXdmcp-1.0.3.tar.bz2",
+ "xtrans": LIB + "xtrans-1.2.5.tar.bz2",
+ "libXt": LIB + "libXt-1.0.8.tar.bz2",
+ "libpciaccess": LIB + "libpciaccess-0.12.0.tar.bz2",
+ "libICE": LIB + "libICE-1.0.6.tar.bz2",
+ "pixman": LIB + "pixman-0.19.2.tar.bz2",
+ "libXdamage": LIB + "libXdamage-1.1.3.tar.bz2",
+
+ "util-macros": UTIL + "util-macros-1.10.0.tar.bz2",
+ "xorg-server": SERVER + "xorg-server-1.8.2.tar.bz2",
+
+ "libdrm": "http://dri.freedesktop.org/libdrm/libdrm-2.4.21.tar.bz2",
+ "Mesa": "ftp://ftp.freedesktop.org/pub/mesa/beta/MesaLib-7.8.3-rc1.tar.bz2",
+ "libpthread-stubs": "http://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.bz2",
+ "freetype": "http://downloads.sourceforge.net/freetype/freetype-2.4.2.tar.bz2",
+ }
+
+
+
+def main():
+ dir = os.path.expanduser("~")+"/.tigervnc-xorg-7.5"
+ cwd = os.getcwd()
+ if not os.path.exists(dir):
+ os.mkdir(dir)
+ os.chdir(dir)
+
+ for pkg in packages.keys():
+ loc = packages[pkg]
+ if ".tar.bz2" in loc:
+ fname = pkg + ".tar.bz2"
+ else :
+ fname = pkg + ".tar.gz"
+ if not os.path.exists(fname):
+ assert 0 == os.spawnvp(os.P_WAIT, "wget", ["-N", "-c", "-O", fname, loc])
+
+ os.chdir(cwd)
+main()
diff --git a/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch b/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
new file mode 100644
index 00000000..c72078f3
--- /dev/null
+++ b/contrib/xorg/xorg-7.5-patches/0001-Add-dridir-param.patch
@@ -0,0 +1,131 @@
+From 0acffdd6f443198378012405e7f814f5abf278b3 Mon Sep 17 00:00:00 2001
+From: Adam Tkac <atkac@redhat.com>
+Date: Wed, 15 Sep 2010 15:37:01 +0200
+Subject: [PATCH] Add -dridir parameter to specify DRI drivers directory from command line.
+
+Signed-off-by: Adam Tkac <atkac@redhat.com>
+---
+ glx/glxdri.c | 2 --
+ glx/glxdri2.c | 2 --
+ glx/glxdriswrast.c | 2 --
+ glx/glxext.c | 27 +++++++++++++++++++++++++++
+ glx/glxserver.h | 3 +++
+ os/utils.c | 9 +++++++++
+ 6 files changed, 39 insertions(+), 6 deletions(-)
+
+diff --git a/glx/glxdri.c b/glx/glxdri.c
+index 5b78cec..ce29ae2 100644
+--- a/glx/glxdri.c
++++ b/glx/glxdri.c
+@@ -860,8 +860,6 @@ static const __DRIextension *loader_extensions[] = {
+
+
+
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ static Bool
+ glxDRIEnterVT (int index, int flags)
+ {
+diff --git a/glx/glxdri2.c b/glx/glxdri2.c
+index 2d6090c..49265ec 100644
+--- a/glx/glxdri2.c
++++ b/glx/glxdri2.c
+@@ -579,8 +579,6 @@ static const __DRIextension *loader_extensions[] = {
+ NULL
+ };
+
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ static Bool
+ glxDRIEnterVT (int index, int flags)
+ {
+diff --git a/glx/glxdriswrast.c b/glx/glxdriswrast.c
+index 6a34393..37c1dce 100644
+--- a/glx/glxdriswrast.c
++++ b/glx/glxdriswrast.c
+@@ -438,8 +438,6 @@ initializeExtensions(__GLXDRIscreen *screen)
+ }
+ }
+
+-static const char dri_driver_path[] = DRI_DRIVER_PATH;
+-
+ static __GLXscreen *
+ __glXDRIscreenProbe(ScreenPtr pScreen)
+ {
+diff --git a/glx/glxext.c b/glx/glxext.c
+index 89e58b0..5e7cf23 100644
+--- a/glx/glxext.c
++++ b/glx/glxext.c
+@@ -608,3 +608,30 @@ static int __glXDispatch(ClientPtr client)
+
+ return retval;
+ }
++
++char *dri_driver_path = DRI_DRIVER_PATH;
++
++int GlxProcessArguments(int argc, char *argv[], int i)
++{
++ if (strncmp(argv[i], "-dridir", 7) == 0) {
++ if (++i < argc) {
++#if !defined(WIN32) && !defined(__CYGWIN__)
++ if (getuid() != geteuid()) {
++ LogMessage(X_WARNING, "-dridir is not available for setuid X servers\n");
++ return -1;
++ } else
++#endif
++ {
++ if (strlen(argv[i]) < PATH_MAX) {
++ dri_driver_path = argv[i];
++ return 2;
++ } else {
++ LogMessage(X_ERROR, "-dridir pathname too long\n");
++ return -1;
++ }
++ }
++ }
++ }
++
++ return 0;
++}
+diff --git a/glx/glxserver.h b/glx/glxserver.h
+index 1daf977..082ff82 100644
+--- a/glx/glxserver.h
++++ b/glx/glxserver.h
+@@ -251,4 +251,7 @@ extern unsigned glxMinorVersion;
+
+ extern int __glXEventBase;
+
++extern char *dri_driver_path;
++extern int GlxProcessArguments(int argc, char *argv[], int i);
++
+ #endif /* !__GLX_server_h__ */
+diff --git a/os/utils.c b/os/utils.c
+index 13d3b3f..ff97c86 100644
+--- a/os/utils.c
++++ b/os/utils.c
+@@ -141,6 +141,7 @@ Bool noDPMSExtension = FALSE;
+ #ifdef GLXEXT
+ Bool noGlxExtension = FALSE;
+ Bool noGlxVisualInit = FALSE;
++extern int GlxProcessArguments(int argc, char *argv[], int i);
+ #endif
+ #ifdef SCREENSAVER
+ Bool noScreenSaverExtension = FALSE;
+@@ -721,6 +722,14 @@ ProcessCommandLine(int argc, char *argv[])
+ i+= skip-1;
+ else UseMsg();
+ }
++#ifdef GLXEXT
++ else if ((skip = GlxProcessArguments(argc,argv,i)) != 0) {
++ if (skip > 0)
++ i += skip - 1;
++ else
++ UseMsg();
++ }
++#endif
+ #ifdef RLIMIT_DATA
+ else if ( strcmp( argv[i], "-ld") == 0)
+ {
+--
+1.7.3.2
+
diff --git a/contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch b/contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch
new file mode 100644
index 00000000..f7f358b4
--- /dev/null
+++ b/contrib/xorg/xorg-7.5-patches/0001-Add-xkbcompdir-param.patch
@@ -0,0 +1,46 @@
+From 5e6e99eaef3ca346c78a3e520ed58ec8b8100b41 Mon Sep 17 00:00:00 2001
+From: Adam Tkac <atkac@redhat.com>
+Date: Thu, 2 Sep 2010 17:24:38 +0200
+Subject: [PATCH] Add -xkbcompdir parameter to modify "xkbcomp" path from commandline.
+
+Signed-off-by: Adam Tkac <atkac@redhat.com>
+---
+ xkb/xkbInit.c | 21 +++++++++++++++++++++
+ 1 files changed, 21 insertions(+), 0 deletions(-)
+
+diff --git a/xkb/xkbInit.c b/xkb/xkbInit.c
+index fbf8f14..29fb33e 100644
+--- a/xkb/xkbInit.c
++++ b/xkb/xkbInit.c
+@@ -742,7 +742,28 @@ XkbProcessArguments(int argc,char *argv[],int i)
+ }
+ }
+ return j;
++ } else if (strncmp(argv[i], "-xkbcompdir", 11)==0) {
++ if (++i < argc) {
++#if !defined(WIN32) && !defined(__CYGWIN__)
++ if (getuid() != geteuid()) {
++ LogMessage(X_WARNING, "-xkbdir is not available for setuid X servers\n");
++ return -1;
++ } else
++#endif
++ {
++ if (strlen(argv[i]) < PATH_MAX) {
++ XkbBinDirectory = argv[i];
++ return 2;
++ } else {
++ LogMessage(X_ERROR, "-xkbcompdir pathname too long\n");
++ return -1;
++ }
++ }
++ } else {
++ return -1;
++ }
+ }
++
+ if ((strcmp(argv[i], "-ardelay") == 0) ||
+ (strcmp (argv[i], "-ar1") == 0)) { /* -ardelay int */
+ if (++i >= argc) UseMsg ();
+--
+1.7.2.3
+