Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Mar 2017 18:50:49 +0100
From:      Matthew Rezny <rezny@freebsd.org>
To:        "freebsd-x11@freebsd.org" <freebsd-x11@freebsd.org>
Subject:   CFT: update Xorg to 1.19.3
Message-ID:  <1774569.2utjLAkrOb@workstation.reztek>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

--nextPart1921716.mvUtxT9krT
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="us-ascii"

The time has come for the next update of Xorg. All the drivers were readied 
for the new ABI during the previous update so no new drivers are needed, just 
be sure to rebuild all the drivers after upgrading xorg-server.

Changes in 1.19 include threaded input support and improvements to the 
modesetting driver and GLAMOR. There are also a few local changes of note.

* The devd config backend has been updated to handle /dev/hidX and 
/dev/input/eventX devices as provided by webcamd.
* An experimental option is now provided for a third config backend, udev, 
which is the replacement for HAL upstream, but using libudev-devd.
* The SUID option has been changed to install a setuid wrapper, to which 
/usr/local/bin/X points, instead of making /usr/local/bin/Xorg setuid. This 
allows Xorg to be launched as a non-root user, useful if it will not be 
interfacing hardware (e.g. virtual framebuffer in jail, with xpra, etc). There 
is no difference for non-root users running startx as it executes X, which 
points to the setuid wrapper.

Please test and reply to this list with your feedback.

--nextPart1921716.mvUtxT9krT
Content-Disposition: attachment; filename="Xorg_1_19_3.patch"
Content-Transfer-Encoding: quoted-printable
Content-Type: text/x-patch; charset="UTF-8"; name="Xorg_1_19_3.patch"

Index: Mk/bsd.xorg.mk
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- Mk/bsd.xorg.mk=09(revision 436260)
+++ Mk/bsd.xorg.mk=09(working copy)
@@ -58,12 +58,13 @@
 . endif
=20
 . if ${XORG_CAT} =3D=3D "driver"
-USE_XORG+=3D=09xorg-server xproto randrproto xi renderproto xextproto =
\
-=09=09inputproto kbproto fontsproto videoproto dri2proto dri3proto \
-=09=09xf86driproto presentproto glproto xineramaproto resourceproto \
-=09=09scrnsaverproto
+USE_XORG+=3D=09dri2proto dri3proto fontsproto glproto inputproto kbpro=
to \
+=09=09=09presentproto randrproto renderproto resourceproto \
+=09=09=09scrnsaverproto videoproto xextproto xf86driproto xi \
+=09=09=09xineramaproto xorg-server xproto
 CONFIGURE_ENV+=3D=09DRIVER_MAN_SUFFIX=3D4x DRIVER_MAN_DIR=3D'$$(mandir=
)/man4'
-USES+=3D=09=09libtool
+CFLAGS+=3D=09=09-Werror=3Duninitialized
+USES+=3D=09=09=09libtool
 INSTALL_TARGET=3D=09install-strip
 . endif
=20
@@ -81,7 +82,8 @@
 .  endif
=20
 . if ${XORG_CAT} =3D=3D "lib"
-USES+=3D=09=09pathfix libtool
+USES+=3D=09=09=09libtool pathfix
 USE_LDCONFIG=3D=09yes
+CFLAGS+=3D=09=09-Werror=3Duninitialized
 CONFIGURE_ARGS+=3D--enable-malloc0returnsnull

 . endif
@@ -93,10 +95,10 @@
 . if ${XORG_CAT} =3D=3D "xserver"
 DISTFILES?=3D=09xorg-server-${PORTVERSION}.tar.bz2
 WRKSRC=3D=09=09${WRKDIR}/xorg-server-${PORTVERSION}
-USES+=3D=09pathfix
+USES+=3D=09=09libtool pathfix
+CFLAGS+=3D=09-Werror=3Duninitialized
 CONFIGURE_ARGS+=3D=09--with-xkb-path=3D${LOCALBASE}/share/X11/xkb \
 =09=09=09=09=09--with-fontrootdir=3D${LOCALBASE}/share/fonts
-
 LIB_PC_DEPENDS+=3D=09${LOCALBASE}/libdata/pkgconfig/dri.pc:graphics/dr=
i
 USE_XORG+=3D=09fontutil:build
 . endif
@@ -112,7 +114,7 @@
 # Register all xorg .pc files here.
 # foo_LIB_PC_DEPENDS means it should go to BUILD_DEPENDS *and* RUN_DEP=
ENDS.
=20
-XORG_MODULES=3D=09=09=09bigreqsproto \
+XORG_MODULES=3D=09bigreqsproto \
 =09=09=09=09compositeproto \
 =09=09=09=09damageproto \
 =09=09=09=09dmx \
Index: x11-servers/xephyr/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xephyr/Makefile=09(revision 436260)
+++ x11-servers/xephyr/Makefile=09(working copy)
@@ -16,8 +16,6 @@
 DESCR=3D=09=09${.CURDIR}/pkg-descr
=20
 SLAVE_PORT=3D=09yes
-OPTIONS_EXCLUDE=3DDEVD HAL SUID
-
 USE_XORG=3D=09x11 xcb
=20
 CONFIGURE_ARGS+=3D--enable-xephyr --disable-dmx --disable-xnest --disa=
ble-xvfb \
Index: x11-servers/xorg-dmx/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-dmx/Makefile=09(revision 436260)
+++ x11-servers/xorg-dmx/Makefile=09(working copy)
@@ -11,8 +11,6 @@
 DESCR=3D=09=09${.CURDIR}/pkg-descr
=20
 SLAVE_PORT=3D=09yes
-OPTIONS_EXCLUDE=3DDEVD HAL SUID
-
 USE_XORG=3D=09dmx dmxproto x11 xaw7 xext xfixes xi xmu xpm xrender xre=
s xt xtst
=20
 CONFIGURE_ARGS+=3D--enable-dmx --disable-xephyr --disable-xnest --disa=
ble-xvfb \
Index: x11-servers/xorg-nestserver/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-nestserver/Makefile=09(revision 436260)
+++ x11-servers/xorg-nestserver/Makefile=09(working copy)
@@ -2,7 +2,6 @@
 # $FreeBSD$
=20
 PORTNAME=3D=09xorg-nestserver
-PORTVERSION=3D=091.19.1
 PORTEPOCH=3D=092
=20
 COMMENT=3D=09Nesting X server from X.Org
@@ -11,16 +10,12 @@
=20
 MASTERDIR=3D=09${.CURDIR}/../xorg-server
 DESCR=3D=09=09${.CURDIR}/pkg-descr
-DISTINFO_FILE=3D=09${.CURDIR}/distinfo
-PATCHDIR=3D=09${.CURDIR}/files
=20
 RUN_DEPENDS=3D=09xkeyboard-config>=3D2.5:x11/xkeyboard-config
=20
 SLAVE_PORT=3D=09yes
-OPTIONS_EXCLUDE=3DDEVD HAL SUID
+USE_XORG=3D=09x11 xext
=20
-USE_XORG=3D=09x11 xext xfont2
-
 CONFIGURE_ARGS+=3D--enable-xnest --disable-dmx --disable-xephyr --disa=
ble-xvfb \
 =09=09--disable-xwayland
=20
Index: x11-servers/xorg-nestserver/distinfo
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-nestserver/distinfo=09(revision 436260)
+++ x11-servers/xorg-nestserver/distinfo=09(nonexistent)
@@ -1,3 +0,0 @@
-TIMESTAMP =3D 1484388904
-SHA256 (xorg/xserver/xorg-server-1.19.1.tar.bz2) =3D 79ae2cf39d3f6c4a9=
1201d8dad549d1d774b3420073c5a70d390040aa965a7fb
-SIZE (xorg/xserver/xorg-server-1.19.1.tar.bz2) =3D 6041792

Property changes on: x11-servers/xorg-nestserver/distinfo
___________________________________________________________________
Deleted: fbsd:nokeywords
## -1 +0,0 ##
-yes
\ No newline at end of property
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/Makefile=09(revision 436260)
+++ x11-servers/xorg-server/Makefile=09(working copy)
@@ -2,7 +2,7 @@
 # $FreeBSD$
=20
 PORTNAME?=3D=09xorg-server
-PORTVERSION?=3D=091.18.4
+PORTVERSION?=3D=091.19.3
 PORTREVISION?=3D=090
 PORTEPOCH?=3D=091
 CATEGORIES=3D=09x11-servers
@@ -23,17 +23,28 @@
 OPTIONS_SUB=3D=09yes
 OPTIONS_DEFINE=3D=09SUID
 OPTIONS_RADIO=3D=09CONF
-OPTIONS_RADIO_CONF=3D=09DEVD HAL
-DEVD_DESC=3D=09Use devd for autoconfiguration of input devices
-HAL_DESC=3D=09Use hald for autoconfiguration of input devices
-SUID_DESC=3D=09Install the Xorg server with setuid bit set
-OPTIONS_DEFAULT=3DDEVD SUID
+OPTIONS_RADIO_CONF=3D=09DEVD HAL UDEV
+OPTIONS_DEFAULT=3D=09DEVD SUID
=20
+SUID_DESC=3D=09Install setuid wrapper to allow startx as non-root
+CONF_DESC=3D=09Backend to use for input device configuration
+DEVD_DESC=3D=09Use devd (native)
+HAL_DESC=3D=09Use HAL (deprecated)
+UDEV_DESC=3D=09Use udev via libudev-devd (experimental)
+
 OPTIONS_EXCLUDE_sparc64=3D=09HAL
=20
-.include <bsd.port.options.mk>
+DEVD_CONFIGURE_ENABLE=3D=09config-devd
+HAL_CONFIGURE_ENABLE=3D=09config-hal
+HAL_LIB_DEPENDS=3D=09libhal.so:sysutils/hal \
+=09=09=09libdbus-1.so:devel/dbus
+SUID_CONFIGURE_ENABLE=3D=09suid-wrapper
+SUID_CONFIGURE_ON=3D=09--libexecdir=3D${PREFIX}/bin=09# set SUID_WRAPP=
ER_DIR
+UDEV_CONFIGURE_ENABLE=3D=09config-udev
+UDEV_CONFIGURE_ON=3D=09--disable-config-udev-kms
+UDEV_LIB_DEPENDS=3D=09libudev.so:devel/libudev-devd
=20
-USES=3D=09=09gmake libtool perl5 ssl tar:bzip2
+USES=3D=09=09gmake perl5 ssl
 USE_PERL5=3D=09build
 USE_GL+=3D=09gl
 USE_XORG+=3D=09bigreqsproto compositeproto damageproto dri2proto dri3p=
roto \
@@ -40,12 +51,11 @@
 =09=09fixesproto fontsproto glproto inputproto kbproto pixman \
 =09=09presentproto randrproto recordproto renderproto \
 =09=09resourceproto scrnsaverproto videoproto xau \
-=09=09xcmiscproto xdmcp xextproto xf86driproto xfont \
+=09=09xcmiscproto xdmcp xextproto xf86driproto xfont2 \
 =09=09xineramaproto xkbfile xproto xshmfence xtrans
 CONFIGURE_ARGS+=3D--without-doxygen --without-xmlto --without-fop \
-=09=09--localstatedir=3D/var --with-shared-memory-dir=3D/tmp \
-=09=09--disable-config-udev --disable-config-udev-kms \
-=09=09--without-dtrace --enable-glamor
+=09=09--without-dtrace --with-shared-memory-dir=3D/tmp \
+=09=09--disable-install-setuid
 INSTALL_TARGET=3D=09install-strip
=20
 .if ${SLAVE_PORT} =3D=3D "no" || ${PORTNAME} =3D=3D "xephyr" || ${PORT=
NAME} =3D=3D "xwayland"
@@ -62,9 +72,9 @@
 =09=09--disable-xwayland
 SUB_FILES=3D=09pkg-install pkg-deinstall
 .else
-CONFIGURE_ARGS+=3D--disable-xorg
-# for slave ports we need to overwrite PLIST, so it doesn't overwrite
-# PLIST_FILES, with the masterport plist.
+CONFIGURE_ARGS+=3D=09--disable-xorg
+OPTIONS_EXCLUDE=3D=09DEVD HAL UDEV SUID
+# Set PLIST for slave ports so they only need to set PLIST_FILES
 PLIST=3D=09=09${.CURDIR}/pkg-plist
 .endif
=20
@@ -77,16 +87,6 @@
 CONFIGURE_ENV=3D=09SHA1_LIB=3D"-L/usr/lib -lcrypto" SHA1_CFLAGS=3D"-I/=
usr/include"
 .endif
=20
-.if ${PORT_OPTIONS:MHAL}
-LIB_DEPENDS+=3D=09libhal.so:sysutils/hal
-CONFIGURE_ARGS+=3D=09--enable-config-hal
-.else
-CONFIGURE_ARGS+=3D=09--disable-config-hal
-.endif
-
-# We handle Xorg setuid in the plist. This allows to build xorg-server=
 as a user.
-CONFIGURE_ARGS+=3D--disable-install-setuid
-
 .if ${ARCH} =3D=3D "i386" || ${ARCH} =3D=3D "amd64"
 LIB_DEPENDS+=3D=09libunwind.so:devel/libunwind
 .endif
@@ -97,39 +97,15 @@
 PLIST_SUB+=3D=09SPARC64=3D"@comment "
 .endif
=20
-.if ${PORT_OPTIONS:MSUID}
-pre-everything::
-=09@${ECHO_MSG} "By default, the X Server installs as a set-user-id ro=
ot binary. When run by"
-=09@${ECHO_MSG} "a normal user, it checks arguments and environment as=
 done in the x11/wrapper"
-=09@${ECHO_MSG} "port before handling them normally.  If you are conce=
rned about the security"
-=09@${ECHO_MSG} "of this, but still want to run an X Server (for examp=
le using xdm/kdm/gdm,"
-=09@${ECHO_MSG} "which will still run the server as root), you can can=
cel the build and set"
-=09@${ECHO_MSG} "xorg-server_UNSET=3DSUID in /etc/make.conf."
-.endif
-
 post-patch:
 =09@${REINPLACE_CMD} 's/test.*-traditional.*;/true;/' \
 =09=09${WRKSRC}/configure
-# build libglx.so but don't install it yet. which is done in pre-insta=
ll.
-=09@${REINPLACE_CMD} -e 's|@GLX_TRUE@GLXMODS =3D|@GLX_BOGUS@GLXMODS =3D=
|g' \
-=09=09-e 's|^LTLIBRARIES =3D |LTLIBRARIES =3D libglx.la |g' \
-=09=09${WRKSRC}/hw/xfree86/dixmods/Makefile.in
=20
-post-configure:
-.if ${PORT_OPTIONS:MDEVD}
-=09@${REINPLACE_CMD} -e 's|config\.c|config.c devd.c|g' \
-=09=09-e 's|config\.lo|config.lo devd.lo|g' \
-=09=09${WRKSRC}/config/Makefile
-=09@${REINPLACE_CMD} -e 's|^/\* #undef CONFIG_UDEV \*/|#define CONFIG_=
DEVD 1|' \
-=09=09${WRKSRC}/include/dix-config.h
-.endif
-
 .if ${SLAVE_PORT} =3D=3D "no"
 post-install:
-# The .xorg dir because else the xorg-server might not load the correc=
t
-# libglx module.
+# Avoid conflict with nvidia-driver, move libglx.so into .xorg directo=
ry
 =09@${MKDIR} ${STAGEDIR}${PREFIX}/lib/xorg/modules/extensions/.xorg
-=09${INSTALL_LIB} ${WRKSRC}/hw/xfree86/dixmods/.libs/libglx.so \
+=09${MV} ${STAGEDIR}${PREFIX}/lib/xorg/modules/extensions/libglx.so \
 =09=09${STAGEDIR}${PREFIX}/lib/xorg/modules/extensions/.xorg/
 =09@${MKDIR} ${STAGEDIR}${PREFIX}/etc/X11/xorg.conf.d
 .endif # ! SLAVE_PORT
