[packages/xorg-xserver-Xdmx: 1/2] - last version of Xdmx based on xorg-xserver-server.spec version 1.20.13
qboosh
qboosh at pld-linux.org
Wed Nov 3 22:01:37 CET 2021
commit 1b16829cf9a8a439440fa9c9c70f76c9b2e4ecd7
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date: Wed Nov 3 21:56:42 2021 +0100
- last version of Xdmx based on xorg-xserver-server.spec version 1.20.13
110_nvidia_slowdow_fix.patch | 179 ++++++++
xorg-xserver-Xdmx.spec | 224 ++++++++++
xorg-xserver-server-builtin-SHA1.patch | 752 +++++++++++++++++++++++++++++++++
3 files changed, 1155 insertions(+)
---
diff --git a/xorg-xserver-Xdmx.spec b/xorg-xserver-Xdmx.spec
new file mode 100644
index 0000000..616bb5c
--- /dev/null
+++ b/xorg-xserver-Xdmx.spec
@@ -0,0 +1,224 @@
+# TODO
+# - consider XSELINUX by default
+#
+# Conditional build:
+%bcond_with dbus # D-BUS support for configuration (if no udev)
+%bcond_with hal # HAL support for configuration (if no udev)
+%bcond_without udev # UDEV support for configuration
+%bcond_without dri2 # DRI2 extension
+%bcond_without dri3 # DRI3 extension
+%bcond_without record # RECORD extension
+%bcond_with xcsecurity # XC-SECURITY extension (deprecated)
+%bcond_with xf86bigfont # XF86BigFont extension
+%bcond_with xselinux # SELinux extension
+%bcond_without systemtap # systemtap/dtrace probes
+%bcond_without libunwind # use libunwind for backtracing
+#
+
+%define pixman_ver 0.30.0
+
+%ifarch x32
+%undefine with_libunwind
+%endif
+
+Summary: Xdmx - distributed multi-head X server
+Summary(pl.UTF-8): Xdmx - rozproszony, wielomonitorowy serwer X
+Name: xorg-xserver-Xdmx
+Version: 1.20.13
+Release: 1
+License: MIT
+Group: X11/Servers
+Source0: https://xorg.freedesktop.org/releases/individual/xserver/xorg-server-%{version}.tar.xz
+# Source0-md5: 9acb2a51507e6056b09e3d3f19565419
+Patch0: xorg-xserver-server-builtin-SHA1.patch
+Patch1: 110_nvidia_slowdow_fix.patch
+URL: https://xorg.freedesktop.org/
+BuildRequires: Mesa-dri-devel >= 7.8.1
+%{?with_dri2:BuildRequires: Mesa-dri-devel >= 9.2.0}
+BuildRequires: OpenGL-devel >= 3.0
+# for glx headers
+BuildRequires: OpenGL-GLX-devel >= 1.3
+%{?with_xselinux:BuildRequires: audit-libs-devel}
+BuildRequires: autoconf >= 2.60
+BuildRequires: automake
+BuildRequires: cpp
+BuildRequires: docbook-dtd43-xml
+#BuildRequires: doxygen >= 1.6.1
+%if %{with hal} || %{with dbus}
+BuildRequires: dbus-devel >= 1.0
+%endif
+%{?with_hal:BuildRequires: hal-devel}
+BuildRequires: libbsd-devel
+BuildRequires: libdrm-devel >= 2.4.89
+%{?with_xselinux:BuildRequires: libselinux-devel >= 2.0.86}
+BuildRequires: libtirpc-devel
+BuildRequires: libtool >= 2:2.2
+%{?with_libunwind:BuildRequires: libunwind-devel}
+BuildRequires: perl-base
+BuildRequires: pixman-devel >= %{pixman_ver}
+BuildRequires: pkgconfig >= 1:0.19
+BuildRequires: pkgconfig(gl) >= 1.2
+%{?with_systemtap:BuildRequires: systemtap-sdt-devel}
+BuildRequires: systemd-devel >= 1:209
+BuildRequires: tar >= 1:1.22
+BuildRequires: udev-devel >= 1:143
+BuildRequires: xmlto >= 0.0.20
+BuildRequires: xorg-font-font-util >= 1.1
+BuildRequires: xorg-lib-libX11-devel >= 1.6
+BuildRequires: xorg-lib-libXau-devel
+BuildRequires: xorg-lib-libXaw-devel
+BuildRequires: xorg-lib-libXdmcp-devel
+BuildRequires: xorg-lib-libXext-devel >= 1.0.99.4
+BuildRequires: xorg-lib-libXfixes-devel
+BuildRequires: xorg-lib-libXfont2-devel >= 2.0.0
+BuildRequires: xorg-lib-libXi-devel >= 1.2.99.1
+BuildRequires: xorg-lib-libXmu-devel
+BuildRequires: xorg-lib-libXpm-devel
+BuildRequires: xorg-lib-libXrender-devel
+BuildRequires: xorg-lib-libXres-devel
+BuildRequires: xorg-lib-libXt-devel >= 1.0.0
+BuildRequires: xorg-lib-libXtst-devel >= 1.0.99.2
+BuildRequires: xorg-lib-libdmx-devel >= 1.0.99.1
+BuildRequires: xorg-lib-libpciaccess-devel >= 0.12.901
+BuildRequires: xorg-lib-libxkbfile-devel
+BuildRequires: xorg-lib-libxshmfence-devel >= 1.1
+BuildRequires: xorg-lib-xtrans-devel >= 1.3.5
+BuildRequires: xorg-proto-bigreqsproto-devel >= 1.1.0
+BuildRequires: xorg-proto-compositeproto-devel >= 0.4
+BuildRequires: xorg-proto-damageproto-devel >= 1.1
+BuildRequires: xorg-proto-dmxproto-devel >= 2.2.99.1
+%{?with_dri2:BuildRequires: xorg-proto-dri2proto-devel >= 2.8}
+BuildRequires: xorg-proto-dri3proto-devel >= 1.2
+BuildRequires: xorg-proto-fixesproto-devel >= 5.0
+BuildRequires: xorg-proto-fontsproto-devel >= 2.1.3
+BuildRequires: xorg-proto-glproto-devel >= 1.4.17
+BuildRequires: xorg-proto-inputproto-devel >= 2.3
+BuildRequires: xorg-proto-kbproto-devel >= 1.0.3
+BuildRequires: xorg-proto-presentproto-devel >= 1.1
+BuildRequires: xorg-proto-randrproto-devel >= 1.6.0
+%{?with_record:BuildRequires: xorg-proto-recordproto-devel >= 1.13.99.1}
+BuildRequires: xorg-proto-renderproto-devel >= 0.11
+BuildRequires: xorg-proto-resourceproto-devel >= 1.2.0
+BuildRequires: xorg-proto-scrnsaverproto-devel >= 1.1
+BuildRequires: xorg-proto-videoproto-devel
+BuildRequires: xorg-proto-xcmiscproto-devel >= 1.2.0
+BuildRequires: xorg-proto-xextproto-devel >= 1:7.3.0
+%{?with_xf86bigfont:BuildRequires: xorg-proto-xf86bigfontproto-devel >= 1.2.0}
+BuildRequires: xorg-proto-xf86dgaproto-devel >= 2.0.99.1
+BuildRequires: xorg-proto-xf86driproto-devel >= 2.1.0
+BuildRequires: xorg-proto-xf86vidmodeproto-devel >= 2.2.99.1
+BuildRequires: xorg-proto-xineramaproto-devel
+BuildRequires: xorg-proto-xproto-devel >= 7.0.31
+BuildRequires: xorg-sgml-doctools >= 1.8
+BuildRequires: xorg-util-util-macros >= 1.14
+BuildRequires: xz
+Requires: pixman >= %{pixman_ver}
+Requires: xorg-lib-libX11 >= 1.6
+Requires: xorg-lib-libXext >= 1.0.99.4
+Requires: xorg-lib-libXfont2 >= 2.0.0
+Requires: xorg-lib-libXi >= 1.2.99.1
+Requires: xorg-lib-libdmx >= 1.0.99.1
+Requires: xorg-xserver-common >= 1.20.13
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%define tirpc_cflags $(pkg-config --cflags libtirpc)
+%define tirpc_libs $(pkg-config --libs libtirpc)
+
+%description
+Xdmx - distributed multi-head X server.
+
+%description -l pl.UTF-8
+Xdmx - rozproszony, wielomonitorowy serwer X.
+
+%prep
+%setup -q -n xorg-server-%{version}
+%patch0 -p1
+%patch1 -p1
+
+# xserver uses pixman-1 API/ABI so put that explictly here
+sed -i -e 's#<pixman\.h#<pixman-1/pixman.h#g' ./fb/fb.h ./include/miscstruct.h ./render/picture.h
+
+# support __filemansuffix__ with "x" suffix (per FHS 2.3)
+%{__sed} -i -e 's,\.so man__filemansuffix__/,.so man5/,' hw/xfree86/man/*.man
+
+%{__sed} -i -e '1s|#!/usr/bin/python$|#!%{__python}|' config/fdi2iclass.py
+
+%build
+%{__libtoolize}
+%{__aclocal} -I m4
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+%configure \
+ CPPFLAGS="%{rpmcppflags} %{tirpc_cflags}" \
+ LIBS="%{tirpc_libs}" \
+ --libexecdir=%{_libdir}/xorg \
+ --with-os-name="PLD/Linux" \
+ --with-os-vendor="PLD/Team" \
+ --with-default-font-path="%{_fontsdir}/misc,%{_fontsdir}/TTF,%{_fontsdir}/OTF,%{_fontsdir}/Type1,%{_fontsdir}/100dpi,%{_fontsdir}/75dpi" \
+ --with-xkb-output=/var/lib/xkb \
+ --disable-linux-acpi \
+ --disable-linux-apm \
+ %{?with_dbus:--enable-config-dbus} \
+ --enable-config-hal%{!?with_hal:=no} \
+ --enable-config-udev%{!?with_udev:=no} \
+ --enable-dga \
+ --enable-dmx \
+ --enable-dri2%{!?with_dri2:=no} \
+ --enable-dri3%{!?with_dri3:=no} \
+ --disable-kdrive \
+ %{?with_libunwind:--enable-libunwind} \
+ %{?with_record:--enable-record} \
+ --enable-secure-rpc \
+ --enable-suid-wrapper \
+ %{?with_xcsecurity:--enable-xcsecurity} \
+ --disable-xephyr \
+ %{?with_xf86bigfont:--enable-xf86bigfont} \
+ --disable-xfree86-utils \
+ --disable-xnest \
+ --disable-xorg \
+ %{?with_xselinux:--enable-xselinux} \
+ --disable-xvfb \
+ --disable-xwayland \
+ %{!?with_systemtap:--without-dtrace} \
+ --without-fop \
+ --with-systemd-daemon
+
+%{__make}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%{__make} install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%if %{with systemtap}
+%{__rm} $RPM_BUILD_ROOT%{_docdir}/xorg-server/Xserver-DTrace.*
+%endif
+
+# packaged in xorg-xserver-common built from xorg-xserver-server.spec
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/xorg/protocol.txt
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/Xserver.1
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc COPYING ChangeLog README.md
+%attr(755,root,root) %{_bindir}/Xdmx
+%attr(755,root,root) %{_bindir}/dmxaddinput
+%attr(755,root,root) %{_bindir}/dmxaddscreen
+%attr(755,root,root) %{_bindir}/dmxinfo
+%attr(755,root,root) %{_bindir}/dmxreconfig
+%attr(755,root,root) %{_bindir}/dmxresize
+%attr(755,root,root) %{_bindir}/dmxrminput
+%attr(755,root,root) %{_bindir}/dmxrmscreen
+%attr(755,root,root) %{_bindir}/dmxtodmx
+%attr(755,root,root) %{_bindir}/dmxwininfo
+%attr(755,root,root) %{_bindir}/vdltodmx
+%attr(755,root,root) %{_bindir}/xdmxconfig
+%{_mandir}/man1/Xdmx.1*
+%{_mandir}/man1/dmxtodmx.1*
+%{_mandir}/man1/vdltodmx.1*
+%{_mandir}/man1/xdmxconfig.1*
diff --git a/110_nvidia_slowdow_fix.patch b/110_nvidia_slowdow_fix.patch
new file mode 100644
index 0000000..f04c0ae
--- /dev/null
+++ b/110_nvidia_slowdow_fix.patch
@@ -0,0 +1,179 @@
+diff -ru a/fb/fbpict.c b/fb/fbpict.c
+--- a/fb/fbpict.c 2011-08-01 01:44:24.000000000 +0200
++++ b/fb/fbpict.c 2011-10-05 22:45:29.000000000 +0200
+@@ -364,7 +364,7 @@
+ ps->UnrealizeGlyph = fbUnrealizeGlyph;
+ ps->CompositeRects = miCompositeRects;
+ ps->RasterizeTrapezoid = fbRasterizeTrapezoid;
+- ps->Trapezoids = fbTrapezoids;
++ ps->Trapezoids = miTrapezoids;
+ ps->AddTraps = fbAddTraps;
+ ps->AddTriangles = fbAddTriangles;
+ ps->Triangles = fbTriangles;
+diff -ru a/render/mipict.c b/render/mipict.c
+--- a/render/mipict.c 2011-04-04 05:19:50.000000000 +0200
++++ b/render/mipict.c 2011-10-05 22:02:53.000000000 +0200
+@@ -573,6 +573,67 @@
+ free(tris);
+ }
+
++void
++miTrapezoids (CARD8 op,
++ PicturePtr pSrc,
++ PicturePtr pDst,
++ PictFormatPtr maskFormat,
++ INT16 xSrc,
++ INT16 ySrc,
++ int ntrap,
++ xTrapezoid *traps)
++{
++ ScreenPtr pScreen = pDst->pDrawable->pScreen;
++ PictureScreenPtr ps = GetPictureScreen(pScreen);
++
++ /*
++ * Check for solid alpha add
++ */
++ if (op == PictOpAdd && miIsSolidAlpha (pSrc))
++ {
++ for (; ntrap; ntrap--, traps++)
++ (*ps->RasterizeTrapezoid) (pDst, traps, 0, 0);
++ }
++ else if (maskFormat)
++ {
++ PicturePtr pPicture;
++ BoxRec bounds;
++ INT16 xDst, yDst;
++ INT16 xRel, yRel;
++
++ xDst = traps[0].left.p1.x >> 16;
++ yDst = traps[0].left.p1.y >> 16;
++
++ miTrapezoidBounds (ntrap, traps, &bounds);
++ if (bounds.y1 >= bounds.y2 || bounds.x1 >= bounds.x2)
++ return;
++ pPicture = miCreateAlphaPicture (pScreen, pDst, maskFormat,
++ bounds.x2 - bounds.x1,
++ bounds.y2 - bounds.y1);
++ if (!pPicture)
++ return;
++ for (; ntrap; ntrap--, traps++)
++ (*ps->RasterizeTrapezoid) (pPicture, traps,
++ -bounds.x1, -bounds.y1);
++ xRel = bounds.x1 + xSrc - xDst;
++ yRel = bounds.y1 + ySrc - yDst;
++ CompositePicture (op, pSrc, pPicture, pDst,
++ xRel, yRel, 0, 0, bounds.x1, bounds.y1,
++ bounds.x2 - bounds.x1,
++ bounds.y2 - bounds.y1);
++ FreePicture (pPicture, 0);
++ }
++ else
++ {
++ if (pDst->polyEdge == PolyEdgeSharp)
++ maskFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++ else
++ maskFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++ for (; ntrap; ntrap--, traps++)
++ miTrapezoids (op, pSrc, pDst, maskFormat, xSrc, ySrc, 1, traps);
++ }
++}
++
+ Bool
+ miPictureInit(ScreenPtr pScreen, PictFormatPtr formats, int nformats)
+ {
+@@ -656,7 +656,7 @@
+ ps->Composite = 0; /* requires DDX support */
+ ps->Glyphs = miGlyphs;
+ ps->CompositeRects = miCompositeRects;
+- ps->Trapezoids = 0;
++ ps->Trapezoids = miTrapezoids;
+ ps->Triangles = 0;
+
+ ps->RasterizeTrapezoid = 0; /* requires DDX support */
+diff -ru a/render/mipict.h b/render/mipict.h
+--- a/render/mipict.h 2011-04-04 05:19:50.000000000 +0200
++++ b/render/mipict.h 2011-10-05 22:06:19.000000000 +0200
+@@ -129,6 +129,23 @@
+ extern _X_EXPORT void
+ miRenderPixelToColor(PictFormatPtr pPict, CARD32 pixel, xRenderColor * color);
+
++extern _X_EXPORT PicturePtr
++miCreateAlphaPicture (ScreenPtr pScreen,
++ PicturePtr pDst,
++ PictFormatPtr pPictFormat,
++ CARD16 width,
++ CARD16 height);
++
++extern _X_EXPORT void
++miTrapezoids (CARD8 op,
++ PicturePtr pSrc,
++ PicturePtr pDst,
++ PictFormatPtr maskFormat,
++ INT16 xSrc,
++ INT16 ySrc,
++ int ntrap,
++ xTrapezoid *traps);
++
+ extern _X_EXPORT Bool
+ miIsSolidAlpha(PicturePtr pSrc);
+
+diff -ru a/render/mitrap.c b/render/mitrap.c
+--- a/render/mitrap.c 2011-04-04 05:19:50.000000000 +0200
++++ b/render/mitrap.c 2011-10-05 22:05:29.000000000 +0200
+@@ -34,6 +34,55 @@
+ #include "picturestr.h"
+ #include "mipict.h"
+
++PicturePtr
++miCreateAlphaPicture (ScreenPtr pScreen,
++ PicturePtr pDst,
++ PictFormatPtr pPictFormat,
++ CARD16 width,
++ CARD16 height)
++{
++ PixmapPtr pPixmap;
++ PicturePtr pPicture;
++ GCPtr pGC;
++ int error;
++ xRectangle rect;
++
++ if (width > 32767 || height > 32767)
++ return 0;
++
++ if (!pPictFormat)
++ {
++ if (pDst->polyEdge == PolyEdgeSharp)
++ pPictFormat = PictureMatchFormat (pScreen, 1, PICT_a1);
++ else
++ pPictFormat = PictureMatchFormat (pScreen, 8, PICT_a8);
++ if (!pPictFormat)
++ return 0;
++ }
++
++ pPixmap = (*pScreen->CreatePixmap) (pScreen, width, height,
++ pPictFormat->depth, 0);
++ if (!pPixmap)
++ return 0;
++ pGC = GetScratchGC (pPixmap->drawable.depth, pScreen);
++ if (!pGC)
++ {
++ (*pScreen->DestroyPixmap) (pPixmap);
++ return 0;
++ }
++ ValidateGC (&pPixmap->drawable, pGC);
++ rect.x = 0;
++ rect.y = 0;
++ rect.width = width;
++ rect.height = height;
++ (*pGC->ops->PolyFillRect)(&pPixmap->drawable, pGC, 1, &rect);
++ FreeScratchGC (pGC);
++ pPicture = CreatePicture (0, &pPixmap->drawable, pPictFormat,
++ 0, 0, serverClient, &error);
++ (*pScreen->DestroyPixmap) (pPixmap);
++ return pPicture;
++}
++
+ static xFixed
+ miLineFixedX(xLineFixed * l, xFixed y, Bool ceil)
+ {
+
diff --git a/xorg-xserver-server-builtin-SHA1.patch b/xorg-xserver-server-builtin-SHA1.patch
new file mode 100644
index 0000000..19be640
--- /dev/null
+++ b/xorg-xserver-server-builtin-SHA1.patch
@@ -0,0 +1,752 @@
+diff -urN xorg-server-1.17.0.org/configure.ac xorg-server-1.17.0/configure.ac
+--- xorg-server-1.17.0.org/configure.ac 2015-02-02 07:40:17.000000000 +0100
++++ xorg-server-1.17.0/configure.ac 2015-02-04 19:34:23.458568095 +0100
+@@ -1544,7 +1544,7 @@
+
+ if test "x$SPECIAL_DTRACE_OBJECTS" = "xyes" ; then
+ DIX_LIB='$(top_builddir)/dix/dix.O'
+- OS_LIB='$(top_builddir)/os/os.O $(SHA1_LIBS) $(DLOPEN_LIBS) $(LIBUNWIND_LIBS)'
++ OS_LIB='$(top_builddir)/os/os.O $(DLOPEN_LIBS) $(LIBUNWIND_LIBS)'
+ else
+ DIX_LIB='$(top_builddir)/dix/libdix.la'
+ OS_LIB='$(top_builddir)/os/libos.la'
+@@ -1566,124 +1566,6 @@
+ MIEXT_SYNC_LIB='$(top_builddir)/miext/sync/libsync.la'
+ CORE_INCS='-I$(top_srcdir)/include -I$(top_builddir)/include'
+
+-# SHA1 hashing
+-AC_ARG_WITH([sha1],
+- [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
+- [choose SHA1 implementation])])
+-AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
+- with_sha1=libc
+-fi
+-if test "x$with_sha1" = xlibc && test "x$HAVE_SHA1_IN_LIBC" != xyes; then
+- AC_MSG_ERROR([libc requested but not found])
+-fi
+-if test "x$with_sha1" = xlibc; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBC], [1],
+- [Use libc SHA1 functions])
+- SHA1_LIBS=""
+-fi
+-AC_CHECK_FUNC([CC_SHA1_Init], [HAVE_SHA1_IN_COMMONCRYPTO=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_COMMONCRYPTO" = xyes; then
+- with_sha1=CommonCrypto
+-fi
+-if test "x$with_sha1" = xCommonCrypto && test "x$HAVE_SHA1_IN_COMMONCRYPTO" != xyes; then
+- AC_MSG_ERROR([CommonCrypto requested but not found])
+-fi
+-if test "x$with_sha1" = xCommonCrypto; then
+- AC_DEFINE([HAVE_SHA1_IN_COMMONCRYPTO], [1],
+- [Use CommonCrypto SHA1 functions])
+- SHA1_LIBS=""
+-fi
+-dnl stdcall functions cannot be tested with AC_CHECK_LIB
+-AC_CHECK_HEADER([wincrypt.h], [HAVE_SHA1_IN_CRYPTOAPI=yes], [], [#include <windows.h>])
+-if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_CRYPTOAPI" = xyes; then
+- with_sha1=CryptoAPI
+-fi
+-if test "x$with_sha1" = xCryptoAPI && test "x$HAVE_SHA1_IN_CRYPTOAPI" != xyes; then
+- AC_MSG_ERROR([CryptoAPI requested but not found])
+-fi
+-if test "x$with_sha1" = xCryptoAPI; then
+- AC_DEFINE([HAVE_SHA1_IN_CRYPTOAPI], [1],
+- [Use CryptoAPI SHA1 functions])
+- SHA1_LIBS=""
+-fi
+-AC_CHECK_LIB([md], [SHA1Init], [HAVE_LIBMD=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBMD" = xyes; then
+- with_sha1=libmd
+-fi
+-if test "x$with_sha1" = xlibmd && test "x$HAVE_LIBMD" != xyes; then
+- AC_MSG_ERROR([libmd requested but not found])
+-fi
+-if test "x$with_sha1" = xlibmd; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBMD], [1],
+- [Use libmd SHA1 functions])
+- SHA1_LIBS=-lmd
+-fi
+-PKG_CHECK_MODULES([LIBSHA1], [libsha1], [HAVE_LIBSHA1=yes], [HAVE_LIBSHA1=no])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBSHA1" = xyes; then
+- with_sha1=libsha1
+-fi
+-if test "x$with_sha1" = xlibsha1 && test "x$HAVE_LIBSHA1" != xyes; then
+- AC_MSG_ERROR([libsha1 requested but not found])
+-fi
+-if test "x$with_sha1" = xlibsha1; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBSHA1], [1],
+- [Use libsha1 for SHA1])
+- SHA1_LIBS=-lsha1
+-fi
+-AC_CHECK_LIB([nettle], [nettle_sha1_init], [HAVE_LIBNETTLE=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBNETTLE" = xyes; then
+- with_sha1=libnettle
+-fi
+-if test "x$with_sha1" = xlibnettle && test "x$HAVE_LIBNETTLE" != xyes; then
+- AC_MSG_ERROR([libnettle requested but not found])
+-fi
+-if test "x$with_sha1" = xlibnettle; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
+- [Use libnettle SHA1 functions])
+- SHA1_LIBS=-lnettle
+-fi
+-AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
+-if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
+- with_sha1=libgcrypt
+-fi
+-if test "x$with_sha1" = xlibgcrypt && test "x$HAVE_LIBGCRYPT" != xyes; then
+- AC_MSG_ERROR([libgcrypt requested but not found])
+-fi
+-if test "x$with_sha1" = xlibgcrypt; then
+- AC_DEFINE([HAVE_SHA1_IN_LIBGCRYPT], [1],
+- [Use libgcrypt SHA1 functions])
+- SHA1_LIBS=-lgcrypt
+-fi
+-# We don't need all of the OpenSSL libraries, just libcrypto
+-AC_CHECK_LIB([crypto], [SHA1_Init], [HAVE_LIBCRYPTO=yes])
+-PKG_CHECK_MODULES([OPENSSL], [openssl], [HAVE_OPENSSL_PKC=yes],
+- [HAVE_OPENSSL_PKC=no])
+-if test "x$HAVE_LIBCRYPTO" = xyes || test "x$HAVE_OPENSSL_PKC" = xyes; then
+- if test "x$with_sha1" = x; then
+- with_sha1=libcrypto
+- fi
+-else
+- if test "x$with_sha1" = xlibcrypto; then
+- AC_MSG_ERROR([OpenSSL libcrypto requested but not found])
+- fi
+-fi
+-if test "x$with_sha1" = xlibcrypto; then
+- if test "x$HAVE_LIBCRYPTO" = xyes; then
+- SHA1_LIBS=-lcrypto
+- else
+- SHA1_LIBS="$OPENSSL_LIBS"
+- SHA1_CFLAGS="$OPENSSL_CFLAGS"
+- fi
+-fi
+-AC_MSG_CHECKING([for SHA1 implementation])
+-if test "x$with_sha1" = x; then
+- AC_MSG_ERROR([No suitable SHA1 implementation found])
+-fi
+-AC_MSG_RESULT([$with_sha1])
+-AC_SUBST(SHA1_LIBS)
+-AC_SUBST(SHA1_CFLAGS)
+-
+ PKG_CHECK_MODULES([XSERVERCFLAGS], [$REQUIRED_MODULES $REQUIRED_LIBS])
+ PKG_CHECK_MODULES([XSERVERLIBS], [$REQUIRED_LIBS])
+
+diff -urN xorg-server-1.17.0.org/include/dix-config.h.in xorg-server-1.17.0/include/dix-config.h.in
+--- xorg-server-1.17.0.org/include/dix-config.h.in 2014-10-09 14:15:31.000000000 +0200
++++ xorg-server-1.17.0/include/dix-config.h.in 2015-02-04 19:34:23.455234679 +0100
+@@ -152,27 +152,6 @@
+ /* Define to 1 if you have the `arc4random_buf' function. */
+ #undef HAVE_ARC4RANDOM_BUF
+
+-/* Define to use libc SHA1 functions */
+-#undef HAVE_SHA1_IN_LIBC
+-
+-/* Define to use CommonCrypto SHA1 functions */
+-#undef HAVE_SHA1_IN_COMMONCRYPTO
+-
+-/* Define to use CryptoAPI SHA1 functions */
+-#undef HAVE_SHA1_IN_CRYPTOAPI
+-
+-/* Define to use libmd SHA1 functions */
+-#undef HAVE_SHA1_IN_LIBMD
+-
+-/* Define to use libgcrypt SHA1 functions */
+-#undef HAVE_SHA1_IN_LIBGCRYPT
+-
+-/* Define to use libnettle SHA1 functions */
+-#undef HAVE_SHA1_IN_LIBNETTLE
+-
+-/* Define to use libsha1 for SHA1 */
+-#undef HAVE_SHA1_IN_LIBSHA1
+-
+ /* Define to 1 if you have the `shmctl64' function. */
+ #undef HAVE_SHMCTL64
+
+diff -urN xorg-server-1.17.0.org/os/Makefile.am xorg-server-1.17.0/os/Makefile.am
+--- xorg-server-1.17.0.org/os/Makefile.am 2013-11-12 00:15:00.000000000 +0100
++++ xorg-server-1.17.0/os/Makefile.am 2015-02-04 19:34:23.455234679 +0100
+@@ -21,7 +21,6 @@
+ ospoll.h \
+ utils.c \
+ xdmauth.c \
+- xsha1.c \
+ xstrans.c \
+ xprintf.c \
+ $(XORG_SRCS)
+diff -urN xorg-server-1.17.0.org/os/xsha1.c xorg-server-1.17.0/os/xsha1.c
+--- xorg-server-1.17.0.org/os/xsha1.c 2015-01-18 00:42:52.000000000 +0100
++++ xorg-server-1.17.0/os/xsha1.c 2015-02-04 19:34:23.455234679 +0100
+@@ -23,270 +23,3 @@
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+-#ifdef HAVE_DIX_CONFIG_H
+-#include <dix-config.h>
+-#endif
+-
+-#include "os.h"
+-#include "xsha1.h"
+-
+-#if defined(HAVE_SHA1_IN_LIBMD) /* Use libmd for SHA1 */ \
+- || defined(HAVE_SHA1_IN_LIBC) /* Use libc for SHA1 */
+-
+-#include <sha1.h>
+-
+-void *
+-x_sha1_init(void)
+-{
+- SHA1_CTX *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- SHA1Init(ctx);
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- SHA1_CTX *sha1_ctx = ctx;
+-
+- SHA1Update(sha1_ctx, data, size);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- SHA1_CTX *sha1_ctx = ctx;
+-
+- SHA1Final(result, sha1_ctx);
+- free(sha1_ctx);
+- return 1;
+-}
+-
+-#elif defined(HAVE_SHA1_IN_COMMONCRYPTO) /* Use CommonCrypto for SHA1 */
+-
+-#include <CommonCrypto/CommonDigest.h>
+-
+-void *
+-x_sha1_init(void)
+-{
+- CC_SHA1_CTX *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- CC_SHA1_Init(ctx);
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- CC_SHA1_CTX *sha1_ctx = ctx;
+-
+- CC_SHA1_Update(sha1_ctx, data, size);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- CC_SHA1_CTX *sha1_ctx = ctx;
+-
+- CC_SHA1_Final(result, sha1_ctx);
+- free(sha1_ctx);
+- return 1;
+-}
+-
+-#elif defined(HAVE_SHA1_IN_CRYPTOAPI) /* Use CryptoAPI for SHA1 */
+-
+-#define WIN32_LEAN_AND_MEAN
+-#include <X11/Xwindows.h>
+-#include <wincrypt.h>
+-
+-static HCRYPTPROV hProv;
+-
+-void *
+-x_sha1_init(void)
+-{
+- HCRYPTHASH *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
+- CryptCreateHash(hProv, CALG_SHA1, 0, 0, ctx);
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- HCRYPTHASH *hHash = ctx;
+-
+- CryptHashData(*hHash, data, size, 0);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- HCRYPTHASH *hHash = ctx;
+- DWORD len = 20;
+-
+- CryptGetHashParam(*hHash, HP_HASHVAL, result, &len, 0);
+- CryptDestroyHash(*hHash);
+- CryptReleaseContext(hProv, 0);
+- free(ctx);
+- return 1;
+-}
+-
+-#elif defined(HAVE_SHA1_IN_LIBNETTLE) /* Use libnettle for SHA1 */
+-
+-#include <nettle/sha.h>
+-
+-void *
+-x_sha1_init(void)
+-{
+- struct sha1_ctx *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- sha1_init(ctx);
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- sha1_update(ctx, size, data);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- sha1_digest(ctx, 20, result);
+- free(ctx);
+- return 1;
+-}
+-
+-#elif defined(HAVE_SHA1_IN_LIBGCRYPT) /* Use libgcrypt for SHA1 */
+-
+-#include <gcrypt.h>
+-
+-void *
+-x_sha1_init(void)
+-{
+- static int init;
+- gcry_md_hd_t h;
+- gcry_error_t err;
+-
+- if (!init) {
+- if (!gcry_check_version(NULL))
+- return NULL;
+- gcry_control(GCRYCTL_DISABLE_SECMEM, 0);
+- gcry_control(GCRYCTL_INITIALIZATION_FINISHED, 0);
+- init = 1;
+- }
+-
+- err = gcry_md_open(&h, GCRY_MD_SHA1, 0);
+- if (err)
+- return NULL;
+- return h;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- gcry_md_hd_t h = ctx;
+-
+- gcry_md_write(h, data, size);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- gcry_md_hd_t h = ctx;
+-
+- memcpy(result, gcry_md_read(h, GCRY_MD_SHA1), 20);
+- gcry_md_close(h);
+- return 1;
+-}
+-
+-#elif defined(HAVE_SHA1_IN_LIBSHA1) /* Use libsha1 */
+-
+-#include <libsha1.h>
+-
+-void *
+-x_sha1_init(void)
+-{
+- sha1_ctx *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- sha1_begin(ctx);
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- sha1_hash(data, size, ctx);
+- return 1;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- sha1_end(result, ctx);
+- free(ctx);
+- return 1;
+-}
+-
+-#else /* Use OpenSSL's libcrypto */
+-
+-#include <stddef.h> /* buggy openssl/sha.h wants size_t */
+-#include <openssl/sha.h>
+-
+-void *
+-x_sha1_init(void)
+-{
+- int ret;
+- SHA_CTX *ctx = malloc(sizeof(*ctx));
+-
+- if (!ctx)
+- return NULL;
+- ret = SHA1_Init(ctx);
+- if (!ret) {
+- free(ctx);
+- return NULL;
+- }
+- return ctx;
+-}
+-
+-int
+-x_sha1_update(void *ctx, void *data, int size)
+-{
+- int ret;
+- SHA_CTX *sha_ctx = ctx;
+-
+- ret = SHA1_Update(sha_ctx, data, size);
+- if (!ret)
+- free(sha_ctx);
+- return ret;
+-}
+-
+-int
+-x_sha1_final(void *ctx, unsigned char result[20])
+-{
+- int ret;
+- SHA_CTX *sha_ctx = ctx;
+-
+- ret = SHA1_Final(result, sha_ctx);
+- free(sha_ctx);
+- return ret;
+-}
+-
+-#endif
+diff -urN xorg-server-1.17.0.org/render/glyph.c xorg-server-1.17.0/render/glyph.c
+--- xorg-server-1.17.0.org/render/glyph.c 2015-01-18 00:42:52.000000000 +0100
++++ xorg-server-1.17.0/render/glyph.c 2015-02-04 19:34:23.458568095 +0100
+@@ -26,8 +26,7 @@
+ #include <dix-config.h>
+ #endif
+
+-#include "xsha1.h"
+-
++#include "sha1.h"
+ #include "misc.h"
+ #include "scrnintstr.h"
+ #include "os.h"
+@@ -165,21 +164,13 @@
+ HashGlyph(xGlyphInfo * gi,
+ CARD8 *bits, unsigned long size, unsigned char sha1[20])
+ {
+- void *ctx = x_sha1_init();
+- int success;
++ SHA1_CTX ctx;
+
+- if (!ctx)
+- return BadAlloc;
++ SHA1Init (&ctx);
++ SHA1Update (&ctx, gi, sizeof (xGlyphInfo));
++ SHA1Update (&ctx, bits, size);
++ SHA1Final (sha1, &ctx);
+
+- success = x_sha1_update(ctx, gi, sizeof(xGlyphInfo));
+- if (!success)
+- return BadAlloc;
+- success = x_sha1_update(ctx, bits, size);
+- if (!success)
+- return BadAlloc;
+- success = x_sha1_final(ctx, sha1);
+- if (!success)
+- return BadAlloc;
+ return Success;
+ }
+
+diff -urN xorg-server-1.17.0.org/render/Makefile.am xorg-server-1.17.0/render/Makefile.am
+--- xorg-server-1.17.0.org/render/Makefile.am 2013-06-18 18:03:42.000000000 +0200
++++ xorg-server-1.17.0/render/Makefile.am 2015-02-04 19:34:23.455234679 +0100
+@@ -13,8 +13,11 @@
+ mitrap.c \
+ mitri.c \
+ picture.c \
++ sha1.c \
+ render.c
+
+ if XORG
+ sdk_HEADERS = picture.h mipict.h glyphstr.h picturestr.h
+ endif
++
++EXTRA_DIST = sha1.h
+diff -urN xorg-server-1.17.0.org/render/sha1.c xorg-server-1.17.0/render/sha1.c
+--- xorg-server-1.17.0.org/render/sha1.c 1970-01-01 01:00:00.000000000 +0100
++++ xorg-server-1.17.0/render/sha1.c 2015-02-04 19:34:23.458568095 +0100
+@@ -0,0 +1,173 @@
++/*
++ * SHA-1 in C
++ * By Steve Reid <steve at edmweb.com>
++ * 100% Public Domain
++ *
++ * Test Vectors (from FIPS PUB 180-1)
++ * "abc"
++ * A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
++ * "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
++ * 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
++ * A million repetitions of "a"
++ * 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
++ */
++
++#include <sys/param.h>
++#include <string.h>
++#include <sha1.h>
++
++#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
++
++/*
++ * blk0() and blk() perform the initial expand.
++ * I got the idea of expanding during the round function from SSLeay
++ */
++#if BYTE_ORDER == LITTLE_ENDIAN
++# define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
++ |(rol(block->l[i],8)&0x00FF00FF))
++#else
++# define blk0(i) block->l[i]
++#endif
++#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
++ ^block->l[(i+2)&15]^block->l[i&15],1))
++
++/*
++ * (R0+R1), R2, R3, R4 are the different operations (rounds) used in SHA1
++ */
++#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
++#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
++#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
++#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
++#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
++
++/*
++ * Hash a single 512-bit block. This is the core of the algorithm.
++ */
++void
++SHA1Transform(uint32_t state[5], const uint8_t buffer[SHA1_BLOCK_LENGTH])
++{
++ uint32_t a, b, c, d, e;
++ uint8_t workspace[SHA1_BLOCK_LENGTH];
++ typedef union {
++ uint8_t c[64];
++ uint32_t l[16];
++ } CHAR64LONG16;
++ CHAR64LONG16 *block = (CHAR64LONG16 *)workspace;
++
++ (void)memcpy(block, buffer, SHA1_BLOCK_LENGTH);
++
++ /* Copy context->state[] to working vars */
++ a = state[0];
++ b = state[1];
++ c = state[2];
++ d = state[3];
++ e = state[4];
++
++ /* 4 rounds of 20 operations each. Loop unrolled. */
++ R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3);
++ R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7);
++ R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11);
++ R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15);
++ R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19);
++ R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23);
++ R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27);
++ R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31);
++ R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35);
++ R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39);
++ R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43);
++ R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47);
++ R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51);
++ R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55);
++ R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59);
++ R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63);
++ R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67);
++ R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71);
++ R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75);
++ R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79);
++
++ /* Add the working vars back into context.state[] */
++ state[0] += a;
++ state[1] += b;
++ state[2] += c;
++ state[3] += d;
++ state[4] += e;
++
++ /* Wipe variables */
++ a = b = c = d = e = 0;
++}
++
++
++/*
++ * SHA1Init - Initialize new context
++ */
++void
++SHA1Init(SHA1_CTX *context)
++{
++
++ /* SHA1 initialization constants */
++ context->count = 0;
++ context->state[0] = 0x67452301;
++ context->state[1] = 0xEFCDAB89;
++ context->state[2] = 0x98BADCFE;
++ context->state[3] = 0x10325476;
++ context->state[4] = 0xC3D2E1F0;
++}
++
++
++/*
++ * Run your data through this.
++ */
++void
++SHA1Update(SHA1_CTX *context, const uint8_t *data, size_t len)
++{
++ size_t i, j;
++
++ j = (size_t)((context->count >> 3) & 63);
++ context->count += (len << 3);
++ if ((j + len) > 63) {
++ (void)memcpy(&context->buffer[j], data, (i = 64-j));
++ SHA1Transform(context->state, context->buffer);
++ for ( ; i + 63 < len; i += 64)
++ SHA1Transform(context->state, (uint8_t *)&data[i]);
++ j = 0;
++ } else {
++ i = 0;
++ }
++ (void)memcpy(&context->buffer[j], &data[i], len - i);
++}
++
++
++/*
++ * Add padding and return the message digest.
++ */
++void
++SHA1Pad(SHA1_CTX *context)
++{
++ uint8_t finalcount[8];
++ uint i;
++
++ for (i = 0; i < 8; i++) {
++ finalcount[i] = (uint8_t)((context->count >>
++ ((7 - (i & 7)) * 8)) & 255); /* Endian independent */
++ }
++ SHA1Update(context, (uint8_t *)"\200", 1);
++ while ((context->count & 504) != 448)
++ SHA1Update(context, (uint8_t *)"\0", 1);
++ SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
++}
++
++void
++SHA1Final(uint8_t digest[SHA1_DIGEST_LENGTH], SHA1_CTX *context)
++{
++ uint i;
++
++ SHA1Pad(context);
++ if (digest) {
++ for (i = 0; i < SHA1_DIGEST_LENGTH; i++) {
++ digest[i] = (uint8_t)
++ ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
++ }
++ memset(context, 0, sizeof(*context));
++ }
++}
++
+diff -urN xorg-server-1.17.0.org/render/sha1.h xorg-server-1.17.0/render/sha1.h
+--- xorg-server-1.17.0.org/render/sha1.h 1970-01-01 01:00:00.000000000 +0100
++++ xorg-server-1.17.0/render/sha1.h 2015-02-04 19:34:23.458568095 +0100
+@@ -0,0 +1,63 @@
++/*
++ * SHA-1 in C
++ * By Steve Reid <steve at edmweb.com>
++ * 100% Public Domain
++ */
++
++#ifndef _SHA1_H
++#define _SHA1_H
++
++#include <stdint.h>
++#include <stddef.h>
++#include <unistd.h>
++
++
++#define SHA1_BLOCK_LENGTH 64
++#define SHA1_DIGEST_LENGTH 20
++#define SHA1_DIGEST_STRING_LENGTH (SHA1_DIGEST_LENGTH * 2 + 1)
++
++typedef struct {
++ uint32_t state[5];
++ uint64_t count;
++ uint8_t buffer[SHA1_BLOCK_LENGTH];
++} SHA1_CTX;
++
++#include <sys/cdefs.h>
++
++__BEGIN_DECLS
++void SHA1Init(SHA1_CTX *);
++void SHA1Pad(SHA1_CTX *);
++void SHA1Transform(uint32_t [5], const uint8_t [SHA1_BLOCK_LENGTH])
++ __attribute__((__bounded__(__minbytes__,1,5)))
++ __attribute__((__bounded__(__minbytes__,2,SHA1_BLOCK_LENGTH)));
++void SHA1Update(SHA1_CTX *, const uint8_t *, size_t)
++ __attribute__((__bounded__(__string__,2,3)));
++void SHA1Final(uint8_t [SHA1_DIGEST_LENGTH], SHA1_CTX *)
++ __attribute__((__bounded__(__minbytes__,1,SHA1_DIGEST_LENGTH)));
++char *SHA1End(SHA1_CTX *, char *)
++ __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
++char *SHA1File(const char *, char *)
++ __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
++char *SHA1FileChunk(const char *, char *, off_t, off_t)
++ __attribute__((__bounded__(__minbytes__,2,SHA1_DIGEST_STRING_LENGTH)));
++char *SHA1Data(const uint8_t *, size_t, char *)
++ __attribute__((__bounded__(__string__,1,2)))
++ __attribute__((__bounded__(__minbytes__,3,SHA1_DIGEST_STRING_LENGTH)));
++__END_DECLS
++
++#define HTONDIGEST(x) do { \
++ x[0] = htonl(x[0]); \
++ x[1] = htonl(x[1]); \
++ x[2] = htonl(x[2]); \
++ x[3] = htonl(x[3]); \
++ x[4] = htonl(x[4]); } while (0)
++
++#define NTOHDIGEST(x) do { \
++ x[0] = ntohl(x[0]); \
++ x[1] = ntohl(x[1]); \
++ x[2] = ntohl(x[2]); \
++ x[3] = ntohl(x[3]); \
++ x[4] = ntohl(x[4]); } while (0)
++
++#endif /* _SHA1_H */
++
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/xorg-xserver-Xdmx.git/commitdiff/4d53a4989264527b854becf239ebae11a3518b96
More information about the pld-cvs-commit
mailing list