<feed xmlns='http://www.w3.org/2005/Atom'>
<title>nx-libs/nx-X11/programs/Xserver/os/io.c, branch pr/extend_manpage</title>
<subtitle>NXv3 (redistributed) 
</subtitle>
<id>https://openid.arctica-project.org/nx-libs/atom?h=pr%2Fextend_manpage</id>
<link rel='self' href='https://openid.arctica-project.org/nx-libs/atom?h=pr%2Fextend_manpage'/>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/'/>
<updated>2020-01-05T23:50:26+00:00</updated>
<entry>
<title>os: unifdef WIN32</title>
<updated>2020-01-05T23:50:26+00:00</updated>
<author>
<name>Ulrich Sibiller</name>
<email>uli42@gmx.de</email>
</author>
<published>2018-11-07T21:19:17+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=d409b566bdaf7d40f1697095e62b7811c793fd30'/>
<id>urn:sha1:d409b566bdaf7d40f1697095e62b7811c793fd30</id>
<content type='text'>
</content>
</entry>
<entry>
<title>os: unifdef __SCO__</title>
<updated>2020-01-05T23:49:59+00:00</updated>
<author>
<name>Ulrich Sibiller</name>
<email>uli42@gmx.de</email>
</author>
<published>2018-11-07T21:27:49+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=38ab9ad85948bbd475337d60138e6de60726130a'/>
<id>urn:sha1:38ab9ad85948bbd475337d60138e6de60726130a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>os: fix BigReq ignoring when another request is pending</title>
<updated>2019-06-11T09:32:55+00:00</updated>
<author>
<name>Ulrich Sibiller</name>
<email>uli42@gmx.de</email>
</author>
<published>2019-05-27T13:42:11+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=a736122f5712d5d1b3b798ace3583a101c0cdf61'/>
<id>urn:sha1:a736122f5712d5d1b3b798ace3583a101c0cdf61</id>
<content type='text'>
Not sure how it came to this situation, but the following commit is
partly contained in our version of the code. Some lines had not been
removed, tough...

  commit c80c41767eb101e9dbd8393d8cca7764b4e248a4
  Author: Aaron Plattner &lt;aplattner@nvidia.com&gt;
  Date:   Mon Oct 25 22:01:32 2010 -0700

    os: Fix BigReq ignoring when another request is pending

    Commit cf88363db0ebb42df7cc286b85d30d7898aea840 fixed the handling of
    BigReq requests that are way too large and handles the case where the
    read() syscall returns a short read.  However, it neglected to handle
    the case where it returns a long read, which happens when the client
    has another request in the queue after the bogus large one.

    Handle the long read case by subtracting the smaller of 'needed' and
    'gotnow' from oci-&gt;ignoreBytes.  If needed &lt; gotnow, simply subtract
    the two, leaving gotnow equal to the number of extra bytes read.
    Since the code immediately following the (oci-&gt;ignoreBytes &gt; 0) block
    tries to handle the next request, advance oci-&gt;bufptr immediately
    instead of setting oci-&gt;lenLastReq and letting the next call to
    ReadRequestFromClient do it.

    Fixes the XTS pChangeKeyboardMapping-3 test.

             CASES TESTS  PASS UNSUP UNTST NOTIU  WARN   FIP  FAIL UNRES  UNIN ABORT
    -Xproto    122   389   367     2    19     0     0     0     1     0     0     0
    +Xproto    122   389   368     2    19     0     0     0     0     0     0     0

    Signed-off-by: Aaron Plattner &lt;aplattner@nvidia.com&gt;
    Reviewed-by: Adam Jackson &lt;ajax@redhat.com&gt;
    Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;
</content>
</entry>
<entry>
<title>nxagent: Fix an excessive request size limitation that broke big-requests.</title>
<updated>2018-10-06T19:17:30+00:00</updated>
<author>
<name>Ulrich Sibiller</name>
<email>uli42@gmx.de</email>
</author>
<published>2018-10-06T18:59:25+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=da9d1a5298d34f36accfac0af3640d11e4f70543'/>
<id>urn:sha1:da9d1a5298d34f36accfac0af3640d11e4f70543</id>
<content type='text'>
Fixes ArcticaProject/nx-libs#301, #631