Index: x11-servers/xorg-server/distinfo
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/distinfo=09(revision 436260)
+++ x11-servers/xorg-server/distinfo=09(working copy)
@@ -1,3 +1,3 @@
-TIMESTAMP =3D 1484803304
-SHA256 (xorg/xserver/xorg-server-1.18.4.tar.bz2) =3D 278459b2c31d61a15=
655d95a72fb79930c480a6bb8cf9226e48a07df8b1d31c8
-SIZE (xorg/xserver/xorg-server-1.18.4.tar.bz2) =3D 6009508
+TIMESTAMP =3D 1489641765
+SHA256 (xorg/xserver/xorg-server-1.19.3.tar.bz2) =3D 677a8166e03474719=
238dfe396ce673c4234735464d6dadf2959b600d20e5a98
+SIZE (xorg/xserver/xorg-server-1.19.3.tar.bz2) =3D 6050221
Index: x11-servers/xorg-server/files/config_Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/config_Makefile.am=09(nonexistent)
+++ x11-servers/xorg-server/files/config_Makefile.am=09(working copy)
@@ -0,0 +1,16 @@
+* Build the devd config backend if activated
+*
+--- config/Makefile.am.orig=092017-03-16 05:24:43 UTC
++++ config/Makefile.am
+@@ -4,6 +4,11 @@ noinst_LTLIBRARIES =3D libconfig.la
+ libconfig_la_SOURCES =3D config.c config-backends.h
+ libconfig_la_LIBADD =3D
+=20
++if CONFIG_DEVD
++libconfig_la_SOURCES +=3D devd.c
++libconfig_la_LIBADD +=3D -lusbhid
++endif
++
+ if NEED_DBUS
+ AM_CFLAGS +=3D $(DBUS_CFLAGS)
+ libconfig_la_SOURCES +=3D dbus-core.c

Property changes on: x11-servers/xorg-server/files/config_Makefile.am
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/configure.ac
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/configure.ac=09(nonexistent)
+++ x11-servers/xorg-server/files/configure.ac=09(working copy)
@@ -0,0 +1,97 @@
+* Plumb the devd config backend into configure
+*
+* define USE_DEV_IO for ARM platforms
+*
+* Only run pkg-config for udev if it is not disabled to prevent over-l=
inking
+*
+* Automatically use systemd/logind only on Linux
+*
+--- configure.ac.orig=092017-03-15 18:05:25 UTC
++++ configure.ac
+@@ -328,9 +328,12 @@ case $host_cpu in
+ =09esac
+ =09GLX_ARCH_DEFINES=3D"-D__GLX_ALIGN64 -mieee"
+ =09;;
+-  arm*)
++  arm*|aarch64*)
+ =09ARM_VIDEO=3Dyes
+ =09DEFAULT_INT10=3D"stub"
++=09case $host_os in
++=09=09*freebsd*)=09AC_DEFINE(USE_DEV_IO) ;;
++=09esac
+ =09;;
+   i*86)
+ =09I386_VIDEO=3Dyes
+@@ -628,6 +631,7 @@ AC_ARG_ENABLE(tslib,          AS_HELP_ST
+ AC_ARG_ENABLE(dbe,            AS_HELP_STRING([--disable-dbe], [Build =
DBE extension (default: enabled)]), [DBE=3D$enableval], [DBE=3Dyes])
+ AC_ARG_ENABLE(xf86bigfont,    AS_HELP_STRING([--enable-xf86bigfont], =
[Build XF86 Big Font extension (default: disabled)]), [XF86BIGFONT=3D$e=
nableval], [XF86BIGFONT=3Dno])
+ AC_ARG_ENABLE(dpms,           AS_HELP_STRING([--disable-dpms], [Build=
 DPMS extension (default: enabled)]), [DPMSExtension=3D$enableval], [DP=
MSExtension=3Dyes])
++AC_ARG_ENABLE(config-devd,    AS_HELP_STRING([--enable-config-devd], =
[Build devd support (default: auto)]), [CONFIG_DEVD=3D$enableval], [CON=
FIG_DEVD=3Dauto])
+ AC_ARG_ENABLE(config-udev,    AS_HELP_STRING([--enable-config-udev], =
[Build udev support (default: auto)]), [CONFIG_UDEV=3D$enableval], [CON=
FIG_UDEV=3Dauto])
+ AC_ARG_ENABLE(config-udev-kms,    AS_HELP_STRING([--enable-config-ude=
v-kms], [Build udev kms support (default: auto)]), [CONFIG_UDEV_KMS=3D$=
enableval], [CONFIG_UDEV_KMS=3Dauto])
+ AC_ARG_ENABLE(config-hal,     AS_HELP_STRING([--disable-config-hal], =
[Build HAL support (default: auto)]), [CONFIG_HAL=3D$enableval], [CONFI=
G_HAL=3Dauto])
+@@ -924,10 +928,27 @@ if test "x$CONFIG_UDEV" =3D xyes && test "
+ =09AC_MSG_ERROR([Hotplugging through both libudev and hal not allowed=
])
+ fi
+=20
+-PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=3Dyes], [HAVE_LIBUDEV=
=3Dno])
+-if test "x$CONFIG_UDEV" =3D xauto; then
+-=09CONFIG_UDEV=3D"$HAVE_LIBUDEV"
+-=09AC_DEFINE(HAVE_LIBUDEV, 1, [Define to 1 if libudev is available.])=

++if test "x$CONFIG_DEVD" =3D xauto; then
++=09case $host_os in
++=09=09*freebsd*)
++=09=09=09CONFIG_DEVD=3Dyes
++=09=09=09;;
++=09=09*)
++=09=09=09CONFIG_DEVD=3Dno
++=09=09=09;;
++=09esac
++fi
++AM_CONDITIONAL(CONFIG_DEVD, [test "x$CONFIG_DEVD" =3D xyes])
++if test "x$CONFIG_DEVD" =3D xyes; then
++=09AC_DEFINE(CONFIG_DEVD, 1, [Use devd for input auto configuration])=

++fi
++
++if test "x$CONFIG_UDEV" !=3D xno; then
++=09PKG_CHECK_MODULES(UDEV, $LIBUDEV, [HAVE_LIBUDEV=3Dyes], [HAVE_LIBU=
DEV=3Dno])
++=09if test "x$CONFIG_UDEV" =3D xauto; then
++=09=09CONFIG_UDEV=3D"$HAVE_LIBUDEV"
++=09=09AC_DEFINE(HAVE_LIBUDEV, 1, [Define to 1 if libudev is available=
.])
++=09fi
+ fi
+ AM_CONDITIONAL(CONFIG_UDEV, [test "x$CONFIG_UDEV" =3D xyes])
+ if test "x$CONFIG_UDEV" =3D xyes; then
+@@ -975,7 +996,14 @@ AM_CONDITIONAL(CONFIG_HAL, [test "x$CONF
+=20
+ if test "x$SYSTEMD_LOGIND" =3D xauto; then
+         if test "x$HAVE_DBUS" =3D xyes -a "x$CONFIG_UDEV" =3D xyes ; =
then
+-                SYSTEMD_LOGIND=3Dyes
++            case $host_os in
++                *linux*)
++                        SYSTEMD_LOGIND=3Dyes
++                        ;;
++                *)
++                        SYSTEMD_LOGIND=3Dno
++                        ;;
++            esac
+         else
+                 SYSTEMD_LOGIND=3Dno
+         fi
+@@ -2570,12 +2598,12 @@ AC_SUBST([prefix])
+=20
+ AC_CONFIG_COMMANDS([sdksyms], [touch hw/xfree86/sdksyms.dep])
+=20
+-if test "x$CONFIG_HAL" =3D xno && test "x$CONFIG_UDEV" =3D xno; then
++if test "x$CONFIG_HAL" =3D xno && test "x$CONFIG_UDEV" =3D xno && tes=
t "x$CONFIG_DEVD" =3D xno; then
+     AC_MSG_WARN([
+-             ***********************************************
+-             Neither HAL nor udev backend will be enabled.
++             *****************************************************
++             Neither HAL, devd, nor udev backend will be enabled.
+              Input device hotplugging will not be available!
+-             ***********************************************])
++             *****************************************************])
+ fi
+=20
+ AC_CONFIG_FILES([

Property changes on: x11-servers/xorg-server/files/configure.ac
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/hw_xfree86_Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/hw_xfree86_Makefile.am=09(nonexistent=
)
+++ x11-servers/xorg-server/files/hw_xfree86_Makefile.am=09(working cop=
y)
@@ -0,0 +1,14 @@
+* Don't overwrite Xorg binary with Xorg.sh when SUID_WRAPPER_DIR =3D=3D=
 bindir
+* Instead, relink bin/X to Xorg.wrap rather than to Xorg (which isn't =
Xorg.sh)
+*
+--- hw/xfree86/Makefile.am.orig=092017-03-16 05:24:43 UTC
++++ hw/xfree86/Makefile.am
+@@ -109,7 +109,7 @@ endif
+ if SUID_WRAPPER
+ =09$(MKDIR_P) $(DESTDIR)$(SUID_WRAPPER_DIR)
+ =09mv $(DESTDIR)$(bindir)/Xorg $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg
+-=09${INSTALL} -m 755 Xorg.sh $(DESTDIR)$(bindir)/Xorg
++=09(test ! -f $(DESTDIR)$(bindir)/Xorg && ${INSTALL} -m 755 Xorg.sh $=
(DESTDIR)$(bindir)/Xorg || cd $(DESTDIR)$(bindir) && rm -f X && $(LN_S)=
 Xorg.wrap$(EXEEXT) X)
+ =09-chown root $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap && chmod u+s $=
(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap
+ endif
+=20

Property changes on: x11-servers/xorg-server/files/hw_xfree86_Makefile.=
am
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/patch-config_Makefile.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-config_Makefile.in=09(nonexiste=
nt)
+++ x11-servers/xorg-server/files/patch-config_Makefile.in=09(working c=
opy)
@@ -0,0 +1,91 @@
+* generated from patched Makefile.am; revise and regen instead of edit=
ing
+*
+* Build the devd config backend if activated
+*
+--- config/Makefile.in.orig=092017-03-16 05:24:43 UTC
++++ config/Makefile.in
+@@ -89,16 +89,18 @@ PRE_UNINSTALL =3D :
+ POST_UNINSTALL =3D :
+ build_triplet =3D @build@
+ host_triplet =3D @host@
+-@NEED_DBUS_TRUE@am__append_1 =3D $(DBUS_CFLAGS)
+-@NEED_DBUS_TRUE@am__append_2 =3D dbus-core.c
+-@NEED_DBUS_TRUE@am__append_3 =3D $(DBUS_LIBS)
+-@CONFIG_UDEV_TRUE@am__append_4 =3D $(UDEV_CFLAGS)
+-@CONFIG_UDEV_TRUE@am__append_5 =3D udev.c
+-@CONFIG_UDEV_TRUE@am__append_6 =3D $(UDEV_LIBS)
+-@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_7 =3D $(HAL_CFLAGS)
+-@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_8 =3D hal.c
+-@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_9 =3D $(HAL_LIBS)
+-@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__append_1=
0 =3D wscons.c
++@CONFIG_DEVD_TRUE@am__append_1 =3D devd.c
++@CONFIG_DEVD_TRUE@am__append_2 =3D -lusbhid
++@NEED_DBUS_TRUE@am__append_3 =3D $(DBUS_CFLAGS)
++@NEED_DBUS_TRUE@am__append_4 =3D dbus-core.c
++@NEED_DBUS_TRUE@am__append_5 =3D $(DBUS_LIBS)
++@CONFIG_UDEV_TRUE@am__append_6 =3D $(UDEV_CFLAGS)
++@CONFIG_UDEV_TRUE@am__append_7 =3D udev.c
++@CONFIG_UDEV_TRUE@am__append_8 =3D $(UDEV_LIBS)
++@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_9 =3D $(HAL_CFLAGS)
++@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_10 =3D hal.c
++@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__append_11 =3D $(HAL_LIBS)
++@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__append_1=
2 =3D wscons.c
+ subdir =3D config
+ ACLOCAL_M4 =3D $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps =3D $(top_srcdir)/m4/ac_define_dir.m4 \
+@@ -126,16 +128,18 @@ am__DEPENDENCIES_1 =3D
+ @CONFIG_UDEV_TRUE@am__DEPENDENCIES_3 =3D $(am__DEPENDENCIES_1)
+ @CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__DEPENDENCIES_4 =3D  \
+ @CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@=09$(am__DEPENDENCIES_1)
+-libconfig_la_DEPENDENCIES =3D $(am__DEPENDENCIES_2) \
+-=09$(am__DEPENDENCIES_3) $(am__DEPENDENCIES_4)
+-am__libconfig_la_SOURCES_DIST =3D config.c config-backends.h dbus-cor=
e.c \
+-=09udev.c hal.c wscons.c
+-@NEED_DBUS_TRUE@am__objects_1 =3D dbus-core.lo
+-@CONFIG_UDEV_TRUE@am__objects_2 =3D udev.lo
+-@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__objects_3 =3D hal.lo
+-@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__objects_=
4 =3D wscons.lo
++libconfig_la_DEPENDENCIES =3D $(am__DEPENDENCIES_1) \
++=09$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \
++=09$(am__DEPENDENCIES_4)
++am__libconfig_la_SOURCES_DIST =3D config.c config-backends.h devd.c \=

++=09dbus-core.c udev.c hal.c wscons.c
++@CONFIG_DEVD_TRUE@am__objects_1 =3D devd.lo
++@NEED_DBUS_TRUE@am__objects_2 =3D dbus-core.lo
++@CONFIG_UDEV_TRUE@am__objects_3 =3D udev.lo
++@CONFIG_HAL_TRUE@@CONFIG_UDEV_FALSE@am__objects_4 =3D hal.lo
++@CONFIG_HAL_FALSE@@CONFIG_UDEV_FALSE@@CONFIG_WSCONS_TRUE@am__objects_=
5 =3D wscons.lo
+ am_libconfig_la_OBJECTS =3D config.lo $(am__objects_1) $(am__objects_=
2) \
+-=09$(am__objects_3) $(am__objects_4)
++=09$(am__objects_3) $(am__objects_4) $(am__objects_5)
+ libconfig_la_OBJECTS =3D $(am_libconfig_la_OBJECTS)
+ AM_V_lt =3D $(am__v_lt_@AM_V@)
+ am__v_lt_ =3D $(am__v_lt_@AM_DEFAULT_V@)
+@@ -586,12 +590,14 @@ target_alias =3D @target_alias@
+ top_build_prefix =3D @top_build_prefix@
+ top_builddir =3D @top_builddir@
+ top_srcdir =3D @top_srcdir@
+-AM_CFLAGS =3D $(DIX_CFLAGS) $(am__append_1) $(am__append_4) \
+-=09$(am__append_7)
++AM_CFLAGS =3D $(DIX_CFLAGS) $(am__append_3) $(am__append_6) \
++=09$(am__append_9)
+ noinst_LTLIBRARIES =3D libconfig.la
+-libconfig_la_SOURCES =3D config.c config-backends.h $(am__append_2) \=

+-=09$(am__append_5) $(am__append_8) $(am__append_10)
+-libconfig_la_LIBADD =3D $(am__append_3) $(am__append_6) $(am__append_=
9)
++libconfig_la_SOURCES =3D config.c config-backends.h $(am__append_1) \=

++=09$(am__append_4) $(am__append_7) $(am__append_10) \
++=09$(am__append_12)
++libconfig_la_LIBADD =3D $(am__append_2) $(am__append_5) $(am__append_=
8) \
++=09$(am__append_11)
+ @CONFIG_UDEV_TRUE@@XORG_TRUE@xorgconfddir =3D $(datadir)/X11/$(XF86CO=
NFIGDIR)
+ @CONFIG_UDEV_TRUE@@XORG_TRUE@xorgconfd_DATA =3D 10-quirks.conf
+ EXTRA_DIST =3D x11-input.fdi fdi2iclass.py 10-quirks.conf
+@@ -651,6 +657,7 @@ distclean-compile:
+=20
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/config.Plo@am__quote=
@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbus-core.Plo@am__qu=
ote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/devd.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hal.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/udev.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wscons.Plo@am__quote=
@

Property changes on: x11-servers/xorg-server/files/patch-config_Makefil=
e.in
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/patch-config_config-backends.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-config_config-backends.h=09(rev=
ision 436260)
+++ x11-servers/xorg-server/files/patch-config_config-backends.h=09(wor=
king copy)
@@ -1,11 +1,12 @@
---- config/config-backends.h.orig=092016-07-15 16:17:45 UTC
+* Define required functions for devd config backend
+*
+--- config/config-backends.h.orig=092017-03-15 18:05:25 UTC
 +++ config/config-backends.h
-@@ -44,3 +44,8 @@ void config_hal_fini(void);
+@@ -43,4 +43,7 @@ void config_hal_fini(void);
+ #elif defined(CONFIG_WSCONS)
  int config_wscons_init(void);
  void config_wscons_fini(void);
- #endif
-+
-+#ifdef CONFIG_DEVD
++#elif defined(CONFIG_DEVD)
 +int config_devd_init(void);
 +void config_devd_fini(void);
-+#endif
+ #endif
Index: x11-servers/xorg-server/files/patch-config_config.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-config_config.c=09(revision 436=
260)
+++ x11-servers/xorg-server/files/patch-config_config.c=09(working copy=
)
@@ -1,4 +1,6 @@
---- config/config.c.orig=092016-07-19 17:07:29 UTC
+* Call the devd config backend functions if activated
+*
+--- config/config.c.orig=092017-03-15 18:05:25 UTC
 +++ config/config.c
 @@ -55,6 +55,9 @@ config_init(void)
  #elif defined(CONFIG_WSCONS)
Index: x11-servers/xorg-server/files/patch-config_devd.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-config_devd.c=09(revision 43626=
0)
+++ x11-servers/xorg-server/files/patch-config_devd.c=09(working copy)
@@ -1,11 +1,15 @@
---- config/devd.c.orig=092017-01-19 15:20:42 UTC
+--- config/devd.c.orig=092017-03-16 05:24:43 UTC
 +++ config/devd.c
-@@ -0,0 +1,532 @@
+@@ -0,0 +1,882 @@
 +/*
 + * Copyright (c) 2012 Baptiste Daroussin
 + * Copyright (c) 2013, 2014 Alex Kozlov
 + * Copyright (c) 2014 Robert Millan
 + * Copyright (c) 2014 Jean-Sebastien Pedron
++ * Copyright (c) 2015 Hans Petter Selasky
++ * Copyright (c) 2015-2017 Rozhuk Ivan
++ * Copyright (c) 2016, 2017 Vladimir Kondratyev
++ * Copyright (c) 2017 Matthew Rezny
 + *
 + * Permission is hereby granted, free of charge, to any person obtain=
ing a
 + * copy of this software and associated documentation files (the "Sof=
tware"),
@@ -39,8 +43,14 @@
 +#include <sys/stat.h>
 +#include <sys/sysctl.h>
 +#include <sys/un.h>
++#include <sys/mouse.h>
++#include <sys/consio.h>
++#include <sys/ioctl.h>
++#include <dev/usb/usb_ioctl.h>
++#include <dev/usb/usbhid.h>
 +
 +#include <ctype.h>
++#include <dirent.h>
 +#include <errno.h>
 +#include <fcntl.h>
 +#include <stdlib.h>
@@ -47,6 +57,9 @@
 +#include <stdio.h>
 +#include <stdbool.h>
 +#include <unistd.h>
++#include <string.h>
++#include <paths.h>
++#include <usbhid.h>
 +
 +#include "input.h"
 +#include "inputstr.h"
@@ -54,440 +67,761 @@
 +#include "config-backends.h"
 +#include "os.h"
 +
-+#define DEVD_SOCK_PATH "/var/run/devd.pipe"
++/* from: <linux/input.h> */
++#define=09_IOC_READ   IOC_OUT
++struct input_id {
++=09uint16_t bustype;
++=09uint16_t vendor;
++=09uint16_t product;
++=09uint16_t version;
++};
 +
++#define=09EVIOCGBIT(ev, len)=09_IOC(_IOC_READ, 'E', 0x20 + (ev), (len=
))
++#define=09EVIOCGID=09=09_IOR('E', 0x02, struct input_id)
++#define=09EVIOCGNAME(len)=09=09_IOC(_IOC_READ, 'E', 0x06, (len))
++#define=09EVIOCGPHYS(len)=09=09_IOC(_IOC_READ, 'E', 0x07, (len))
++
++#define=09EV_KEY=09=09=090x01
++#define=09EV_REL=09=09=090x02
++#define=09EV_ABS=09=09=090x03
++#define=09BTN_MISC=09=090x100
++#define=09BTN_LEFT=09=090x110
++#define=09BTN_RIGHT=09=090x111
++#define=09BTN_MIDDLE=09=090x112
++#define=09BTN_JOYSTICK=09=090x120
++#define=09BTN_TOOL_PEN=09=090x140
++#define=09BTN_TOOL_FINGER=09=090x145
++#define=09BTN_TOUCH=09=090x14a
++#define=09BTN_STYLUS=09=090x14b
++#define=09BTN_STYLUS2=09=090x14c
++#define=09KEY_MAX=09=09=090x2ff
++#define=09KEY_CNT=09=09=09(KEY_MAX + 1)
++#define=09REL_X=09=09=090x00
++#define=09REL_Y=09=09=090x01
++#define=09REL_MAX=09=09=090x0f
++#define=09REL_CNT=09=09=09(REL_MAX + 1)
++#define=09ABS_X=09=09=090x00
++#define=09ABS_Y=09=09=090x01
++#define=09ABS_PRESSURE=09=090x18
++#define=09ABS_MT_SLOT=09=090x2f
++#define=09ABS_MAX=09=09=090x3f
++#define=09ABS_CNT=09=09=09(ABS_MAX + 1)
++
++#define=09ULONG_BITS=09=09(sizeof(unsigned long) * 8)
++#define=09ULONG_CNT(__x)=09=09(((__x) + ULONG_BITS - 1) / ULONG_BITS)=

++#define ULONG_IS_BIT_SET(__x, __bit) (((((const unsigned long*)(__x))=
[((__bit) >> 5)] >> ((__bit) & 0x1f))) & 0x01)
++
++/* from: <linux/joystick.h> */
++#define JSIOCGNAME(len)=09=09_IOC(_IOC_READ, 'j', 0x13, len)=09=09/* =
get identifier string */
++
++/* WebCamD specific. */
++#define WEBCAMD_IOCTL_GET_USB_VENDOR_ID _IOR('q', 250, unsigned short=
)
++#define WEBCAMD_IOCTL_GET_USB_PRODUCT_ID _IOR('q', 251, unsigned shor=
t)
++#define WEBCAMD_IOCTL_GET_USB_SPEED=09_IOR('q', 252, unsigned int)
++
++#ifdef COMPAT_32BIT
++=09#define hid_pass_ptr(ptr)=09((uint64_t)(uintptr_t)(ptr))
++#else
++=09#define hid_pass_ptr(ptr)=09(ptr)
++#endif
++
++#define _PATH_DEV_LEN=09=09(sizeof(_PATH_DEV) - 1)
++#define DEVD_PATH_DEV=09=09"devd:" _PATH_DEV
++#define DEVD_PATH_DEV_LEN=09(sizeof(DEVD_PATH_DEV) - 1)
++#define DEVD_PATH_LEN=09=09(DEVD_PATH_DEV_LEN - _PATH_DEV_LEN)
++
++#define DEVD_SOCK_PATH=09=09_PATH_VARRUN "devd.pipe"
++
 +#define DEVD_EVENT_ADD=09=09'+'
 +#define DEVD_EVENT_REMOVE=09'-'