Backport from xorg-xserver:

  commit ca82d4bddf235c9b68d51d68636bab40eafb9889
  Author: Eric Anholt &lt;eric@anholt.net&gt;
  Date:   Fri Aug 31 13:00:23 2007 -0700

    Bug #7186: Fix an excessive request size limitation that broke big-requests.

    MAXBUFSIZE appears to be a leftover of some previous time.  Instead, just
    use maxBigRequestSize when bigreqs are available (limiting buffers to ~16MB).
    When bigreqs are not available, needed won't be larger than the maximum
    size of a non-bigreqs request (256kB).
</content>
</entry>
<entry>
<title>os/io.c: fix unitialised bytes</title>
<updated>2018-07-03T14:13:43+00:00</updated>
<author>
<name>Ulrich Sibiller</name>
<email>uli42@gmx.de</email>
</author>
<published>2018-06-21T21:05:05+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=e5975a70e8e03e58f102e8e238143d22cd4d1ed5'/>
<id>urn:sha1:e5975a70e8e03e58f102e8e238143d22cd4d1ed5</id>
<content type='text'>
... by implementing some kind of recalloc (mix of realloc and calloc).

Fixes this valgrind finding:

==7061== Syscall param writev(vector[...]) points to uninitialised byte(s)
==7061==    at 0x781EFE0: __writev_nocancel (syscall-template.S:84)
==7061==    by 0x488974: _XSERVTransSocketWritev (Xtranssock.c:2914)
==7061==    by 0x47DBD3: FlushClient (io.c:1080)
==7061==    by 0x47DBD3: FlushAllOutput.part.0 (io.c:817)
==7061==    by 0x477304: WaitForSomething (WaitFor.c:246)
==7061==    by 0x434369: Dispatch (NXdispatch.c:360)
==7061==    by 0x40EB92: main (main.c:353)
==7061==  Address 0x102106f3 is 50,211 bytes inside a block of size 54,308 alloc'd
==7061==    at 0x4C2FD5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==7061==    by 0x47F08F: FlushClient (io.c:1123)
==7061==    by 0x47F307: WriteToClient (io.c:991)
==7061==    by 0x42903C: doListFontsAndAliases (NXdixfonts.c:660)
==7061==    by 0x42B7D6: ListFonts (NXdixfonts.c:735)
==7061==    by 0x433A6D: ProcListFonts (NXdispatch.c:989)
==7061==    by 0x4344A5: Dispatch (NXdispatch.c:482)
==7061==    by 0x40EB92: main (main.c:353)
==7061==  Uninitialised value was created by a heap allocation
==7061==    at 0x4C2FD5F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==7061==    by 0x47F08F: FlushClient (io.c:1123)
==7061==    by 0x47F307: WriteToClient (io.c:991)
==7061==    by 0x42903C: doListFontsAndAliases (NXdixfonts.c:660)
==7061==    by 0x42B7D6: ListFonts (NXdixfonts.c:735)
==7061==    by 0x433A6D: ProcListFonts (NXdispatch.c:989)
==7061==    by 0x4344A5: Dispatch (NXdispatch.c:482)
==7061==    by 0x40EB92: main (main.c:353)
==7061==
</content>
</entry>
<entry>
<title>dix/os: backport various signal handling and smart scheduler changes from X.org</title>
<updated>2017-03-21T09:58:01+00:00</updated>
<author>
<name>Mike Gabriel</name>
<email>mike.gabriel@das-netzwerkteam.de</email>
</author>
<published>2017-02-16T15:21:34+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=366067b7c3678148bff858239e3c16e0d6043e03'/>
<id>urn:sha1:366067b7c3678148bff858239e3c16e0d6043e03</id>
<content type='text'>
 Backported from X.org:

 commit 6178b1c91cfc9e860914acc6f0be2f2d2e07a124
 Author: Adam Jackson &lt;ajax@redhat.com&gt;
 Date:   Tue Jun 7 15:52:11 2016 -0400

    dix: Use OsSignal() not signal()

    As the man page for the latter states:

        The effects of signal() in a multithreaded process are unspecified.

    We already have an interface to call sigaction() instead, use it.

    Signed-off-by: Adam Jackson &lt;ajax@redhat.com&gt;
    Reviewed-by: Keith Packard &lt;keithp@keithp.com&gt;

 commit e10ba9e4b52269b2ac75c4802dce4ca47d169657
 Author: Keith Packard &lt;keithp@keithp.com&gt;
 Date:   Wed Nov 11 22:02:01 2015 -0800

    Remove non-smart scheduler. Don't require setitimer.

    This allows the server to call GetTimeInMillis() after each request is
    processed to avoid needing setitimer. -dumbSched now turns off the
    setitimer.

    Reviewed-by: Adam Jackson &lt;ajax@redhat.com&gt;
    Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;

 commit 1f915e8b524dd02011158aa038935970684c7630
 Author: Daniel Drake &lt;drake@endlessm.com&gt;
 Date:   Wed May 20 13:16:12 2015 -0600

    Keep SIGALRM restart flag after Popen

    Commit 94ab7455 added SA_RESTART to the SIGALRM handler.  However, the
    Popen code tears down and recreates the SIGALRM handler via OsSignal(),
    and this flag is dropped at this time.

    Clean the code to use just a single codepath for creating this signal
    handler, always applying SA_RESTART.

    [ajax: Fixed commit id]

    Reviewed-by: Adam Jackson &lt;ajax@redhat.com&gt;
    Signed-off-by: Daniel Drake &lt;drake@endlessm.com&gt;

 commit 94ab7455abc213fc96760e29ab2e943ec682fb22
 Author: Daniel Drake &lt;drake@endlessm.com&gt;
 Date:   Tue May 12 16:39:22 2015 -0600

    Allow system call restarts upon signal interruption

    The X server frequently deals with SIGIO and SIGALRM interruptions.
    If process execution is inside certain blocking system calls
    when these signals arrive, e.g. with the kernel blocked on
    a contended semaphore, the system calls will be interrupted.

    Some system calls are automatically restartable (the kernel re-executes
    them with the same parameters once the signal handler returns) but
    only if the signal handler allows it.

    Set SA_RESTART on the signal handlers to enable this convenient
    behaviour.

    Reviewed-by: Adam Jackson &lt;ajax@redhat.com&gt;
    Signed-off-by: Daniel Drake &lt;drake@endlessm.com&gt;

 commit a6c71ce5d2d2fe89e07a2ef5041c915acc3dc686
 Author: Tiago Vignatti &lt;tiago.vignatti@nokia.com&gt;
 Date:   Mon Mar 28 19:21:28 2011 +0300

    os: fix memory and fd leaks in Popen

    Signed-off-by: Tiago Vignatti &lt;tiago.vignatti@nokia.com&gt;
    Reviewed-by: Peter Hutterer &lt;peter.hutterer@who-t.net&gt;
    Reviewed-by: Nicolas Peninguy &lt;nico@lostgeeks.org&gt;

 commit c9051b684b524549eab6d5b88ee3e195a6f6fbe8
 Author: Alan Coopersmith &lt;alan.coopersmith@sun.com&gt;
 Date:   Wed Nov 5 18:25:57 2008 -0800

    Use OsSignal in Popen/Pclose to avoid SysV signal() stupidity

 commit 0e9ef65fa583bf2393dd0fda82df6f092387b425
 Author: Keith Packard &lt;keithp@koto.keithp.com&gt;
 Date:   Wed Nov 7 16:33:10 2007 -0800

    Don't frob timers unless SmartSchedule is running

 commit 2338d5c9914e2a43c3a4f7ee0f4355ad0a1ad9e7
 Author: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
 Date:   Sun Oct 28 09:37:52 2007 +0100

    reduce wakeups from smart scheduler

    The smart scheduler itimer currently always fires after each request
    (which in turn causes the CPU to wake out of idle, burning precious
    power). Rather than doing this, just stop the timer before going into
    the select() portion of the WaitFor loop. It's a cheap system call, and
    it will only get called if there's no more commands batched up from the
    active fd.

    This change also allows some of the functions to be simplified;
    setitimer() will only fail if it's passed invalid data, and we don't do
    that... so make it void and remove all the conditional code that deals
    with failure.

    The change also allows us to remove a few variables that were used for
    housekeeping between the signal handler and the main loop.

    Signed-off-by: Keith Packard &lt;keithp@koto.keithp.com&gt;

 **Note**: The above change also required ABI changes in hw/nxagent/.

 commit abe0a51f3f790f8c055289465e130177c4b647cc
 Author: Ben Byer &lt;bbyer@bbyer.apple.com&gt;
 Date:   Fri Sep 21 17:07:36 2007 -0700

    So, like, checking return codes of system calls (signal, etc) is good.
    Also, only restore an old signal handler if one was actually set
    (prevents the server from dying on OS X).

 commit 6da39c67905500ab2db00a45cda4a9f756cdde96
 Author: Eric Anholt &lt;eric@anholt.net&gt;
 Date:   Wed Sep 12 13:23:13 2007 +0000

    Fix build on FreeBSD after Popen changes.

 commit a5b8053606d6e786cdcf6734f271acc05f9cc588
 Author: Adam Jackson &lt;ajax@benzedrine.nwnk.net&gt;
 Date:   Tue Sep 11 11:37:06 2007 -0400

    Ignore - not just block - SIGALRM around Popen()/Pclose().

    Because our "popen" implementation uses stdio, and because nobody's stdio
    library is capable of surviving signals, we need to make absolutely sure
    that we hide the SIGALRM from the smart scheduler.  Otherwise, when you
    open a menu in openoffice, and it recompiles XKB to deal with the
    accelerators, and you popen xkbcomp because we suck, then the scheduler
    will tell you you're taking forever doing something stupid, and the
    wait() code will get confused, and input will hang and your CPU usage
    slams to 100%.  Down, not across.

 Backported-to-NX-by: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;