++#define DEVD_EVENT_NOTIFY=09'!'
 +
-+#define RECONNECT_DELAY=09=095 * 1000
++#define RECONNECT_DELAY=09(5 * 1000)
 +
-+static int sock_devd;
-+static bool is_console_kbd =3D false;
-+static bool is_kbdmux =3D false;
++#define is_meuqual(__v1, __v1sz, __v2, __v2sz)=09=09=09=09\
++=09((__v1sz) =3D=3D (__v2sz) && NULL !=3D (__v1) && NULL !=3D (__v2) =
&&=09\
++=09 0 =3D=3D memcmp((__v1), (__v2), (__v1sz)))
++
++#define is_meuqual_cstr(__cstr, __v, __vsz)=09=09=09=09\
++=09is_meuqual(__cstr, (sizeof(__cstr) - 1), __v, __vsz)
++
++#define is_de_euqual_cstr(__de, __cstr)=09=09=09=09=09\
++=09(NULL !=3D (__de) &&=09=09=09=09=09=09\
++=09 is_meuqual((__de)->d_name, (__de)->d_namlen, __cstr, (sizeof(__cs=
tr) - 1)))
++
++#define devd_get_val_cstr(__cstr, __buf, __bufsz, __valsz)=09=09\
++=09devd_get_val((__buf), (__bufsz), __cstr, (sizeof(__cstr) - 1),=09\=

++=09(__valsz))
++
++static int devd_skt =3D 0;
++static char devd_buf[4096];
++static size_t devd_buf_used =3D 0;
++static int is_kbdmux =3D 0;
 +static OsTimerPtr rtimer =3D NULL;
 +
-+struct hw_type {
-+=09const char *driver;
-+=09int flag;
-+=09const char *xdriver;
++/* Input devices. */
++typedef struct hw_type_s {
++=09const char=09*dev_name;
++=09size_t=09=09dev_name_size;
++=09size_t=09=09path_offset;
++=09int=09=09flags;
++=09const char=09*xdriver;=20
++} hw_type_t, *hw_type_p;
++
++/* xdriver can be set via config "InputClass" section.
++ * Do not set xdriver name if device have more than one
++ * xf86-input-* drivers.
++ * "input/event" can be hadled by: xf86-input-evdev and
++ * xf86-input-wacom, let user choose.
++ */
++static hw_type_t hw_types[] =3D {
++=09{ "uhid",=094, 0, 0, NULL },
++=09{ "ukbd",=094, 0, ATTR_KEY | ATTR_KEYBOARD, "kbd" },
++=09{ "atkbd",=095, 0, ATTR_KEY | ATTR_KEYBOARD, "kbd" },
++=09{ "kbdmux",=096, 0, ATTR_KEY | ATTR_KEYBOARD, "kbd" },
++=09{ "sysmouse",=098, 0, ATTR_POINTER, "mouse" },
++=09{ "ums",=093, 0, ATTR_POINTER, "mouse" },
++=09{ "psm",=093, 0, ATTR_POINTER, "mouse" },
++=09{ "vboxguest",=099, 0, ATTR_POINTER, "vboxmouse" },
++=09{ "joy",=093, 0, ATTR_JOYSTICK, NULL },
++=09{ "atp",=093, 0, ATTR_TOUCHPAD, NULL },
++=09{ "uep",=093, 0, ATTR_TOUCHSCREEN, NULL },
++=09{ "input/event",5, 6, 0, NULL },
++=09{ "input/js",=092, 6, ATTR_JOYSTICK, NULL },
++=09{ NULL,=09=090, 0, 0, NULL },
 +};
 +
-+static struct hw_type hw_types[] =3D {
-+=09{ "ukbd", ATTR_KEYBOARD, "kbd" },
-+=09{ "atkbd", ATTR_KEYBOARD, "kbd" },
-+=09{ "kbdmux", ATTR_KEYBOARD, "kbd" },
-+=09{ "sysmouse", ATTR_POINTER, "mouse" },
-+=09{ "ums", ATTR_POINTER, "mouse" },
-+=09{ "psm", ATTR_POINTER, "mouse" },
-+=09{ "vboxguest", ATTR_POINTER, "vboxmouse" },
-+=09{ "joy", ATTR_JOYSTICK, NULL },
-+=09{ "atp", ATTR_TOUCHPAD, NULL },
-+=09{ "uep", ATTR_TOUCHSCREEN, NULL },
-+=09{ NULL, -1, NULL },
++/* Input devices paths. */
++static hw_type_t hw_type_path[] =3D {
++=09{ "input/",=090, 6, 0, NULL },
++=09{ NULL,=09=090, 0, 0, NULL },
 +};
 +
-+static bool
-+sysctl_exists(const struct hw_type *device, int unit,
-+=09char *devname, size_t devname_len)
++static size_t
++bits_calc(const unsigned long *bits, size_t off_start, size_t off_sto=
p)
 +{
-+=09char sysctlname[PATH_MAX];
-+=09size_t len;
-+=09int ret;
++=09size_t count =3D 0;
 +
-+=09if (device =3D=3D NULL || device->driver =3D=3D NULL)
-+=09=09return false;
++=09for (size_t i =3D off_start; i < off_stop; ++i) {
++=09=09if (ULONG_IS_BIT_SET(bits, i)) {
++=09=09=09++count;
++=09=09}
++=09}
++=09return count;
++}
 +
-+=09/* Check if a sysctl exists. */
-+=09snprintf(sysctlname, sizeof(sysctlname), "dev.%s.%i.%%desc",
-+=09    device->driver, unit);
-+=09ret =3D sysctlbyname(sysctlname, NULL, &len, NULL, 0);
++static hw_type_p
++get_dev_type_by_name(const char *dev_name, size_t dev_name_size)
++{
++=09if (!dev_name || !dev_name_size)
++=09=09return NULL;
 +
-+=09if (ret =3D=3D 0 && len > 0) {
-+=09=09snprintf(devname, devname_len, "%s%i", device->driver, unit);
-+=09=09return true;
++=09for (size_t i =3D 0; hw_types[i].dev_name; ++i) {
++=09=09if (dev_name_size >=3D (hw_types[i].dev_name_size + hw_types[i]=
.path_offset) &&
++=09=09    !memcmp(dev_name, hw_types[i].dev_name, (hw_types[i].path_o=
ffset + hw_types[i].dev_name_size))) {
++=09=09=09return &hw_types[i];
++=09=09}
 +=09}
++=09return NULL;
++}
 +
-+=09return false;
++static hw_type_p
++get_dev_type_by_path(const char *dev_name, size_t dev_name_size, hw_t=
ype_p hw_type_cust)
++{
++=09if (!dev_name || !dev_name_size || !hw_type_cust)
++=09=09return NULL;
++
++=09for (size_t i =3D 0; hw_type_path[i].dev_name; ++i) {
++=09=09if (dev_name_size <=3D hw_type_path[i].path_offset ||
++=09=09    memcmp(dev_name, hw_type_path[i].dev_name, hw_type_path[i].=
path_offset))
++=09=09=09continue;
++=09=09/* Path in white list. */
++=09=09hw_type_cust->dev_name =3D dev_name;
++=09=09hw_type_cust->flags =3D hw_type_path[i].flags;
++=09=09hw_type_cust->xdriver =3D hw_type_path[i].xdriver;
++=09=09hw_type_cust->path_offset =3D hw_type_path[i].path_offset;
++=09=09size_t name_end =3D hw_type_cust->path_offset;
++=09=09while (name_end < dev_name_size && !isdigit(dev_name[name_end])=
)
++=09=09=09++name_end;
++=09=09hw_type_cust->dev_name_size =3D (name_end - hw_type_cust->path_=
offset);
++=09=09return hw_type_cust;
++=09}
++=09return NULL;
 +}
 +
-+static bool
-+devpath_exists(const struct hw_type *device,
-+=09char *devname, size_t devname_len)
++static int
++is_kbdmux_enabled(void)
 +{
-+=09char *devpath;
-+=09struct stat st;
-+=09int ret;
++=09/* Xorg uses /dev/ttyv0 as a console device */
++=09/* const char device[]=3D"/dev/console"; */
++=09static const char *device =3D _PATH_TTY "v0";
 +
-+=09if (device =3D=3D NULL || device->driver =3D=3D NULL)
-+=09=09return false;
++=09int fd =3D open(device, O_RDONLY);
++=09if (fd < 0)
++=09=09return 0;
 +
-+=09/* Check if /dev/$driver exists. */
-+=09asprintf(&devpath, "/dev/%s", device->driver);
-+=09if (devpath =3D=3D NULL)
-+=09=09return false;
++=09keyboard_info_t info;
++=09int ret =3D (ioctl(fd, KDGKBINFO, &info) =3D=3D -1 ||
++=09           memcmp(info.kb_name, "kbdmux", 6)) ? 0 : 1;
++=09close(fd);
++=09return ret;
++}
 +
-+=09ret =3D stat(devpath, &st);
-+=09free(devpath);
++/* Derived from EvdevProbe() function of xf86-input-evdev driver */
++static int
++get_evdev_flags(int fd)
++{
++=09if (fd<0)
++=09=09return 0;
 +
-+=09if (ret =3D=3D 0) {
-+=09=09strncpy(devname, device->driver, devname_len);
-+=09=09return true;
++=09unsigned long key_bits[ULONG_CNT(KEY_CNT)], rel_bits[ULONG_CNT(REL=
_CNT)], abs_bits[ULONG_CNT(ABS_CNT)];
++=09size_t has_keys =3D 0, has_buttons =3D 0, has_lmr =3D 0, has_rel_a=
xes =3D 0, has_abs_axes =3D 0, has_mt =3D 0;
++=09if (ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bits)), key_bits) !=3D =
-1) {
++=09=09has_keys =3D bits_calc(key_bits, 0, BTN_MISC);
++=09=09has_buttons =3D bits_calc(key_bits, BTN_MISC, BTN_JOYSTICK);
++=09=09has_lmr =3D bits_calc(key_bits, BTN_LEFT, BTN_MIDDLE);
 +=09}
++=09if (ioctl(fd, EVIOCGBIT(EV_REL, sizeof(rel_bits)), rel_bits) !=3D =
-1) {
++=09=09has_rel_axes =3D bits_calc(rel_bits, 0, REL_MAX);
++=09}
++=09if (ioctl(fd, EVIOCGBIT(EV_ABS, sizeof(abs_bits)), abs_bits) !=3D =
-1) {
++=09=09has_abs_axes =3D bits_calc(abs_bits, 0, ABS_MAX);
++=09=09has_mt =3D bits_calc(abs_bits, ABS_MT_SLOT, ABS_MAX);
++=09}
 +
-+=09return false;
++=09int flags =3D 0;
++=09if (has_abs_axes) {
++=09=09if (has_mt) {
++=09=09=09if (!has_buttons) {
++=09=09=09=09/*
++=09=09=09=09 * XXX: I'm not sure that joystick detection is
++=09=09=09=09 * done right. xf86-input-evdev does not support them.
++=09=09=09=09 */
++=09=09=09=09if (ULONG_IS_BIT_SET(key_bits, BTN_JOYSTICK))
++=09=09=09=09=09flags =3D ATTR_JOYSTICK;
++=09=09=09=09else
++=09=09=09=09=09++has_buttons;
++=09=09=09}
++=09=09}
++=09=09if (!flags && ULONG_IS_BIT_SET(abs_bits, ABS_X) && ULONG_IS_BIT=
_SET(abs_bits, ABS_Y)) {
++=09=09=09if (ULONG_IS_BIT_SET(key_bits, BTN_TOOL_PEN) ||
++=09=09=09    ULONG_IS_BIT_SET(key_bits, BTN_STYLUS) ||
++=09=09=09    ULONG_IS_BIT_SET(key_bits, BTN_STYLUS2))
++=09=09=09=09flags =3D ATTR_TABLET;
++=09=09=09else if (ULONG_IS_BIT_SET(abs_bits, ABS_PRESSURE) ||
++=09=09=09         ULONG_IS_BIT_SET(key_bits, BTN_TOUCH)) {
++=09=09=09=09if (has_lmr || ULONG_IS_BIT_SET(key_bits, BTN_TOOL_FINGER=
))
++=09=09=09=09=09flags =3D ATTR_TOUCHPAD;
++=09=09=09=09else
++=09=09=09=09=09flags =3D ATTR_TOUCHSCREEN;
++=09=09=09} else if (!(ULONG_IS_BIT_SET(rel_bits, REL_X) &&
++=09=09=09             ULONG_IS_BIT_SET(rel_bits, REL_Y)) &&
++=09=09=09            has_lmr) /* some touchscreens use BTN_LEFT rathe=
r than BTN_TOUCH */
++=09=09=09=09flags =3D ATTR_TOUCHSCREEN;
++=09=09}
++=09}
++=09if (!flags) {
++=09=09if (has_keys)
++=09=09=09flags =3D ATTR_KEY | ATTR_KEYBOARD;
++=09=09else if (has_rel_axes || has_abs_axes || has_buttons)
++=09=09=09flags =3D ATTR_POINTER;
++=09}
++=09return flags;
 +}
 +
++/* From: sys/dev/usb/usb_hid.c */
++static int
++hid_is_collection(report_desc_t s, uint32_t usage)
++{
++=09struct hid_data* hd =3D hid_start_parse(s, ~0, -1);
++=09if (!hd)
++=09=09return 0;
++
++=09struct hid_item hi;
++=09int rc;
++=09while ((rc =3D hid_get_item(hd, &hi))) {
++=09=09 if (hi.kind =3D=3D hid_collection && hi.usage =3D=3D usage)
++=09=09=09break;
++=09}
++=09hid_end_parse(hd);
++=09return rc;
++}
++
++static int
++hid_is_mouse(report_desc_t s)
++{
++=09struct hid_data* hd =3D hid_start_parse(s, (1 << hid_input), -1);
++=09if (!hd)
++=09=09return 0;
++
++=09struct hid_item hi;
++=09int found =3D 0, mdepth =3D 0;
++=09while (hid_get_item(hd, &hi)) {
++=09=09switch (hi.kind) {
++=09=09case hid_collection:
++=09=09=09if (mdepth !=3D 0)
++=09=09=09=09++mdepth;
++=09=09=09else if (hi.collection =3D=3D 1 &&
++=09=09=09         hi.usage =3D=3D HID_USAGE2(HUP_GENERIC_DESKTOP, HUG=
_MOUSE))
++=09=09=09=09++mdepth;
++=09=09=09break;
++=09=09case hid_endcollection:
++=09=09=09if (mdepth)
++=09=09=09=09--mdepth;
++=09=09=09break;
++=09=09case hid_input:
++=09=09=09if (!mdepth)
++=09=09=09=09break;
++=09=09=09if (hi.usage =3D=3D HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_X) &=
&
++=09=09=09    (hi.flags & (HIO_CONST|HIO_RELATIVE)) =3D=3D HIO_RELATIV=
E)
++=09=09=09=09++found;
++=09=09=09if (hi.usage =3D=3D HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_Y) &=
&
++=09=09=09    (hi.flags & (HIO_CONST|HIO_RELATIVE)) =3D=3D HIO_RELATIV=
E)
++=09=09=09=09++found;
++=09=09=09break;
++=09=09default:
++=09=09=09break;
++=09=09}
++=09}
++=09hid_end_parse(hd);
++=09return found;
++}
++
 +static char *