</content>
</entry>
<entry>
<title>Set padding bytes to 0 in WriteToClient</title>
<updated>2017-03-20T09:50:58+00:00</updated>
<author>
<name>Alan Coopersmith</name>
<email>alan.coopersmith@oracle.com</email>
</author>
<published>2017-02-14T18:01:17+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=f9123570dbe81fdea4e38e7be9775cf926ed1eb3'/>
<id>urn:sha1:f9123570dbe81fdea4e38e7be9775cf926ed1eb3</id>
<content type='text'>
 commit bed610fcae41ddfe21fa9acde599b17d1d15f5d1
 Author: Alan Coopersmith &lt;alan.coopersmith@oracle.com&gt;
 Date:   Mon Jul 9 19:12:44 2012 -0700

    Set padding bytes to 0 in WriteToClient

    Clear them out when needed instead of leaving whatever values were
    present in previously sent messages.

    Signed-off-by: Alan Coopersmith &lt;alan.coopersmith@oracle.com&gt;
    Reviewed-by: Keith Packard &lt;keithp@keithp.com&gt;
    Tested-by: Daniel Stone &lt;daniel@fooishbar.org&gt;

 Backported-to-NX-by: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;
</content>
</entry>
<entry>
<title>os: Return BadLength instead of disconnecting BigReq clients (#4565)</title>
<updated>2017-03-20T09:50:57+00:00</updated>
<author>
<name>Aaron Plattner</name>
<email>aplattner@nvidia.com</email>
</author>
<published>2017-02-14T15:47:10+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=2ecd2a006866bd7053536c04b195319a548c6ca2'/>
<id>urn:sha1:2ecd2a006866bd7053536c04b195319a548c6ca2</id>
<content type='text'>
 Backported from X.org:

 commit 67c66606c760c263d7a4c2d1bba43ed6225a4e7c
 Author: Robert Morell &lt;rmorell@nvidia.com&gt;
 Date:   Thu May 9 13:09:02 2013 -0700

    os: Reset input buffer's 'ignoreBytes' field

    If a client sends a request larger than maxBigRequestSize, the server is
    supposed to ignore it.

    Before commit cf88363d, the server would simply disconnect the client.  After
    that commit, it attempts to gracefully ignore the request by remembering how
    long the client specified the request to be, and ignoring that many bytes.
    However, if a client sends a BigReq header with a large size and disconnects
    before actually sending the rest of the specified request, the server will
    reuse the ConnectionInput buffer without resetting the ignoreBytes field.  This
    makes the server ignore new X clients' requests.

    This fixes that behavior by resetting the ignoreBytes field when putting the
    ConnectionInput buffer back on the FreeInputs list.

    Signed-off-by: Robert Morell &lt;rmorell@nvidia.com&gt;
    Reviewed-by: Peter Hutterer &lt;peter.hutterer@who-t.net&gt;
    Signed-off-by: Peter Hutterer &lt;peter.hutterer@who-t.net&gt;

 commit c80c41767eb101e9dbd8393d8cca7764b4e248a4
 Author: Aaron Plattner &lt;aplattner@nvidia.com&gt;
 Date:   Mon Oct 25 22:01:32 2010 -0700

    os: Fix BigReq ignoring when another request is pending

    Commit cf88363db0ebb42df7cc286b85d30d7898aea840 fixed the handling of
    BigReq requests that are way too large and handles the case where the
    read() syscall returns a short read.  However, it neglected to handle
    the case where it returns a long read, which happens when the client
    has another request in the queue after the bogus large one.

    Handle the long read case by subtracting the smaller of 'needed' and
    'gotnow' from oci-&gt;ignoreBytes.  If needed &lt; gotnow, simply subtract
    the two, leaving gotnow equal to the number of extra bytes read.
    Since the code immediately following the (oci-&gt;ignoreBytes &gt; 0) block
    tries to handle the next request, advance oci-&gt;bufptr immediately
    instead of setting oci-&gt;lenLastReq and letting the next call to
    ReadRequestFromClient do it.

    Fixes the XTS pChangeKeyboardMapping-3 test.

             CASES TESTS  PASS UNSUP UNTST NOTIU  WARN   FIP  FAIL UNRES  UNIN ABORT
    -Xproto    122   389   367     2    19     0     0     0     1     0     0     0
    +Xproto    122   389   368     2    19     0     0     0     0     0     0     0

    Signed-off-by: Aaron Plattner &lt;aplattner@nvidia.com&gt;
    Reviewed-by: Adam Jackson &lt;ajax@redhat.com&gt;
    Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;

 commit cf88363db0ebb42df7cc286b85d30d7898aea840
 Author: Aaron Plattner &lt;aplattner@nvidia.com&gt;
 Date:   Fri Aug 27 10:20:29 2010 -0700

    os: Return BadLength instead of disconnecting BigReq clients (#4565)

    If a client sends a big request that's too big (i.e. bigger than
    maxBigRequestSize &lt;&lt; 2 bytes), the server just disconnects it.  This makes the
    client receive SIGPIPE the next time it tries to send something.

    The X Test Suite sends requests that are too big when the test specifies the
    TOO_LONG test type.  When the client receives SIGPIPE, XTS marks it as
    UNRESOLVED, which counts as a failure.

    Instead, remember how long the request is supposed to be and then return that
    size.  Dispatch() checks the length and sends BadLength to the client.  Then,
    whenever oci-&gt;ignoreBytes is nonzero, ignore the data read instead of trying to
    process it as a request.

    Signed-off-by: Aaron Plattner &lt;aplattner@nvidia.com&gt;
    Reviewed-by: Keith Packard &lt;keithp@keithp.com&gt;
    Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;

 Backported-to-NX-by: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;
</content>
</entry>
<entry>
<title>Fix overflow of ConnectionOutput-&gt;size and -&gt;count</title>
<updated>2017-03-20T09:50:57+00:00</updated>
<author>
<name>Peter Harris</name>
<email>pharris@opentext.com</email>
</author>
<published>2017-02-14T15:19:18+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=cbc2d300b984d7ebc789deac0642104f223c2920'/>
<id>urn:sha1:cbc2d300b984d7ebc789deac0642104f223c2920</id>
<content type='text'>
 commit 4b0d0df34f10a88c10cb23dd50087b59f5c4fece
 Author: Peter Harris &lt;pharris@opentext.com&gt;
 Date:   Mon Nov 17 14:31:24 2014 -0500

    Fix overflow of ConnectionOutput-&gt;size and -&gt;count

    When (long) is larger than (int), and when realloc succeeds with sizes
    larger than INT_MAX, ConnectionOutput-&gt;size and ConnectionOutput-&gt;count
    overflow and become negative.

    When ConnectionOutput-&gt;count is negative, InsertIOV does not actually
    insert an IOV, and FlushClient goes into an infinite loop of writev(fd,
    iov, 0) [an empty list].

    Avoid this situation by killing the client when it has more than INT_MAX
    unread bytes of data.

    Signed-off-by: Peter Harris &lt;pharris@opentext.com&gt;
    Reviewed-by: Keith Packard &lt;keithp@keithp.com&gt;
    Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;

 Backported-to-NX-by: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;
</content>
</entry>
<entry>
<title>dix: Pass ClientPtr to FlushCallback</title>
<updated>2017-03-20T09:50:25+00:00</updated>
<author>
<name>Michel Dänzer</name>
<email>michel.daenzer@amd.com</email>
</author>
<published>2017-02-15T08:13:57+00:00</published>
<link rel='alternate' type='text/html' href='https://openid.arctica-project.org/nx-libs/commit/?id=65b6a62bc726b5e4f4833ed1e27733e22fabcfa8'/>
<id>urn:sha1:65b6a62bc726b5e4f4833ed1e27733e22fabcfa8</id>
<content type='text'>
 Backported X.org commits:

 commit b380f3ac51f40ffefcde7d3db5c4c149f274246d
 Author: Michel Dänzer &lt;michel.daenzer@amd.com&gt;
 Date:   Tue Aug 2 17:53:01 2016 +0900

    dix: Pass ClientPtr to FlushCallback

    This change has two effects:

    1. Only calls FlushCallbacks when we're actually flushing data to a
       client. The unnecessary FlushCallback calls could cause significant
       performance degradation with compositing, which is significantly
       reduced even without any driver changes.

    2. By passing the ClientPtr to FlushCallbacks, drivers can completely
       eliminate unnecessary flushing of GPU commands by keeping track of
       whether we're flushing any XDamageNotify events to the client for
       which the corresponding rendering commands haven't been flushed to
       the GPU yet.

    Reviewed-by: Adam Jackson &lt;ajax@redha.com&gt;
    Signed-off-by: Michel Dänzer &lt;michel.daenzer@amd.com&gt;

 commit c65f610e12f9df168d5639534ed3c2bd40afffc8
 Author: Kristian Høgsberg &lt;krh@bitplanet.net&gt;
 Date:   Thu Jul 29 18:52:35 2010 -0400

    Always call the flush callback chain when we flush client buffers

    We were missing the callback in a couple of places.  Drivers may use
    the flush callback to submit batched up rendering before events (for
    example, damage events) are sent out, to ensure that the rendering
    has been queued when the client receives the event.

    Signed-off-by: Kristian Høgsberg &lt;krh@bitplanet.net&gt;
    Reviewed-by: Keith Packard &lt;keithp@keithp.com&gt;

 Backported-to-NX-by: Mike Gabriel &lt;mike.gabriel@das-netzwerkteam.de&gt;
</content>
</entry>
</feed>