-+sysctl_get_str(const char *sysctlname)
++sysctl_get_str(const char *sysctlname, size_t *size_ret)
 +{
-+=09char *dest =3D NULL;
-+=09size_t len;
++=09if (!sysctlname)
++=09=09return NULL;
 +
-+=09if (sysctlname =3D=3D NULL)
++=09size_t len =3D 0;
++=09if (sysctlbyname(sysctlname, NULL, &len, NULL, 0) || !len)
 +=09=09return NULL;
 +
-+=09if (sysctlbyname(sysctlname, NULL, &len, NULL, 0) =3D=3D 0) {
-+=09=09dest =3D malloc(len + 1);
-+=09=09if (dest) {
-+=09=09=09if (sysctlbyname(sysctlname, dest, &len, NULL, 0) =3D=3D 0)
-+=09=09=09=09dest[len] =3D '\0';
-+=09=09=09else {
-+=09=09=09=09free(dest);
-+=09=09=09=09dest =3D NULL;
-+=09=09=09}
-+=09=09}
++=09char* dest =3D malloc(len + 1);
++=09if (!dest)
++=09=09return NULL;
++
++=09if (sysctlbyname(sysctlname, dest, &len, NULL, 0)) {
++=09=09free(dest);
++=09=09return NULL;
 +=09}
-+
++=09dest[len] =3D 0;
++=09if (size_ret)
++=09=09*size_ret =3D len;
 +=09return dest;
 +}
 +
-+static void
-+device_added(const char *devname)
++static char *
++devd_get_val(char *buf, size_t buf_size, const char *val_name, size_t=
 val_name_size, size_t *val_size)
 +{
-+=09char path[PATH_MAX];
-+=09char sysctlname[PATH_MAX];
-+=09char *vendor;
-+=09char *product =3D NULL;
-+=09char *config_info =3D NULL;
-+=09char *walk;
-+=09InputOption *options =3D NULL;
-+=09InputAttributes attrs =3D { };
-+=09DeviceIntPtr dev =3D NULL;
-+=09int i;
-+=09int fd;
++=09if (!buf || !buf_size || !val_name || !val_name_size)
++=09=09return NULL;
 +
-+=09for (i =3D 0; hw_types[i].driver !=3D NULL; i++) {
-+=09=09size_t len;
-+
-+=09=09len =3D strlen(hw_types[i].driver);
-+=09=09if (strcmp(devname, hw_types[i].driver) =3D=3D 0 ||
-+=09=09=09(strncmp(devname, hw_types[i].driver, len) =3D=3D 0 &&
-+=09=09=09=09isnumber(*(devname + len)))) {
-+=09=09=09attrs.flags |=3D hw_types[i].flag;
-+=09=09=09break;
++=09char *ret =3D buf, *buf_end =3D (buf + buf_size);
++=09while (ret && ret < buf_end) {
++=09=09ret =3D memmem(ret, (buf_end - ret), val_name, val_name_size);
++=09=09if (!ret)
++=09=09=09return NULL;
++=09=09/* Found. */
++=09=09/* Check: space before or buf+1. */
++=09=09if ((buf + 1) < ret && ret[-1] !=3D ' ') {
++=09=09=09ret +=3D val_name_size;
++=09=09=09continue;
 +=09=09}
++=09=09/* Check: =3D after name and size for value. */
++=09=09ret +=3D val_name_size;
++=09=09if ((ret + 1) >=3D buf_end)
++=09=09=09return NULL;
++=09=09if (ret[0] !=3D '=3D')
++=09=09=09continue;
++=09=09++ret;
++=09=09break;
 +=09}
++=09if (!ret || !val_size)
++=09=09return ret;
++=09/* Calc value data size. */
++=09char* ptr =3D memchr(ret, ' ', (buf_end - ret));
++=09if (!ptr) /* End of string/last value. */
++=09=09ptr =3D buf_end;
++=09*val_size =3D (ptr - ret);
++=09return ret;
++}
 +
-+=09if (hw_types[i].driver =3D=3D NULL || hw_types[i].xdriver =3D=3D N=
ULL) {
-+=09=09LogMessage(X_INFO, "config/devd: ignoring device %s\n",
-+=09=09=09=09devname);
++static void
++device_added(const char *dev_name, size_t dev_name_size, int allow_no=
_device)
++{
++=09if (!dev_name || !dev_name_size || dev_name_size > PATH_MAX)
 +=09=09return;
++
++=09char config_info[PATH_MAX + 32];
++=09/* Make dev_name null ended string. */
++=09snprintf(config_info, sizeof(config_info), DEVD_PATH_DEV"%.*s", (i=
nt)dev_name_size, dev_name);
++=09/* Set / update pointers to dev_name and dev_path. */
++=09char* dev_path =3D (config_info + DEVD_PATH_LEN); /* Skip: "devd:"=
 */
++=09dev_name =3D (dev_path + _PATH_DEV_LEN); /* Skip: "/dev/" */
++
++=09/* Is known input device or path? */
++=09hw_type_t *hwtype =3D get_dev_type_by_name(dev_name, dev_name_size=
);
++=09if (!hwtype) {
++=09=09hw_type_t hwtype_cust;
++=09=09hwtype =3D get_dev_type_by_path(dev_name, dev_name_size, &hwtyp=
e_cust);
 +=09}
++=09if (!hwtype) /* Not found in white list. */
++=09=09return;
 +
 +=09/* Skip keyboard devices if kbdmux is enabled */
-+=09if (is_kbdmux && is_console_kbd && hw_types[i].flag & ATTR_KEYBOAR=
D) {
-+=09=09LogMessage(X_INFO, "config/devd: kbdmux is enabled, ignoring de=
vice %s\n",
-+=09=09=09=09devname);
++=09if (is_kbdmux && !allow_no_device && (hwtype->flags & ATTR_KEYBOAR=
D)) {
++=09=09LogMessage(X_INFO, "config/devd: kbdmux is enabled, ignoring de=
vice %s\n", dev_name);
 +=09=09return;
 +=09}
-+
-+=09snprintf(path, sizeof(path), "/dev/%s", devname);
-+
-+=09options =3D input_option_new(NULL, "_source", "server/devd");
-+=09if (!options)
++=09/* Skip duplicate devices. */
++=09if (device_is_duplicate(config_info)) {
++=09=09LogMessage(X_WARNING, "config/devd: device %s already added. ig=
noring\n", dev_path);
 +=09=09return;
-+
-+=09snprintf(sysctlname, sizeof(sysctlname), "dev.%s.%s.%%desc",
-+=09    hw_types[i].driver, devname + strlen(hw_types[i].driver));
-+=09vendor =3D sysctl_get_str(sysctlname);
-+=09if (vendor =3D=3D NULL) {
-+=09=09options =3D input_option_new(options, "name", devname);
 +=09}
-+=09else {
-+=09=09if ((walk =3D strchr(vendor, ' ')) !=3D NULL) {
-+=09=09=09walk[0] =3D '\0';
-+=09=09=09walk++;
-+=09=09=09product =3D walk;
-+=09=09=09if ((walk =3D strchr(product, ',')) !=3D NULL)
-+=09=09=09=09walk[0] =3D '\0';
-+=09=09}
 +
-+=09=09attrs.vendor =3D strdup(vendor);
-+=09=09if (product) {
-+=09=09=09attrs.product =3D strdup(product);
-+=09=09=09options =3D input_option_new(options, "name", product);
-+=09=09}
-+=09=09else
-+=09=09=09options =3D input_option_new(options, "name", "(unnamed)");
++=09/* Init and set attributes. */
++=09char pnp_usb_id[PATH_MAX], product[PATH_MAX], vendor[PATH_MAX];
++=09InputAttributes attrs;
++=09memset(&attrs, 0, sizeof(attrs));
++=09attrs.device =3D dev_path;
++=09attrs.flags =3D hwtype->flags;
 +
-+=09=09free(vendor);
-+=09}
-+
-+=09/* XXX implement usb_id */
-+=09attrs.usb_id =3D NULL;
-+=09attrs.device =3D strdup(path);
-+=09options =3D input_option_new(options, "driver", hw_types[i].xdrive=
r);
-+
-+=09fd =3D open(path, O_RDONLY);
-+=09if (fd > 0) {
-+=09=09close(fd);
-+=09=09options =3D input_option_new(options, "device", path);
-+=09}
-+=09else {
-+=09=09if (attrs.flags & ~ATTR_KEYBOARD) {
-+=09=09=09LogMessage(X_INFO, "config/devd: device %s already opened\n"=
,
-+=09=09=09=09=09 path);
-+
++=09/* Try to open device. */
++=09int fd =3D open(dev_path, O_RDONLY);
++=09if (fd < 0) {
++=09=09if (!(hwtype->flags & (ATTR_KEY | ATTR_KEYBOARD))) {
 +=09=09=09/*
 +=09=09=09 * Fail if cannot open device, it breaks AllowMouseOpenFail,=

-+=09=09=09 * but it should not matter when config/devd enabled
++=09=09=09 * but it should not matter when config/devd is enabled
 +=09=09=09 */
-+=09=09=09goto unwind;
++=09=09=09LogMessage(X_WARNING, "config/devd: device %s already opened=
\n", dev_path);
++=09=09=09return;
 +=09=09}
-+
-+=09=09if (is_console_kbd) {
++=09=09if (!allow_no_device) {
 +=09=09=09/*
 +=09=09=09 * There can be only one keyboard attached to console and
 +=09=09=09 * it is already added.
 +=09=09=09 */
-+=09=09=09LogMessage(X_WARNING, "config/devd: console keyboard is "
-+=09=09=09=09=09"already added, ignoring %s (%s)\n",
-+=09=09=09=09=09attrs.product, path);
-+=09=09=09goto unwind;
++=09=09=09LogMessage(X_WARNING, "config/devd: console keyboard is alre=
ady added, ignoring %s\n", dev_path);
++=09=09=09return;
 +=09=09}
-+=09=09else
-+=09=09=09/*
-+=09=09=09 * Don't pass "device" option if the keyboard is already
-+=09=09=09 * attached to the console (ie. open() fails).
-+=09=09=09 * This would activate a special logic in xf86-input-keyboar=
d.
-+=09=09=09 * Prevent any other attached to console keyboards being
-+=09=09=09 * processed. There can be only one such device.
-+=09=09=09 */
-+=09=09=09is_console_kbd =3D true;
-+=09}
++=09} else {
++=09=09/* Try to get device info via ioctl(). */
++=09=09keyboard_info_t kbdi;
++=09=09mousehw_t mshw;
++=09=09struct input_id iid;
++=09=09report_desc_t rep_desc;
 +
-+=09if (asprintf(&config_info, "devd:%s", devname) =3D=3D -1) {
-+=09=09config_info =3D NULL;
-+=09=09goto unwind;
++=09=09if (ioctl(fd, KDGKBINFO, &kbdi) !=3D -1) { /* Is this keyboard?=
 */
++=09=09=09memcpy(product, kbdi.kb_name, sizeof(kbdi.kb_name));
++=09=09=09attrs.product =3D product;
++=09=09=09attrs.flags =3D ATTR_KEY | ATTR_KEYBOARD;
++=09=09=09LogMessage(X_INFO, "config/devd: detected keyboard: %s, kb_i=
ndex=3D%i, kb_unit=3D%i, kb_type=3D%i, kb_config=3D%i\n",
++=09=09=09           kbdi.kb_name, kbdi.kb_index, kbdi.kb_unit, kbdi.k=
b_type, kbdi.kb_config);
++=09=09} else if (ioctl(fd, MOUSE_GETHWINFO, &mshw) !=3D -1) { /* Is t=
his mouse? */
++=09=09=09/* FreeBSD mouse drivers does not return real vid+pid. */
++=09=09=09/* construct USB ID in lowercase hex - "0000:ffff" */
++=09=09=09if (mshw.iftype !=3D MOUSE_IF_USB && mshw.model > 0) {
++=09=09=09=09snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%04x:%04x", msh=
w.hwid, mshw.model);
++=09=09=09=09attrs.usb_id =3D pnp_usb_id;
++=09=09=09}
++=09=09=09if (mshw.type =3D=3D MOUSE_PAD)
++=09=09=09=09attrs.flags =3D ATTR_TOUCHPAD;
++=09=09=09else
++=09=09=09=09attrs.flags =3D ATTR_POINTER;
++=09=09=09LogMessage(X_INFO, "config/devd: detected mouse: hwid=3D%04x=
, model=3D%04x, type=3D%04x, iftype=3D%04x, buttons=3D%d\n",
++=09=09=09           mshw.hwid, mshw.model, mshw.type, mshw.iftype, ms=
hw.buttons);
++=09=09} else if (ioctl(fd, JSIOCGNAME((sizeof(product) - 1)), product=
) !=3D -1) { /* Is this joystick? */
++=09=09=09attrs.product =3D product;
++=09=09=09attrs.flags =3D ATTR_JOYSTICK;
++=09=09=09LogMessage(X_INFO, "config/devd: detected joystick: %s\n", p=
roduct);
++=09=09} else if (ioctl(fd, EVIOCGID, &iid) !=3D -1 &&
++=09=09           ioctl(fd, EVIOCGNAME((sizeof(product) - 1)), product=
) !=3D -1) { /* Is this event? */
++=09=09=09/* construct USB ID in lowercase hex - "0000:ffff" */
++=09=09=09snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%04x:%04x", iid.ve=
ndor, iid.product);
++=09=09=09attrs.usb_id =3D pnp_usb_id;
++=09=09=09attrs.product =3D product;
++=09=09=09/* Detect device type. */
++=09=09=09attrs.flags =3D get_evdev_flags(fd);
++=09=09=09/* Skip keyboard devices if kbdmix is enabled */
++=09=09=09if (is_kbdmux && (attrs.flags & ATTR_KEYBOARD)) {
++=09=09=09=09close(fd);
++=09=09=09=09LogMessage(X_INFO, "config/devd: kbdmux is enabled, ignor=
ing device %s\n", dev_name);
++=09=09=09=09return;
++=09=09=09}
++=09=09=09LogMessage(X_INFO, "config/devd: detected event input: %s, b=
ustype=3D%04x, vendor=3D%04x, product=3D%04x, version=3D%04x\n",
++=09=09=09           product, iid.bustype, iid.vendor, iid.product, ii=
d.version);
++=09=09} else if ((rep_desc =3D hid_get_report_desc(fd))) { /* Is USB =
HID? */
++=09=09=09if (hid_is_mouse(rep_desc)) {
++=09=09=09=09attrs.flags =3D ATTR_POINTER;
++=09=09=09=09LogMessage(X_INFO, "config/devd: detected USB HID mouse\n=
");
++=09=09=09} else if (hid_is_collection(rep_desc, HID_USAGE2(HUP_GENERI=
C_DESKTOP, HUG_KEYBOARD))) {
++=09=09=09=09/* Skip keyboard devices if kbdmux is enabled */
++=09=09=09=09if (is_kbdmux) {
++=09=09=09=09=09hid_dispose_report_desc(rep_desc);
++=09=09=09=09=09close(fd);
++=09=09=09=09=09LogMessage(X_INFO, "config/devd: kbdmux is enabled, ig=
noring device %s\n", dev_name);
++=09=09=09=09=09return;
++=09=09=09=09}
++=09=09=09=09attrs.flags =3D ATTR_KEY | ATTR_KEYBOARD;
++=09=09=09=09LogMessage(X_INFO, "config/devd: detected USB HID keyboar=
d\n");
++=09=09=09} else if (hid_is_collection(rep_desc, HID_USAGE2(HUP_GENERI=
C_DESKTOP, HUG_JOYSTICK)) ||
++=09=09=09           hid_is_collection(rep_desc, HID_USAGE2(HUP_GENERI=
C_DESKTOP, HUG_GAME_PAD))) {
++=09=09=09=09attrs.flags =3D ATTR_JOYSTICK;
++=09=09=09=09LogMessage(X_INFO, "config/devd: detected USB HID joystic=
k\n");
++=09=09=09} else
++=09=09=09=09LogMessage(X_INFO, "config/devd: detected USB HID of unkn=
own type\n");
++=09=09=09hid_dispose_report_desc(rep_desc);
++=09=09}
++
++=09=09if (!attrs.usb_id) { /* Is this webcamd device? */
++=09=09=09unsigned short vid, pid;
++=09=09=09if (ioctl(fd, WEBCAMD_IOCTL_GET_USB_VENDOR_ID, &vid) !=3D -1=
 &&
++=09=09=09    ioctl(fd, WEBCAMD_IOCTL_GET_USB_PRODUCT_ID, &pid) !=3D -=
1) {
++=09=09=09=09snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%04x:%04x", vid=
, pid);
++=09=09=09=09attrs.usb_id =3D pnp_usb_id;
++=09=09=09=09LogMessage(X_INFO, "config/devd: webcamd device: %s\n", p=
np_usb_id);
++=09=09=09}
++=09=09}
 +=09}
++=09close(fd);
 +
-+=09if (device_is_duplicate(config_info)) {
-+=09=09LogMessage(X_WARNING, "config/devd: device %s (%s) already adde=
d. "
-+=09=09=09=09"ignoring\n", attrs.product, path);
-+=09=09goto unwind;
++=09/* Try to get device info via sysctl(). */
++=09if (!attrs.usb_id && !attrs.pnp_id) {
++=09=09char sysctlname[PATH_MAX];
++=09=09snprintf(sysctlname, sizeof(sysctlname), "dev.%.*s.%s.%%pnpinfo=
",
++=09=09         (int)hwtype->dev_name_size,
++=09=09         (hwtype->dev_name + hwtype->path_offset),
++=09=09         (dev_name + hwtype->path_offset + hwtype->dev_name_siz=
e));
++=09=09size_t sdata_size;
++=09=09char* sdata =3D sysctl_get_str(sysctlname, &sdata_size);
++=09=09if (sdata) {
++=09=09=09size_t pid_size, vid_size;
++=09=09=09char* ptr_vid =3D devd_get_val_cstr("vendor", sdata, sdata_s=
ize, &vid_size);
++=09=09=09char* ptr_pid =3D devd_get_val_cstr("product", sdata, sdata_=
size, &pid_size);
++=09=09=09if (ptr_vid && ptr_pid) { /* usb_id */
++=09=09=09=09ptr_vid[vid_size] =3D 0;
++=09=09=09=09ptr_pid[pid_size] =3D 0;
++=09=09=09=09snprintf(pnp_usb_id, sizeof(pnp_usb_id), "%s:%s", ptr_vid=
, ptr_pid);
++=09=09=09=09attrs.usb_id =3D pnp_usb_id;
++=09=09=09=09LogMessage(X_INFO, "config/devd: [sysctl] usb_id: %s\n", =
pnp_usb_id);
++=09=09=09} else { /* pnp_id */
++=09=09=09=09strlcpy(pnp_usb_id, sdata, sizeof(pnp_usb_id));
++=09=09=09=09attrs.pnp_id =3D pnp_usb_id;
++=09=09=09}
++=09=09=09free(sdata);
++=09=09}
 +=09}
++=09if (!attrs.vendor || !attrs.product) {
++=09=09char sysctlname[PATH_MAX];
++=09=09snprintf(sysctlname, sizeof(sysctlname), "dev.%.*s.%s.%%desc",
++=09=09         (int)hwtype->dev_name_size,
++=09=09         (hwtype->dev_name + hwtype->path_offset),
++=09=09         (dev_name + hwtype->path_offset + hwtype->dev_name_siz=
e));
++=09=09size_t sdata_size;
++=09=09char* sdata =3D sysctl_get_str(sysctlname, &sdata_size);
++=09=09if (sdata) {
++=09=09=09/* Vendor. */
++=09=09=09char* ptr_pid =3D memchr(sdata, ' ', sdata_size);
++=09=09=09if (ptr_pid)
++=09=09=09=09ptr_pid[0] =3D 0;
++=09=09=09strlcpy(vendor, sdata, sizeof(vendor));
++=09=09=09attrs.vendor =3D vendor;
++=09=09=09/* Product. */
++=09=09=09if (!attrs.product && ptr_pid) {
++=09=09=09=09++ptr_pid;
++=09=09=09=09char* ptr_vid =3D memchr(ptr_pid, ',', (sdata_size - (ptr=
_pid - sdata)));
++=09=09=09=09if (ptr_vid)
++=09=09=09=09=09ptr_vid[0] =3D 0;
++=09=09=09=09strlcpy(product, ptr_pid, sizeof(product));
++=09=09=09=09attrs.product =3D product;
++=09=09=09} else
++=09=09=09=09product[0] =3D 0;
++=09=09=09free(sdata);
++=09=09=09LogMessage(X_INFO, "config/devd: [sysctl] vendor: %s, produc=
t: %s\n", vendor, product);
++=09=09}
++=09}
 +
-+=09options =3D input_option_new(options, "config_info", config_info);=

-+=09LogMessage(X_INFO, "config/devd: adding input device %s (%s)\n",
-+=09=09=09attrs.product, path);
-+
-+=09NewInputDeviceRequest(options, &attrs, &dev);
-+
-+unwind:
-+=09free(config_info);
-+=09input_option_free_list(&options);
-+=09free(attrs.usb_id);
-+=09free(attrs.product);
-+=09free(attrs.device);
-+=09free(attrs.vendor);
++=09/* Init options. */
++=09InputOption *option =3D NULL, *options =3D NULL;
++=09if ((option =3D input_option_new(options, "_source", "server/devd"=
)))
++=09=09options =3D option;
++=09if (option && (option =3D input_option_new(options, "config_info",=
 config_info)))
++=09=09options =3D option;
++=09if (option && (option =3D input_option_new(options, "name", (attrs=
.product ? attrs.product : dev_name))))
++=09=09options =3D option;
++=09if (option && hwtype->xdriver && (option =3D input_option_new(opti=
ons, "driver", hwtype->xdriver)))
++=09=09options =3D option;
++=09/*
++=09 * Don't pass "device" option if the keyboard is already attached =
to the console (ie. open() failed)
++=09 * This would activate a special logic in xf86-input-keyboard. Pre=
vent any other attached to console
++=09 * keyboards being processed. There can be only one such device.
++=09 */
++=09if (option && fd >=3D 0 && (option =3D input_option_new(options, "=
device", dev_path)))
++=09=09options =3D option;
++=09/* Most drivers just use "device" but evdev also uses "path" so po=
pulate both */
++=09if (option && (option =3D input_option_new(options, "path", dev_pa=
th)))
++=09=09options =3D option;
++=09if (option) {
++=09=09LogMessage(X_INFO, "config/devd: adding input device %s\n", dev=
_path);
++=09=09DeviceIntPtr dev_iptr =3D NULL;
++=09=09int rc;
++=09=09if ((rc =3D NewInputDeviceRequest(options, &attrs, &dev_iptr)) =
!=3D Success)
++=09=09=09LogMessage(X_ERROR, "config/devd: error %d adding device %s\=
n", rc, dev_path);
++=09} else
++=09=09LogMessage(X_ERROR, "config/devd: error adding device %s\n", de=
v_path);
++=09if (options)
++=09=09input_option_free_list(&options);
++=09return;
 +}
 +
 +static void
-+device_removed(char *devname)
++device_removed(const char *dev_name, size_t dev_name_size)
 +{
-+=09char *config_info;
 +
-+=09if (asprintf(&config_info, "devd:%s", devname) =3D=3D -1)
++=09if (!dev_name || !dev_name_size || dev_name_size > PATH_MAX)
 +=09=09return;
 +
++=09hw_type_t hwtype_cust;
++=09if (!get_dev_type_by_name(dev_name, dev_name_size) &&
++=09    !get_dev_type_by_path(dev_name, dev_name_size, &hwtype_cust))
++=09=09return;=09/* Device not in list - unknown. */
++
++=09char config_info[PATH_MAX + 32];
++=09snprintf(config_info, sizeof(config_info), DEVD_PATH_DEV"%.*s", (i=
nt)dev_name_size, dev_name);
++=09if (device_is_duplicate(config_info))
++=09=09LogMessage(X_INFO, "config/devd: removing input device %s\n", (=
config_info + DEVD_PATH_LEN));
++=09else
++=09=09LogMessage(X_INFO, "config/devd: removing nonexistent device %s=
\n", (config_info + DEVD_PATH_LEN));
 +=09remove_devices("devd", config_info);
-+
-+=09free(config_info);
++=09return;
 +}
 +
-+static bool is_kbdmux_enabled(void)
-+{
-+=09/* Xorg uses /dev/ttyv0 as a console device */
-+=09/* const char device[]=3D"/dev/console"; */
-+=09const char device[]=3D"/dev/ttyv0";
-+=09keyboard_info_t info;
-+=09int fd;
++static void socket_handler(int fd, int ready, void *data);
 +
-+=09fd =3D open(device, O_RDONLY);
-+
-+=09if (fd < 0)
-+=09=09return false;
-+
-+=09if (ioctl(fd, KDGKBINFO, &info) =3D=3D -1) {
-+=09=09close(fd);
-+=09=09return false;
-+=09}
-+
-+=09close(fd);
-+
-+=09if (!strncmp(info.kb_name, "kbdmux", 6))
-+=09=09return true;
-+
-+=09return false;
-+}
-+
-+static void
-+disconnect_devd(int sock)
-+{
-+=09if (sock >=3D 0) {
-+=09=09RemoveGeneralSocket(sock);
-+=09=09close(sock);
-+=09}
-+}
-+
 +static int
 +connect_devd(void)
 +{
-+=09struct sockaddr_un devd;
-+=09int sock;
-+
-+=09sock =3D socket(AF_UNIX, SOCK_STREAM, 0);
++=09int sock =3D socket(AF_UNIX, SOCK_STREAM, 0);
 +=09if (sock < 0) {
-+=09=09LogMessage(X_ERROR, "config/devd: fail opening stream socket\n"=
);
++=09=09LogMessage(X_ERROR, "config/devd: failed opening stream socket:=
 %s\n", strerror(errno));
 +=09=09return -1;
 +=09}
 +
++=09struct sockaddr_un devd;
 +=09devd.sun_family =3D AF_UNIX;
-+=09strlcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(devd.sun_path));
-+
-+=09if (connect(sock, (struct sockaddr *) &devd, sizeof(devd)) < 0) {
++=09memcpy(devd.sun_path, DEVD_SOCK_PATH, sizeof(DEVD_SOCK_PATH));
++=09if (connect(sock, (struct sockaddr*)&devd, sizeof(devd)) < 0) {
++=09=09int error =3D errno;
 +=09=09close(sock);
-+=09=09LogMessage(X_ERROR, "config/devd: fail to connect to devd\n");
++=09=09LogMessage(X_ERROR, "config/devd: failed to connect to devd: %s=
)\n", strerror(error));
 +=09=09return -1;
 +=09}
 +
-+=09AddGeneralSocket(sock);
++=09SetNotifyFd(sock, socket_handler, X_NOTIFY_READ, NULL);
++=09return sock;
++}
 +
-+=09return=09sock;
++static void
++disconnect_devd(int sock)
++{
++=09if (sock < 0)
++=09=09return;
++=09RemoveNotifyFd(sock);
++=09close(sock);
++=09return;
 +}
 +
 +static CARD32
 +reconnect_handler(OsTimerPtr timer, CARD32 time, void *arg)
 +{
-+=09int newsock;
-+
-+=09if ((newsock =3D connect_devd()) > 0) {
-+=09=09sock_devd =3D newsock;
-+=09=09TimerFree(rtimer);
-+=09=09rtimer =3D NULL;
-+=09=09LogMessage(X_INFO, "config/devd: reopening devd socket\n");
-+=09=09return 0;
-+=09}
-+
-+=09/* Try again after RECONNECT_DELAY */
-+=09return RECONNECT_DELAY;
++=09devd_buf_used =3D 0;
++=09devd_skt =3D connect_devd();
++=09if (devd_skt < 0) /* Try again after RECONNECT_DELAY */
++=09=09return RECONNECT_DELAY;
++=09TimerFree(rtimer);
++=09rtimer =3D NULL;
++=09LogMessage(X_INFO, "config/devd: reopened devd socket\n");
++=09return 0;
 +}
 +
-+static ssize_t
-+socket_getline(int fd, char **out)
++static void
++socket_handler(int fd, int ready, void *data)
 +{
-+=09char *buf, *newbuf;
-+=09ssize_t ret, cap, sz =3D 0;
-+=09char c;
-+
-+=09cap =3D 1024;
-+=09buf =3D malloc(cap * sizeof(char));
-+=09if (!buf)
-+=09=09return -1;
-+
-+=09for (;;) {
-+=09=09ret =3D read(sock_devd, &c, 1);
-+=09=09if (ret < 0) {
-+=09=09=09if (errno =3D=3D EINTR)
-+=09=09=09=09continue;
-+=09=09=09free(buf);
-+=09=09=09return -1;
-+=09=09/* EOF - devd socket is lost */
-+=09=09} else if (ret =3D=3D 0) {
-+=09=09=09disconnect_devd(sock_devd);
-+=09=09=09rtimer =3D TimerSet(NULL, 0, 1, reconnect_handler, NULL);
-+=09=09=09LogMessage(X_WARNING, "config/devd: devd socket is lost\n");=

-+=09=09=09free(buf);
-+=09=09=09return -1;
++=09/* Read new data. */
++=09while (1) {
++=09=09ssize_t ios =3D recv(devd_skt, (devd_buf + devd_buf_used), (siz=
eof(devd_buf) - devd_buf_used), MSG_DONTWAIT);
++=09=09if (ios > 0) { /* Read OK. */
++=09=09=09devd_buf_used +=3D ios;
++=09=09=09continue; /* Try to read more. */
 +=09=09}
-+=09=09if (c =3D=3D '\n')
-+=09=09=09break;
-+
-+=09=09if (sz + 1 >=3D cap) {
-+=09=09=09cap *=3D 2;
-+=09=09=09newbuf =3D realloc(buf, cap * sizeof(char));
-+=09=09=09if (!newbuf) {
-+=09=09=09=09free(buf);
-+=09=09=09=09return -1;
-+=09=09=09}
-+=09=09=09buf =3D newbuf;
++=09=09/* Something wrong. */
++=09=09int error =3D errno;
++=09=09if (error =3D=3D EAGAIN)
++=09=09=09break; /* All available data read. */
++=09=09if (error =3D=3D EINTR)
++=09=09=09continue;
++=09=09if (devd_buf_used >=3D sizeof(devd_buf)) {
++=09=09=09devd_buf_used =3D 0; /* Message too long, reset buf. */
++=09=09=09continue;
 +=09=09}
-+=09=09buf[sz] =3D c;
-+=09=09sz++;
++=09=09/* devd socket is lost */
++=09=09disconnect_devd(devd_skt);
++=09=09rtimer =3D TimerSet(NULL, 0, 1, reconnect_handler, NULL);
++=09=09LogMessage(X_WARNING, "config/devd: devd socket read error: %s\=
n", strerror(error));
++=09=09return;
 +=09}
 +
-+=09buf[sz] =3D '\0';
-+=09if (sz >=3D 0)
-+=09=09*out =3D buf;
-+=09else
-+=09=09free(buf);
++=09/* Process data. */
++=09char *ptr, *line =3D (devd_buf + 1);
++=09size_t line_size =3D 0;
++=09while((ptr =3D memchr(line, '\n', (devd_buf_used - line_size)))) {=

++=09=09line_size =3D (ptr - line);
++=09=09do {
++=09=09=09if (*(line - 1) !=3D DEVD_EVENT_NOTIFY)
++=09=09=09=09break; /* Handle only notify. */
++=09=09=09/* Check: is system=3DDEVFS. */
++=09=09=09size_t val_size;
++=09=09=09char* val =3D devd_get_val_cstr("system", line, line_size, &=
val_size);
++=09=09=09if (!is_meuqual_cstr("DEVFS", val, val_size))
++=09=09=09=09break;
++=09=09=09/* Check: is subsystem=3DCDEV. */
++=09=09=09val =3D devd_get_val_cstr("subsystem", line, line_size, &val=
_size);
++=09=09=09if (!is_meuqual_cstr("CDEV", val, val_size))
++=09=09=09=09break;
++=09=09=09/* Get device name. */
++=09=09=09size_t cdev_size;
++=09=09=09char* cdev =3D devd_get_val_cstr("cdev", line, line_size, &c=
dev_size);
++=09=09=09if (!cdev)
++=09=09=09=09break;
++=09=09=09/* Get event type. */
++=09=09=09val =3D devd_get_val_cstr("type", line, line_size, &val_size=
);
++=09=09=09if (is_meuqual_cstr("CREATE", val, val_size)) {
++=09=09=09=09device_added(cdev, cdev_size, 0);
++=09=09=09} else if (is_meuqual_cstr("DESTROY", val, val_size)) {
++=09=09=09=09device_removed(cdev, cdev_size);
++=09=09=09}
++=09=09} while(0);
 +
-+=09/* Number of bytes in the line, not counting the line break */
-+=09return sz;
-+}
-+
-+static void
-+wakeup_handler(void *data, int err, void *read_mask)
-+{
-+=09char *line =3D NULL;
-+=09char *walk;
-+
-+=09if (err < 0)
-+=09=09return;
-+
-+=09if (FD_ISSET(sock_devd, (fd_set *) read_mask)) {
-+=09=09if (socket_getline(sock_devd, &line) < 0)
++=09=09line +=3D (line_size + 2); /* Skip '\n' and event type byte. */=

++=09=09line_size =3D (line - devd_buf);
++=09=09if (devd_buf_used <=3D line_size) {
++=09=09=09devd_buf_used =3D 0;
 +=09=09=09return;
-+
-+=09=09walk =3D strchr(line + 1, ' ');
-+=09=09if (walk !=3D NULL)
-+=09=09=09walk[0] =3D '\0';
-+
-+=09=09switch (*line) {
-+=09=09case DEVD_EVENT_ADD:
-+=09=09=09device_added(line + 1);
-+=09=09=09break;
-+=09=09case DEVD_EVENT_REMOVE:
-+=09=09=09device_removed(line + 1);
-+=09=09=09break;
-+=09=09default:
-+=09=09=09break;
 +=09=09}
-+=09=09free(line);
 +=09}
++=09/* Save line without end marker. */
++=09if (line_size) {
++=09=09devd_buf_used -=3D (line_size - 1);
++=09=09memmove(devd_buf, (line - 1), devd_buf_used);
++=09}
++=09return;
 +}
 +
-+static void
-+block_handler(void *data, struct timeval **tv, void *read_mask)
-+{
-+}
-+
 +int
 +config_devd_init(void)
 +{
-+=09char devicename[1024];
-+=09int i, j;
-+
 +=09LogMessage(X_INFO, "config/devd: probing input devices...\n");
 +
 +=09/*
@@ -494,27 +828,46 @@
 +=09 * Add fake keyboard and give up on keyboards management
 +=09 * if kbdmux is enabled
 +=09 */
-+=09if ((is_kbdmux =3D is_kbdmux_enabled()) =3D=3D true)
-+=09=09device_added("kbdmux");
++=09is_kbdmux =3D is_kbdmux_enabled();
++=09if (is_kbdmux)
++=09=09device_added("kbdmux0", 7, 1);
 +
-+=09for (i =3D 0; hw_types[i].driver !=3D NULL; i++) {
-+=09=09/* First scan the sysctl to determine the hardware */
-+=09=09for (j =3D 0; j < 16; j++) {
-+=09=09=09if (sysctl_exists(&hw_types[i], j,
-+=09=09=09=09=09devicename, sizeof(devicename)) !=3D 0)
-+=09=09=09=09device_added(devicename);
++=09/* Scan /dev/ for devices. */
++=09struct dirent** namelist;
++=09size_t dir_cnt =3D scandir(_PATH_DEV, &namelist, 0, alphasort);
++=09for (size_t i =3D 0; i < dir_cnt; ++i) {
++=09=09struct dirent* de =3D namelist[i];
++=09=09if (is_de_euqual_cstr(de, ".") ||
++=09=09    is_de_euqual_cstr(de, "..")) {
++=09=09=09free(de);
++=09=09=09continue;
 +=09=09}
-+
-+=09=09if (devpath_exists(&hw_types[i], devicename, sizeof(devicename)=
) !=3D 0)
-+=09=09=09device_added(devicename);
++=09=09if (de->d_type !=3D DT_DIR) {
++=09=09=09device_added(de->d_name, de->d_namlen, 0);
++=09=09} else { /* Sub folder. */
++=09=09=09char devicename[PATH_MAX];
++=09=09=09snprintf(devicename, sizeof(devicename), _PATH_DEV "%s", de-=
>d_name);
++=09=09=09struct dirent** snamelist;
++=09=09=09size_t sdir_cnt =3D scandir(devicename, &snamelist, 0, alpha=
sort);
++=09=09=09for (size_t j =3D 0; j < sdir_cnt; ++j) {
++=09=09=09=09struct dirent* sde =3D snamelist[j];
++=09=09=09=09if (!is_de_euqual_cstr(sde, ".") &&
++=09=09=09=09    !is_de_euqual_cstr(sde, "..") &&
++=09=09=09=09    sde->d_type !=3D DT_DIR) {
++=09=09=09=09=09size_t tm =3D snprintf(devicename, sizeof(devicename),=
 "%s/%s", de->d_name, sde->d_name);
++=09=09=09=09=09device_added(devicename, tm, 0);
++=09=09=09=09}
++=09=09=09=09free(sde);
++=09=09=09}
++=09=09=09free(snamelist);
++=09=09}
++=09=09free(de);
 +=09}
++=09free(namelist);
 +
-+=09if ((sock_devd =3D connect_devd()) < 0)
-+=09=09return 0;
-+
-+=09RegisterBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL=
);
-+
-+=09return 1;
++=09devd_buf_used =3D 0;
++=09devd_skt =3D connect_devd();
++=09return (devd_skt < 0) ? 0 : 1;
 +}
 +
 +void
@@ -527,9 +880,6 @@
 +=09=09rtimer =3D NULL;
 +=09}
 +
-+=09disconnect_devd(sock_devd);
-+
-+=09RemoveBlockAndWakeupHandlers(block_handler, wakeup_handler, NULL);=

-+
-+=09is_console_kbd =3D false;
++=09disconnect_devd(devd_skt);
++=09return;
 +}
Index: x11-servers/xorg-server/files/patch-config_udev.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-config_udev.c=09(nonexistent)
+++ x11-servers/xorg-server/files/patch-config_udev.c=09(working copy)
@@ -0,0 +1,53 @@
+* Don't pass the device parameter when using kbdmux to prevent conflic=
t
+*
+* Specify a driver to use for basic devices (keyboard and mouse), othe=
rwise none attaches
+*
+--- config/udev.c.orig=092017-03-15 18:05:25 UTC
++++ config/udev.c
+@@ -29,6 +29,7 @@
+=20
+ #include <libudev.h>
+ #include <ctype.h>
++#include <fcntl.h>
+ #include <unistd.h>
+=20
+ #include "input.h"
+@@ -188,7 +189,21 @@ device_added(struct udev_device *udev_de
+         attrs.product =3D strdup(name);
+     input_options =3D input_option_new(input_options, "name", name);
+     input_options =3D input_option_new(input_options, "path", path);
+-    input_options =3D input_option_new(input_options, "device", path)=
;
++    if(strstr(path, "kbdmux") !=3D NULL) {
++        /*
++         * Don't pass "device" option if the keyboard is already atta=
ched
++         * to the console (ie. open() fails). This would activate a s=
pecial
++         * logic in xf86-input-keyboard. Prevent any other attached t=
o console
++         * keyboards being processed. There can be only one such devi=
ce.
++         */
++        int fd =3D open(path, O_RDONLY);
++        if (fd > -1) {
++            close(fd);
++            input_options =3D input_option_new(input_options, "device=
", path);
++        }
++    }
++    else
++        input_options =3D input_option_new(input_options, "device", p=
ath);
+     input_options =3D input_option_new(input_options, "major", itoa(m=
ajor(devnum)));
+     input_options =3D input_option_new(input_options, "minor", itoa(m=
inor(devnum)));
+     if (path)
+@@ -272,6 +287,15 @@ device_added(struct udev_device *udev_de
+         }
+     }
+=20
++    if (attrs.flags & (ATTR_KEY | ATTR_KEYBOARD))
++        input_options =3D input_option_new(input_options, "driver", "=
kbd");
++    else if (attrs.flags & ATTR_POINTER) {
++        if (strstr(path, "vbox"))
++            input_options =3D input_option_new(input_options, "driver=
", "vboxmouse");
++        else
++            input_options =3D input_option_new(input_options, "driver=
", "mouse");
++    }
++
+     input_options =3D input_option_new(input_options, "config_info", =
config_info);
+=20
+     /* Default setting needed for non-seat0 seats */

Property changes on: x11-servers/xorg-server/files/patch-config_udev.c
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/patch-configure
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-configure=09(revision 436260)
+++ x11-servers/xorg-server/files/patch-configure=09(working copy)
@@ -1,6 +1,41 @@
---- configure.orig=092016-07-19 17:27:31 UTC
+* generated from patched configure.ac; revise and regen instead of edi=
ting
+*
+* Plumb the devd config backend into configure
+*
+* define USE_DEV_IO for ARM platforms
+*
+* Only run pkg-config for udev if it is not disabled to prevent over-l=
inking
+*
+* Automatically use systemd/logind only on Linux
+*
+--- configure.orig=092017-03-15 18:05:39 UTC
 +++ configure
-@@ -23168,9 +23168,14 @@ $as_echo "#define USE_ALPHA_PIO 1" >>con
+@@ -1032,6 +1032,8 @@ CONFIG_UDEV_FALSE
+ CONFIG_UDEV_TRUE
+ UDEV_LIBS
+ UDEV_CFLAGS
++CONFIG_DEVD_FALSE
++CONFIG_DEVD_TRUE
+ HAVE_SYSTEMD_DAEMON_FALSE
+ HAVE_SYSTEMD_DAEMON_TRUE
+ SYSTEMD_DAEMON_LIBS
+@@ -1367,6 +1369,7 @@ enable_tslib
+ enable_dbe
+ enable_xf86bigfont
+ enable_dpms
++enable_config_devd
+ enable_config_udev
+ enable_config_udev_kms
+ enable_config_hal
+@@ -2191,6 +2194,7 @@ Optional Features:
+   --disable-dbe           Build DBE extension (default: enabled)
+   --enable-xf86bigfont    Build XF86 Big Font extension (default: dis=
abled)
+   --disable-dpms          Build DPMS extension (default: enabled)
++  --enable-config-devd    Build devd support (default: auto)
+   --enable-config-udev    Build udev support (default: auto)
+   --enable-config-udev-kms
+                           Build udev kms support (default: auto)
+@@ -23280,9 +23284,13 @@ $as_echo "#define USE_ALPHA_PIO 1" >>con
  =09esac
  =09GLX_ARCH_DEFINES=3D"-D__GLX_ALIGN64 -mieee"
  =09;;
@@ -9,19 +44,122 @@
  =09ARM_VIDEO=3Dyes
  =09DEFAULT_INT10=3D"stub"
 +=09case $host_os in
-+=09=09*freebsd*)
-+=09=09=09$as_echo "#define USE_DEV_IO 1" >>confdefs.h
-+=09=09 ;;
++=09=09*freebsd*)=09$as_echo "#define USE_DEV_IO 1" >>confdefs.h
++ ;;
 +=09esac
  =09;;
    i*86)
  =09I386_VIDEO=3Dyes
-@@ -26057,7 +26062,7 @@ fi
- case "x$XTRANS_SEND_FDS" in
- xauto)
- =09case "$host_os" in
--=09linux*|solaris*)
-+=09linux*|solaris*|freebsd*|dragonfly*|openbsd*)
- =09=09XTRANS_SEND_FDS=3Dyes
- =09=09;;
- =09*)
+@@ -24053,6 +24061,13 @@ else
+   DPMSExtension=3Dyes
+ fi
+=20
++# Check whether --enable-config-devd was given.
++if test "${enable_config_devd+set}" =3D set; then :
++  enableval=3D$enable_config_devd; CONFIG_DEVD=3D$enableval
++else
++  CONFIG_DEVD=3Dauto
++fi
++
+ # Check whether --enable-config-udev was given.
+ if test "${enable_config_udev+set}" =3D set; then :
+   enableval=3D$enable_config_udev; CONFIG_UDEV=3D$enableval
+@@ -25813,6 +25828,31 @@ if test "x$CONFIG_UDEV" =3D xyes && test "
+ =09as_fn_error $? "Hotplugging through both libudev and hal not allow=
ed" "$LINENO" 5
+ fi
+=20
++if test "x$CONFIG_DEVD" =3D xauto; then
++=09case $host_os in
++=09=09*freebsd*)
++=09=09=09CONFIG_DEVD=3Dyes
++=09=09=09;;
++=09=09*)
++=09=09=09CONFIG_DEVD=3Dno
++=09=09=09;;
++=09esac
++fi
++ if test "x$CONFIG_DEVD" =3D xyes; then
++  CONFIG_DEVD_TRUE=3D
++  CONFIG_DEVD_FALSE=3D'#'
++else
++  CONFIG_DEVD_TRUE=3D'#'
++  CONFIG_DEVD_FALSE=3D
++fi
++
++if test "x$CONFIG_DEVD" =3D xyes; then
++
++$as_echo "#define CONFIG_DEVD 1" >>confdefs.h
++
++fi
++
++if test "x$CONFIG_UDEV" !=3D xno; then
+=20
+ pkg_failed=3Dno
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for UDEV" >&5
+@@ -25884,11 +25924,12 @@ else
+ $as_echo "yes" >&6; }
+ =09HAVE_LIBUDEV=3Dyes
+ fi
+-if test "x$CONFIG_UDEV" =3D xauto; then
+-=09CONFIG_UDEV=3D"$HAVE_LIBUDEV"
++=09if test "x$CONFIG_UDEV" =3D xauto; then
++=09=09CONFIG_UDEV=3D"$HAVE_LIBUDEV"
+=20
+ $as_echo "#define HAVE_LIBUDEV 1" >>confdefs.h
+=20
++=09fi
+ fi
+  if test "x$CONFIG_UDEV" =3D xyes; then
+   CONFIG_UDEV_TRUE=3D
+@@ -26132,7 +26173,14 @@ fi
+=20
+ if test "x$SYSTEMD_LOGIND" =3D xauto; then
+         if test "x$HAVE_DBUS" =3D xyes -a "x$CONFIG_UDEV" =3D xyes ; =
then
+-                SYSTEMD_LOGIND=3Dyes
++            case $host_os in
++                *linux*)
++                        SYSTEMD_LOGIND=3Dyes
++                        ;;
++                *)
++                        SYSTEMD_LOGIND=3Dno
++                        ;;
++            esac
+         else
+                 SYSTEMD_LOGIND=3Dno
+         fi
+@@ -32849,17 +32897,17 @@ DIX_CFLAGS=3D"-DHAVE_DIX_CONFIG_H $XSERVER
+ ac_config_commands=3D"$ac_config_commands sdksyms"
+=20
+=20
+-if test "x$CONFIG_HAL" =3D xno && test "x$CONFIG_UDEV" =3D xno; then
++if test "x$CONFIG_HAL" =3D xno && test "x$CONFIG_UDEV" =3D xno && tes=
t "x$CONFIG_DEVD" =3D xno; then
+     { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING:
+-             ***********************************************
+-             Neither HAL nor udev backend will be enabled.
++             *****************************************************
++             Neither HAL, devd, nor udev backend will be enabled.
+              Input device hotplugging will not be available!
+-             ***********************************************" >&5
++             *****************************************************" >=
&5
+ $as_echo "$as_me: WARNING:
+-             ***********************************************
+-             Neither HAL nor udev backend will be enabled.
++             *****************************************************
++             Neither HAL, devd, nor udev backend will be enabled.
+              Input device hotplugging will not be available!
+-             ***********************************************" >&2;}
++             *****************************************************" >=
&2;}
+ fi
+=20
+ ac_config_files=3D"$ac_config_files Makefile glx/Makefile include/Mak=
efile composite/Makefile damageext/Makefile dbe/Makefile dix/Makefile d=
oc/Makefile doc/dtrace/Makefile man/Makefile fb/Makefile glamor/Makefil=
e record/Makefile config/Makefile mi/Makefile miext/Makefile miext/sync=
/Makefile miext/damage/Makefile miext/shadow/Makefile miext/rootless/Ma=
kefile os/Makefile pseudoramiX/Makefile randr/Makefile render/Makefile =
xkb/Makefile Xext/Makefile Xi/Makefile xfixes/Makefile exa/Makefile dri=
3/Makefile present/Makefile hw/Makefile hw/xfree86/Makefile hw/xfree86/=
Xorg.sh hw/xfree86/common/Makefile hw/xfree86/common/xf86Build.h hw/xfr=
ee86/ddc/Makefile hw/xfree86/dixmods/Makefile hw/xfree86/doc/Makefile h=
w/xfree86/dri/Makefile hw/xfree86/dri2/Makefile hw/xfree86/dri2/pci_ids=
/Makefile hw/xfree86/drivers/Makefile hw/xfree86/drivers/modesetting/Ma=
kefile hw/xfree86/exa/Makefile hw/xfree86/exa/man/Makefile hw/xfree86/f=
bdevhw/Makefile hw/xfree86/fbdevhw/man/Makefile hw/xfree86/glamor_egl/M=
akefile hw/xfree86/i2c/Makefile hw/xfree86/int10/Makefile hw/xfree86/lo=
ader/Makefile hw/xfree86/man/Makefile hw/xfree86/modes/Makefile hw/xfre=
e86/os-support/Makefile hw/xfree86/os-support/bsd/Makefile hw/xfree86/o=
s-support/bus/Makefile hw/xfree86/os-support/hurd/Makefile hw/xfree86/o=
s-support/misc/Makefile hw/xfree86/os-support/linux/Makefile hw/xfree86=
/os-support/solaris/Makefile hw/xfree86/os-support/stub/Makefile hw/xfr=
ee86/parser/Makefile hw/xfree86/ramdac/Makefile hw/xfree86/shadowfb/Mak=
efile hw/xfree86/vbe/Makefile hw/xfree86/vgahw/Makefile hw/xfree86/x86e=
mu/Makefile hw/xfree86/utils/Makefile hw/xfree86/utils/man/Makefile hw/=
xfree86/utils/cvt/Makefile hw/xfree86/utils/gtf/Makefile hw/dmx/config/=
Makefile hw/dmx/config/man/Makefile hw/dmx/doc/Makefile hw/dmx/doxygen/=
doxygen.conf hw/dmx/doxygen/Makefile hw/dmx/examples/Makefile hw/dmx/in=
put/Makefile hw/dmx/glxProxy/Makefile hw/dmx/Makefile hw/dmx/man/Makefi=
le hw/vfb/Makefile hw/vfb/man/Makefile hw/xnest/Makefile hw/xnest/man/M=
akefile hw/xwin/Makefile hw/xwin/dri/Makefile hw/xwin/glx/Makefile hw/x=
win/man/Makefile hw/xwin/winclipboard/Makefile hw/xquartz/Makefile hw/x=
quartz/GL/Makefile hw/xquartz/bundle/Makefile hw/xquartz/man/Makefile h=
w/xquartz/mach-startup/Makefile hw/xquartz/pbproxy/Makefile hw/xquartz/=
xpr/Makefile hw/kdrive/Makefile hw/kdrive/ephyr/Makefile hw/kdrive/ephy=
r/man/Makefile hw/kdrive/fake/Makefile hw/kdrive/fbdev/Makefile hw/kdri=
ve/linux/Makefile hw/kdrive/src/Makefile hw/xwayland/Makefile test/Make=
file test/xi1/Makefile test/xi2/Makefile xserver.ent xorg-server.pc"
+@@ -33122,6 +33170,10 @@ if test -z "${HAVE_SYSTEMD_DAEMON_TRUE}"
+   as_fn_error $? "conditional \"HAVE_SYSTEMD_DAEMON\" was never defin=
ed.
+ Usually this means the macro was only invoked conditionally." "$LINEN=
O" 5
+ fi
++if test -z "${CONFIG_DEVD_TRUE}" && test -z "${CONFIG_DEVD_FALSE}"; t=
hen
++  as_fn_error $? "conditional \"CONFIG_DEVD\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINEN=
O" 5
++fi
+ if test -z "${CONFIG_UDEV_TRUE}" && test -z "${CONFIG_UDEV_FALSE}"; t=
hen
+   as_fn_error $? "conditional \"CONFIG_UDEV\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINEN=
O" 5
Index: x11-servers/xorg-server/files/patch-hw_xfree86_Makefile.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_Makefile.in=09(nonex=
istent)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_Makefile.in=09(worki=
ng copy)
@@ -0,0 +1,14 @@
+* Don't overwrite Xorg binary with Xorg.sh when SUID_WRAPPER_DIR =3D=3D=
 bindir
+* Instead, relink bin/X to Xorg.wrap rather than to Xorg (which isn't =
Xorg.sh)
+*
+--- hw/xfree86/Makefile.in.orig=092017-03-16 05:24:43 UTC
++++ hw/xfree86/Makefile.in
+@@ -1149,7 +1149,7 @@ install-exec-hook:
+ @INSTALL_SETUID_TRUE@=09chmod u+s $(DESTDIR)$(bindir)/Xorg
+ @SUID_WRAPPER_TRUE@=09$(MKDIR_P) $(DESTDIR)$(SUID_WRAPPER_DIR)
+ @SUID_WRAPPER_TRUE@=09mv $(DESTDIR)$(bindir)/Xorg $(DESTDIR)$(SUID_WR=
APPER_DIR)/Xorg
+-@SUID_WRAPPER_TRUE@=09${INSTALL} -m 755 Xorg.sh $(DESTDIR)$(bindir)/X=
org
++@SUID_WRAPPER_TRUE@=09(test ! -f $(DESTDIR)$(bindir)/Xorg && ${INSTAL=
L} -m 755 Xorg.sh $(DESTDIR)$(bindir)/Xorg || cd $(DESTDIR)$(bindir) &&=
 rm -f X && $(LN_S) Xorg.wrap$(EXEEXT) X)
+ @SUID_WRAPPER_TRUE@=09-chown root $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.=
wrap && chmod u+s $(DESTDIR)$(SUID_WRAPPER_DIR)/Xorg.wrap
+=20
+ uninstall-local:

Property changes on: x11-servers/xorg-server/files/patch-hw_xfree86_Mak=
efile.in
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86AutoCo=
nfig.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86AutoConfi=
g.c=09(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86AutoConfi=
g.c=09(working copy)
@@ -1,4 +1,8 @@
---- hw/xfree86/common/xf86AutoConfig.c.orig=092017-01-11 20:00:58 UTC
+* Try using modesetting driver before falling back to scfb or vesa
+*
+* Use our scfb driver as fallback instead of Linux's fbdev
+*
+--- hw/xfree86/common/xf86AutoConfig.c.orig=092017-03-15 18:05:25 UTC
 +++ hw/xfree86/common/xf86AutoConfig.c
 @@ -276,7 +276,7 @@ listPossibleVideoDrivers(char *matches[]
          i +=3D xf86PciMatchDriver(&matches[i], nmatches - i);
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Config=
.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Config.c=09=
(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Config.c=09=
(working copy)
@@ -1,12 +1,14 @@
---- hw/xfree86/common/xf86Config.c.orig=092016-07-19 17:14:30 UTC
+* Select the devd config backend if it is activated
+*
+--- hw/xfree86/common/xf86Config.c.orig=092017-03-15 18:05:25 UTC
 +++ hw/xfree86/common/xf86Config.c
-@@ -1410,13 +1410,16 @@ checkCoreInputDevices(serverLayoutPtr se
+@@ -1375,13 +1375,16 @@ checkCoreInputDevices(serverLayoutPtr se
      }
 =20
      if (!xf86Info.forceInputDevices && !(foundPointer && foundKeyboar=
d)) {
 -#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSC=
ONS)
 +#if defined(CONFIG_HAL) || defined(CONFIG_UDEV) || defined(CONFIG_WSC=
ONS) || \
-+=09=09defined(CONFIG_DEVD)
++=09defined(CONFIG_DEVD)
          const char *config_backend;
 =20
  #if defined(CONFIG_HAL)
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Global=
s.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Globals.c=
=09(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Globals.c=
=09(working copy)
@@ -1,4 +1,6 @@
---- hw/xfree86/common/xf86Globals.c.orig=092016-07-19 17:07:29 UTC
+* Include devd in the set of config backends
+*
+--- hw/xfree86/common/xf86Globals.c.orig=092017-03-15 18:05:25 UTC
 +++ hw/xfree86/common/xf86Globals.c
 @@ -122,7 +122,8 @@ xf86InfoRec xf86Info =3D {
      .pmFlag =3D TRUE,
Index: x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Xinput=
.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Xinput.c=09=
(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_common_xf86Xinput.c=09=
(working copy)
@@ -1,6 +1,8 @@
---- hw/xfree86/common/xf86Xinput.c.orig=092016-07-19 17:07:29 UTC
+* Recognize devd backend as a source of auto-configured devices
+*
+--- hw/xfree86/common/xf86Xinput.c.orig=092017-03-15 18:05:25 UTC
 +++ hw/xfree86/common/xf86Xinput.c
-@@ -841,7 +841,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, D
+@@ -871,7 +871,7 @@ xf86NewInputDevice(InputInfoPtr pInfo, D
  {
      InputDriverPtr drv =3D NULL;
      DeviceIntPtr dev =3D NULL;
@@ -9,7 +11,7 @@
      int rval;
      char *path =3D NULL;
 =20
-@@ -996,6 +996,7 @@ NewInputDeviceRequest(InputOption *optio
+@@ -1034,6 +1034,7 @@ NewInputDeviceRequest(InputOption *optio
          if (strcmp(key, "_source") =3D=3D 0 &&
              (strcmp(value, "server/hal") =3D=3D 0 ||
               strcmp(value, "server/udev") =3D=3D 0 ||
Index: x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_bs=
d__init.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_bsd__=
init.c=09(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_bsd__=
init.c=09(working copy)
@@ -1,4 +1,4 @@
---- hw/xfree86/os-support/bsd/bsd_init.c.orig=092016-07-19 17:07:29 UT=
C
+--- hw/xfree86/os-support/bsd/bsd_init.c.orig=092017-03-15 18:05:25 UT=
C
 +++ hw/xfree86/os-support/bsd/bsd_init.c
 @@ -230,6 +230,9 @@ xf86OpenConsole()
               * Add cases for other *BSD that behave the same.
Index: x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_i3=
86__video.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_i386_=
_video.c=09(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_i386_=
_video.c=09(working copy)
@@ -1,5 +1,5 @@
 Index: programs/Xserver/hw/xfree86/os-support/bsd/i386_video.c
---- hw/xfree86/os-support/bsd/i386_video.c.orig=092016-07-15 16:18:11 =
UTC
+--- hw/xfree86/os-support/bsd/i386_video.c.orig=092017-03-15 18:05:25 =
UTC
 +++ hw/xfree86/os-support/bsd/i386_video.c
 @@ -32,6 +32,7 @@
  #include "xf86Priv.h"
Index: x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_pp=
c__video.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_ppc__=
video.c=09(revision 436260)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_os-support_bsd_ppc__=
video.c=09(working copy)
@@ -1,4 +1,4 @@
---- hw/xfree86/os-support/bsd/ppc_video.c.orig=092016-07-15 16:18:11 U=
TC
+--- hw/xfree86/os-support/bsd/ppc_video.c.orig=092017-03-15 18:05:25 U=
TC
 +++ hw/xfree86/os-support/bsd/ppc_video.c
 @@ -79,7 +79,11 @@ xf86DisableIO()
  {
Index: x11-servers/xorg-server/files/patch-hw_xfree86_xorg-wrapper.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-hw_xfree86_xorg-wrapper.c=09(no=
nexistent)
+++ x11-servers/xorg-server/files/patch-hw_xfree86_xorg-wrapper.c=09(wo=
rking copy)
@@ -0,0 +1,27 @@
+* Skip the detection of root rights requirement, the assumption that p=
resence
+* of KMS drivers removes the root requirement is only valid for Linux
+*
+--- hw/xfree86/xorg-wrapper.c.orig=092017-03-15 18:05:25 UTC
++++ hw/xfree86/xorg-wrapper.c
+@@ -188,9 +188,6 @@ static int on_console(int fd)
+=20
+ int main(int argc, char *argv[])
+ {
+-#ifdef WITH_LIBDRM
+-    struct drm_mode_card_res res;
+-#endif
+     char buf[PATH_MAX];
+     int i, r, fd;
+     int kms_cards =3D 0;
+@@ -227,9 +224,10 @@ int main(int argc, char *argv[])
+         }
+     }
+=20
+-#ifdef WITH_LIBDRM
++#if defined(WITH_LIBDRM) && defined(__linux__)
+     /* Detect if we need root rights, except when overriden by the co=
nfig */
+     if (needs_root_rights =3D=3D -1) {
++        struct drm_mode_card_res res;
+         for (i =3D 0; i < 16; i++) {
+             snprintf(buf, sizeof(buf), DRM_DEV_NAME, DRM_DIR_NAME, i)=
;
+             fd =3D open(buf, O_RDWR);

Property changes on: x11-servers/xorg-server/files/patch-hw_xfree86_xor=
g-wrapper.c
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/patch-include_dix-config.h.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-include_dix-config.h.in=09(none=
xistent)
+++ x11-servers/xorg-server/files/patch-include_dix-config.h.in=09(work=
ing copy)
@@ -0,0 +1,14 @@
+* Add a define which will be toggled by configure when devd backend is=
 activated
+*
+--- include/dix-config.h.in.orig=092017-03-15 18:05:25 UTC
++++ include/dix-config.h.in
+@@ -433,6 +433,9 @@
+ /* Support D-Bus */
+ #undef HAVE_DBUS
+=20
++/* Use devd for input hotplug */
++#undef CONFIG_DEVD
++
+ /* Use libudev for input hotplug */
+ #undef CONFIG_UDEV
+=20

Property changes on: x11-servers/xorg-server/files/patch-include_dix-co=
nfig.h.in
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/files/patch-xkb_Makefile.in
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/patch-xkb_Makefile.in=09(revision 436=
260)
+++ x11-servers/xorg-server/files/patch-xkb_Makefile.in=09(working copy=
)
@@ -1,6 +1,11 @@
---- xkb/Makefile.in.orig=092017-01-19 15:20:42 UTC
+* Skip installing a README into a directory which is actually a symlin=
k created
+* by another port. If this file is installed, then upon uninstall pkg =
will
+* delete the directory under the symlink, which would cause a reinstal=
l to fail
+* as the target directory is not remade until reinstalling the other p=
ort
+*
+--- xkb/Makefile.in.orig=092017-03-16 05:24:43 UTC
 +++ xkb/Makefile.in
-@@ -878,7 +878,7 @@ info: info-am
+@@ -886,7 +886,7 @@ info: info-am
 =20
  info-am:
 =20
Index: x11-servers/xorg-server/files/xkb_Makefile.am
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/files/xkb_Makefile.am=09(nonexistent)
+++ x11-servers/xorg-server/files/xkb_Makefile.am=09(working copy)
@@ -0,0 +1,13 @@
+* Skip installing a README into a directory which is actually a symlin=
k created
+* by another port. If this file is installed, then upon uninstall pkg =
will
+* delete the directory under the symlink, which would cause a reinstal=
l to fail
+* as the target directory is not remade until reinstalling the other p=
ort
+*
+--- xkb/Makefile.am.orig=092017-03-16 05:24:43 UTC
++++ xkb/Makefile.am
+@@ -39,4 +39,4 @@ libxkbstubs_la_SOURCES =3D ddxVT.c ddxPriv
+ EXTRA_DIST =3D xkbDflts.h xkbgeom.h xkb.h
+=20
+ xkbcompileddir =3D $(XKB_COMPILED_DIR)
+-dist_xkbcompiled_DATA =3D README.compiled
++#dist_xkbcompiled_DATA =3D README.compiled

Property changes on: x11-servers/xorg-server/files/xkb_Makefile.am
___________________________________________________________________
Added: fbsd:nokeywords
## -0,0 +1 ##
+yes
\ No newline at end of property
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Index: x11-servers/xorg-server/pkg-plist
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-server/pkg-plist=09(revision 436260)
+++ x11-servers/xorg-server/pkg-plist=09(working copy)
@@ -1,6 +1,6 @@
 bin/X
-%%SUID%%@(,,4555) bin/Xorg
-%%NO_SUID%%bin/Xorg
+bin/Xorg
+%%SUID%%@(,,4555) bin/Xorg.wrap
 bin/cvt
 bin/gtf
 include/xorg/BT.h
@@ -159,7 +159,7 @@
 include/xorg/xorg-server.h
 include/xorg/xorgVersion.h
 include/xorg/xserver-properties.h
-@comment include/xorg/xserver_poll.h
+include/xorg/xserver_poll.h
 include/xorg/xvdix.h
 include/xorg/xvmcext.h
 lib/xorg/modules/drivers/modesetting_drv.so
@@ -177,6 +177,7 @@
 lib/xorg/protocol.txt
 libdata/pkgconfig/xorg-server.pc
 man/man1/Xorg.1.gz
+%%SUID%%man/man1/Xorg.wrap.1.gz
 man/man1/Xserver.1.gz
 man/man1/cvt.1.gz
 man/man1/gtf.1.gz
@@ -183,7 +184,9 @@
 man/man4/exa.4.gz
 man/man4/fbdevhw.4.gz
 man/man4/modesetting.4.gz
+%%SUID%%man/man5/Xwrapper.config.5.gz
 man/man5/xorg.conf.5.gz
 man/man5/xorg.conf.d.5.gz
+%%UDEV%%share/X11/xorg.conf.d/10-quirks.conf
 share/aclocal/xorg-server.m4
 @dir etc/X11/xorg.conf.d
Index: x11-servers/xorg-vfbserver/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-vfbserver/Makefile=09(revision 436260)
+++ x11-servers/xorg-vfbserver/Makefile=09(working copy)
@@ -2,7 +2,6 @@
 # $FreeBSD$
=20
 PORTNAME=3D=09xorg-vfbserver
-PORTVERSION=3D=091.19.1
 PORTEPOCH=3D=091
=20
 COMMENT=3D=09X virtual framebuffer server from X.Org
@@ -11,14 +10,9 @@
=20
 MASTERDIR=3D=09${.CURDIR}/../xorg-server
 DESCR=3D=09=09${.CURDIR}/pkg-descr
-DISTINFO_FILE=3D=09${.CURDIR}/distinfo
-PATCHDIR=3D=09${.CURDIR}/files
=20
 SLAVE_PORT=3D=09yes
-OPTIONS_EXCLUDE=3DDEVD HAL SUID
=20
-USE_XORG=3D=09xfont2
-
 CONFIGURE_ARGS+=3D--enable-xvfb --disable-dmx --disable-xephyr --disab=
le-xnest \
 =09=09--disable-xwayland
=20
Index: x11-servers/xorg-vfbserver/distinfo
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xorg-vfbserver/distinfo=09(revision 436260)
+++ x11-servers/xorg-vfbserver/distinfo=09(nonexistent)
@@ -1,3 +0,0 @@
-TIMESTAMP =3D 1484389062
-SHA256 (xorg/xserver/xorg-server-1.19.1.tar.bz2) =3D 79ae2cf39d3f6c4a9=
1201d8dad549d1d774b3420073c5a70d390040aa965a7fb
-SIZE (xorg/xserver/xorg-server-1.19.1.tar.bz2) =3D 6041792

Property changes on: x11-servers/xorg-vfbserver/distinfo
___________________________________________________________________
Deleted: fbsd:nokeywords
## -1 +0,0 ##
-yes
\ No newline at end of property
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property
Index: x11-servers/xwayland/Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xwayland/Makefile=09(revision 436260)
+++ x11-servers/xwayland/Makefile=09(working copy)
@@ -1,7 +1,6 @@
 # $FreeBSD$
=20
 PORTNAME=3D=09xwayland
-PORTVERSION=3D=091.19.1
=20
 COMMENT=3D=09X Clients under Wayland
=20
@@ -13,18 +12,13 @@
=20
 MASTERDIR=3D=09${.CURDIR}/../xorg-server
 DESCR=3D=09=09${.CURDIR}/pkg-descr
-DISTINFO_FILE=3D=09${.CURDIR}/distinfo
-PATCHDIR=3D=09${.CURDIR}/files
=20
 SLAVE_PORT=3D=09yes
-OPTIONS_EXCLUDE=3DDEVD HAL SUID
-
-USE_XORG=3D=09x11 xext xfont2
+USE_XORG=3D=09x11 xext
 USE_GL+=3D=09egl gbm
=20
-CONFIGURE_ARGS+=3D=09--disable-docs --disable-devel-docs \
-=09=09=09--enable-xwayland --disable-xorg --disable-xvfb --disable-xne=
st \
-=09=09=09--disable-xquartz --disable-xwin
+CONFIGURE_ARGS+=3D--disable-dmx --disable-xephyr --disable-xnest --dis=
able-xvfb \
+=09=09--enable-xwayland=20
=20
 PLIST_FILES=3D=09bin/Xwayland
=20
Index: x11-servers/xwayland/distinfo
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- x11-servers/xwayland/distinfo=09(revision 436260)
+++ x11-servers/xwayland/distinfo=09(nonexistent)
@@ -1,3 +0,0 @@
-TIMESTAMP =3D 1484388904
-SHA256 (xorg/xserver/xorg-server-1.19.1.tar.bz2) =3D 79ae2cf39d3f6c4a9=
1201d8dad549d1d774b3420073c5a70d390040aa965a7fb
-SIZE (xorg/xserver/xorg-server-1.19.1.tar.bz2) =3D 6041792

Property changes on: x11-servers/xwayland/distinfo
___________________________________________________________________
Deleted: fbsd:nokeywords
## -1 +0,0 ##
-yes
\ No newline at end of property
Deleted: svn:eol-style
## -1 +0,0 ##
-native
\ No newline at end of property
Deleted: svn:mime-type
## -1 +0,0 ##
-text/plain
\ No newline at end of property

--nextPart1921716.mvUtxT9krT--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1774569.2utjLAkrOb>