1056N/A<?xml version="1.0" encoding="UTF-8"?>
1056N/A<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1276N/A<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>X.Org Version Numbering Schemes</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot_9276" /><meta name="description" content="X.Org has adopted the same basic numbering scheme used by the XFree86 Project, Inc. for their releases. The actual numbers are different, but the basic scheme is the same. This document reflects the policy that X.Org uses." /><style xmlns="" type="text/css">/*
1276N/A * Copyright (c) 2011 Gaetan Nadon
1276N/A * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
1276N/A *
1276N/A * Permission is hereby granted, free of charge, to any person obtaining a
1276N/A * copy of this software and associated documentation files (the "Software"),
1276N/A * to deal in the Software without restriction, including without limitation
1276N/A * the rights to use, copy, modify, merge, publish, distribute, sublicense,
1276N/A * and/or sell copies of the Software, and to permit persons to whom the
1276N/A * Software is furnished to do so, subject to the following conditions:
1276N/A *
1276N/A * The above copyright notice and this permission notice (including the next
1276N/A * paragraph) shall be included in all copies or substantial portions of the
1276N/A * Software.
1276N/A *
1276N/A * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1276N/A * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1276N/A * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
1276N/A * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1276N/A * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1276N/A * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
1276N/A * DEALINGS IN THE SOFTWARE.
1276N/A */
1276N/A
1276N/A/*
1276N/A * Shared stylesheet for X.Org documentation translated to HTML format
1276N/A * http://www.sagehill.net/docbookxsl/UsingCSS.html
1276N/A * http://www.w3schools.com/css/default.asp
1276N/A * https://addons.mozilla.org/en-US/firefox/addon/web-developer/developers
1276N/A * https://addons.mozilla.org/en-US/firefox/addon/font-finder/
1276N/A */
1276N/A
1276N/A/*
1276N/A * The sans-serif fonts are considered more legible on a computer screen
1276N/A * http://dry.sailingissues.com/linux-equivalents-verdana-arial.html
1276N/A *
1276N/A */
1276N/Abody {
1276N/A font-family: "Bitstream Vera Sans", "DejaVu Sans", Tahoma, Geneva, Arial, Sans-serif;
1276N/A /* In support of using "em" font size unit, the w3c recommended method */
1276N/A font-size: 100%;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: all elements requiring mono spaced fonts.
1276N/A *
1276N/A * The family names attempt to match the proportionally spaced font
1276N/A * family names such that the same font name is used for both.
1276N/A * We'd like to use Bitstream, for example, in both proportionally and
1276N/A * mono spaced font text.
1276N/A */
1276N/A.command,
1276N/A.errorcode,
1276N/A.errorname,
1276N/A.errortype,
1276N/A.filename,
1276N/A.funcsynopsis,
1276N/A.function,
1276N/A.parameter,
1276N/A.programlisting,
1276N/A.property,
1276N/A.screen,
1276N/A.structname,
1276N/A.symbol,
1276N/A.synopsis,
1276N/A.type
1276N/A{
1276N/A font-family: "Bitstream Vera Sans Mono", "DejaVu Sans Mono", Courier, "Liberation Mono", Monospace;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Books have a title page, a preface, some chapters and appendices,
1276N/A * a glossary, an index and a bibliography, in that order.
1276N/A *
1276N/A * An Article has no preface and no chapters. It has sections, appendices,
1276N/A * a glossary, an index and a bibliography.
1276N/A */
1276N/A
1276N/A/*
1276N/A * Selection: book main title and subtitle
1276N/A */
1276N/Adiv.book>div.titlepage h1.title,
1276N/Adiv.book>div.titlepage h2.subtitle {
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: article main title and subtitle
1276N/A */
1276N/Adiv.article>div.titlepage h2.title,
1276N/Adiv.article>div.titlepage h3.subtitle,
1276N/Adiv.article>div.sect1>div.titlepage h2.title,
1276N/Adiv.article>div.section>div.titlepage h2.title {
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: various types of authors and collaborators, individuals or corporate
1276N/A *
1276N/A * These authors are not always contained inside an authorgroup.
1276N/A * They can be contained inside a lot of different parent types where they might
1276N/A * not be centered.
1276N/A * Reducing the margin at the bottom makes a visual separation between authors
1276N/A * We specify here the ones on the title page, others may be added based on merit.
1276N/A */
1276N/Adiv.titlepage .authorgroup,
1276N/Adiv.titlepage .author,
1276N/Adiv.titlepage .collab,
1276N/Adiv.titlepage .corpauthor,
1276N/Adiv.titlepage .corpcredit,
1276N/Adiv.titlepage .editor,
1276N/Adiv.titlepage .othercredit {
1276N/A text-align: center;
1276N/A margin-bottom: 0.25em;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: the affiliation of various types of authors and collaborators,
1276N/A * individuals or corporate.
1276N/A */
1276N/Adiv.titlepage .affiliation {
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: product release information (X Version 11, Release 7)
1276N/A *
1276N/A * The releaseinfo element can be contained inside a lot of different parent
1276N/A * types where it might not be centered.
1276N/A * We specify here the one on the title page, others may be added based on merit.
1276N/A */
1276N/Adiv.titlepage p.releaseinfo {
1276N/A font-weight: bold;
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: publishing date
1276N/A */
1276N/Adiv.titlepage .pubdate {
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * The legal notices are displayed in smaller sized fonts
1276N/A * Justification is only supported in IE and therefore not requested.
1276N/A *
1276N/A */
1276N/A.legalnotice {
1276N/A font-size: small;
1276N/A font-style: italic;
1276N/A}
1276N/A
1276N/A/*
1276N/A * For documentation having multiple licenses, the copyright and legalnotice
1276N/A * elements sequence cannot instantiated multiple times.
1276N/A * The copyright notice and license text are therefore coded inside a legalnotice
1276N/A * element. The role attribute on the paragraph is used to allow styling of the
1276N/A * copyright notice text which should not be italicized.
1276N/A */
1276N/Ap.multiLicensing {
1276N/A font-style: normal;
1276N/A font-size: medium;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: book or article main ToC title
1276N/A * A paragraph is generated for the title rather than a level 2 heading.
1276N/A * We do not want to select chapters sub table of contents, only the main one
1276N/A */
1276N/Adiv.book>div.toc>p,
1276N/Adiv.article>div.toc>p {
1276N/A font-size: 1.5em;
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: major sections of a book or an article
1276N/A *
1276N/A * Unlike books, articles do not have a titlepage element for appendix.
1276N/A * Using the selector "div.titlepage h2.title" would be too general.
1276N/A */
1276N/Adiv.book>div.preface>div.titlepage h2.title,
1276N/Adiv.book>div.chapter>div.titlepage h2.title,
1276N/Adiv.article>div.sect1>div.titlepage h2.title,
1276N/Adiv.article>div.section>div.titlepage h2.title,
1276N/Adiv.book>div.appendix>div.titlepage h2.title,
1276N/Adiv.article>div.appendix h2.title,
1276N/Adiv.glossary>div.titlepage h2.title,
1276N/Adiv.index>div.titlepage h2.title,
1276N/Adiv.bibliography>div.titlepage h2.title {
1276N/A /* Add a border top over the major parts, just like printed books */
1276N/A /* The Gray color is already used for the ruler over the main ToC. */
1276N/A border-top-style: solid;
1276N/A border-top-width: 2px;
1276N/A border-top-color: Gray;
1276N/A /* Put some space between the border and the title */
1276N/A padding-top: 0.2em;
1276N/A text-align: center;
1276N/A}
1276N/A
1276N/A/*
1276N/A * A Screen is a verbatim environment for displaying text that the user might
1276N/A * see on a computer terminal. It is often used to display the results of a command.
1276N/A *
1276N/A * http://www.css3.info/preview/rounded-border/
1276N/A */
1276N/A.screen {
1276N/A background: #e0ffff;
1276N/A border-width: 1px;
1276N/A border-style: solid;
1276N/A border-color: #B0C4DE;
1276N/A border-radius: 1.0em;
1276N/A /* Browser's vendor properties prior to CSS 3 */
1276N/A -moz-border-radius: 1.0em;
1276N/A -webkit-border-radius: 1.0em;
1276N/A -khtml-border-radius: 1.0em;
1276N/A margin-left: 1.0em;
1276N/A margin-right: 1.0em;
1276N/A padding: 0.5em;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Emphasis program listings with a light shade of gray similar to what
1276N/A * DocBook XSL guide does: http://www.sagehill.net/docbookxsl/ProgramListings.html
1276N/A * Found many C API docs on the web using like shades of gray.
1276N/A */
1276N/A.programlisting {
1276N/A background: #F4F4F4;
1276N/A border-width: 1px;
1276N/A border-style: solid;
1276N/A border-color: Gray;
1276N/A padding: 0.5em;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Emphasis functions synopsis using a darker shade of gray.
1276N/A * Add a border such that it stands out more.
1276N/A * Set the padding so the text does not touch the border.
1276N/A */
1276N/A.funcsynopsis, .synopsis {
1276N/A background: #e6e6fa;
1276N/A border-width: 1px;
1276N/A border-style: solid;
1276N/A border-color: Gray;
1276N/A clear: both;
1276N/A margin: 0.5em;
1276N/A padding: 0.25em;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: paragraphs inside synopsis
1276N/A *
1276N/A * Removes the default browser margin, let the container set the padding.
1276N/A * Paragraphs are not always used in synopsis
1276N/A */
1276N/A.funcsynopsis p,
1276N/A.synopsis p {
1276N/A margin: 0;
1276N/A padding: 0;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: variable lists, informal tables and tables
1276N/A *
1276N/A * Note the parameter name "variablelist.as.table" in xorg-xhtml.xsl
1276N/A * A table with rows and columns is constructed inside div.variablelist
1276N/A *
1276N/A * Set the left margin so it is indented to the right
1276N/A * Display informal tables with single line borders
1276N/A */
1276N/Atable {
1276N/A margin-left: 0.5em;
1276N/A border-collapse: collapse;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Selection: paragraphs inside tables
1276N/A *
1276N/A * Removes the default browser margin, let the container set the padding.
1276N/A * Paragraphs are not always used in tables
1276N/A */
1276N/Atd p {
1276N/A margin: 0;
1276N/A padding: 0;
1276N/A}
1276N/A
1276N/A/*
1276N/A * Add some space between the left and right column.
1276N/A * The vertical alignment helps the reader associate a term
1276N/A * with a multi-line definition.
1276N/A */
1276N/Atd, th {
1276N/A padding-left: 1.0em;
1276N/A padding-right: 1.0em;
1276N/A vertical-align: top;
1276N/A}
1276N/A
1276N/A.warning {
1276N/A border: 1px solid red;
1276N/A background: #FFFF66;
1276N/A padding-left: 0.5em;
1276N/A}
1276N/A</style></head><body><div class="article"><div class="titlepage"><div><div><h2 class="title"><a id="Versions"></a>X.Org Version Numbering Schemes</h2></div><div><h3 class="corpauthor">
1056N/AThe XFree86 Project, Inc
1056N/A</h3></div><div><h3 class="corpauthor">
1056N/AUpdated for X.Org by Keith Packard, Kevin E. Martin, and Alan Coopersmith
1276N/A</h3></div><div><p class="pubdate">November 2010</p></div><div><div class="abstract"><p>
1056N/AX.Org has adopted the same basic numbering scheme used by the XFree86
1056N/AProject, Inc. for their releases. The actual numbers are different, but the
1056N/Abasic scheme is the same. This document reflects the policy that X.Org uses.
1276N/A</p></div></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl><dt><span class="sect1"><a href="#Module_Versions">Module Versions</a></span></dt><dt><span class="sect1"><a href="#Releases_Development_Streams_and_Branches">Releases, Development Streams, and Branches</a></span></dt><dt><span class="sect1"><a href="#Current_Version_Numbering_Scheme">Current Version Numbering Scheme</a></span></dt><dd><dl><dt><span class="sect2"><a href="#Development_Branch">Development Branch</a></span></dt><dt><span class="sect2"><a href="#Stable_Branch">Stable Branch</a></span></dt></dl></dd><dt><span class="sect1"><a href="#Finding_the_X.Org_X_Server_Version_From_a_Client">Finding the X.Org X Server Version From a Client</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Module_Versions"></a>Module Versions</h2></div></div></div><p>
1056N/AStarting with the X11R7.0 release, each module has its own version number.
1056N/AFor those without a natural starting point, the version numbers started at
1056N/A1.0. For instance, the X11R7.0 release included the xorg-server 1.0
1056N/Amodule. As modules are released independently from the rest of the
1056N/Awindow system, the module version is the most accurate source of version
1056N/Ainformation. For instance, there are many X server releases in a year,
1056N/Abut generally only one window system release, so an X server version number
1056N/Asuch as 1.7.7 is more informative than the X11R7.5 version for the window
1276N/Asystem <span class="quote">“<span class="quote">katamari</span>”</span> release.
1056N/A</p><p>
1056N/AUnfortunately, up through the X server 1.3 release, the X server
1056N/Aused the Window System version when reporting its version number
1056N/Ain log files, the -version option, and the connection setup string
1056N/A(displayed by xdpyinfo). This was corrected with X server 1.3, which
1056N/Acaused the visible version number string to appear to jump backwards
1056N/Afrom 7.2 to 1.3.
1276N/A</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Releases_Development_Streams_and_Branches"></a>Releases, Development Streams, and Branches</h2></div></div></div><p>
1056N/AX.Org has two release branches for the X server software, and several
1056N/Aother modules with active ongoing development.
1056N/AFirst is the trunk of the git repository. This is
1056N/Athe main development stream, where all new work and work for future
1056N/Areleases is done.
1056N/A</p><p>
1056N/ASecond is the stable bugfix branch for the latest full release. It is
1056N/Acreated around the time of the release. The branch will be named for the
1276N/Arelease version, such as <span class="quote">“<span class="quote"><code class="literal">server-1.9-branch</code></span>”</span>
1056N/Afor the X server 1.9.x series of releases.
1056N/AFixes for bugs found in the release will be added to this branch (as
1056N/Awell as the trunk), and updates to this release (if any) will be cut
1056N/Afrom this branch. Similar stable branches are present for previous full
1056N/Areleases.
1056N/A</p><p>
1056N/AThe X.Org Foundation is planning to make full releases from the main
1056N/Adevelopment stream at regular intervals in the 6-12 month range. The
1056N/Afeature freezes for these releases will usually be 2-3 months before the
1056N/Arelease dates. This general plan is a goal, not a binding commitment.
1056N/AThe actual release intervals and dates will depend to a large degree on
1056N/Athe resource available to X.Org.
1056N/AUpdate/bugfix releases will be made on an as-required basis,
1056N/Adepending also on the availability of resources, and will generally be
1056N/Alimited to serious bug and security fixes. New features will not
1056N/Ausually be added in update releases.
1056N/A</p><p>
1056N/AAside from actual releases, snapshots of the active release branches
1056N/Aare tagged in the git repository from time to time. Each such snapshot
1056N/Ahas an identifiable version number.
1276N/A</p></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Current_Version_Numbering_Scheme"></a>Current Version Numbering Scheme</h2></div></div></div><p>
1056N/AStarting with the main development branch after X11R6.7, the X.Org
1056N/Aversions are numbered according to the scheme outlined here.
1056N/A</p><p>
1056N/AThe version numbering format is <code class="literal">M.m.P.s</code>,
1056N/Awhere <em class="replaceable"><code>M</code></em> is the major version number,
1056N/A<em class="replaceable"><code>m</code></em> is the minor version number,
1056N/A<em class="replaceable"><code>P</code></em> is the patch level, and
1056N/A<em class="replaceable"><code>s</code></em> is the snapshot number.
1056N/AFull releases have <em class="replaceable"><code>P</code></em> set to zero, and it is
1056N/Aincremented for each subsequent bug fix release on the post-release
1056N/Astable branch. The snapshot number <em class="replaceable"><code>s</code></em> is
1056N/Apresent only for between-release snapshots of the development and
1056N/Astable branches.
1276N/A</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Development_Branch"></a>Development Branch</h3></div></div></div><p>
1056N/AImmediately after forming a release stable branch, the patch level
1056N/Anumber for the main development branch is bumped to 99, and the snapshot
1056N/Anumber is reset. The snapshot number is incremented for each tagged
1056N/Adevelopment snapshot. The git tag for snapshots is
1276N/A<span class="quote">“<span class="quote"><code class="literal">xorg-server-M.m.P.s</code></span>”</span>.
1056N/AWhen the development branch enters feature
1056N/Afreeze, the snapshot number is bumped to 900. A stable branch may be
1056N/Acreated for the next full release at any time after the feature freeze.
1056N/AWhen it is, the branch is called
1276N/A<span class="quote">“<span class="quote"><code class="literal">server-M.m-branch</code></span>”</span>. The
1056N/Asnapshot number is incremented from there until the release is
1276N/Afinalised. Each of these snapshots is a <span class="quote">“<span class="quote">release candidate</span>”</span>. When the
1056N/Arelease is finalised, the minor version is incremented, the patch level
1056N/Ais set to zero, and the snapshot number removed.
1056N/A</p><p>
1056N/AHere's an example which shows the version number sequence for the
1056N/Adevelopment leading up to version 1.8:
1056N/A</p><p>
1276N/A</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top" /></colgroup><tbody><tr><td><p><span class="term"><code class="literal">1.7.99.1</code></span></p></td><td><p>
1056N/AThe first snapshot of the pre-1.8 development branch.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.7.99.23</code></span></p></td><td><p>
1056N/AThe twenty-third snapshot of the pre-1.8 development branch.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.7.99.900</code></span></p></td><td><p>
1056N/AThe start of the 1.8 feature freeze.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.7.99.903</code></span></p></td><td><p>
1056N/AThe third 1.8 release candidate.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.0</code></span></p></td><td><p>
1056N/AThe 1.8 release.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.99.1</code></span></p></td><td><p>
1056N/AThe first pre-1.9 development snapshot, which is the first main
1056N/Abranch snapshot after creating the 1.8 stable branch.
1056N/A</p></td></tr></tbody></table></div><p>
1276N/A</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="Stable_Branch"></a>Stable Branch</h3></div></div></div><p>
1056N/AAfter a full release, the stable branch for the release will be
1056N/Amaintained with bug fixes and important updates until the next full
1276N/Arelease. Any snapshots on this branch are considered <span class="quote">“<span class="quote">release
1276N/Acandidates,</span>”</span> which is indicated by setting <em class="replaceable"><code>s</code></em>
1056N/Ato a number above
1056N/A900. The snapshot number is incremented for each release candidate
1056N/Auntil the update release is finalised. The patch level value
1056N/A(<em class="replaceable"><code>P</code></em>) is incremented for each update release.
1056N/A</p><p>
1056N/AHere's an example which shows a version number sequence for a 1.8.x
1056N/Astable branch:
1056N/A</p><p>
1276N/A</p><div class="variablelist"><table border="0" class="variablelist"><colgroup><col align="left" valign="top" /></colgroup><tbody><tr><td><p><span class="term"><code class="literal">1.8.0</code></span></p></td><td><p>
1056N/AThe 1.8 release.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.0.901</code></span></p></td><td><p>
1056N/AThe first pre 1.8.1 snapshot.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.0.903</code></span></p></td><td><p>
1056N/AThe third pre 1.8.1 snapshot, also known as the third 1.8.1 release
1056N/Acandidate.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.1</code></span></p></td><td><p>
1056N/AThe 1.8.1 release.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.1.901</code></span></p></td><td><p>
1056N/AThe first pre 1.8.2 snapshot.
1276N/A</p></td></tr><tr><td><p><span class="term"><code class="literal">1.8.2</code></span></p></td><td><p>
1056N/AThe 1.8.2 release.
1056N/A</p></td></tr></tbody></table></div><p>
1276N/A</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Finding_the_X.Org_X_Server_Version_From_a_Client"></a>Finding the X.Org X Server Version From a Client</h2></div></div></div><p>
1056N/AThe X.Org X servers report a <code class="function">VendorRelease</code> value that
1056N/Amatches the X.Org version number. There have been some cases of releases where
1056N/Athis value wasn't set correctly. The rules for interpreting this value
1056N/Aas well as the known exceptions are outlined here.
1056N/A</p><p>
1056N/AAs noted above, the version reported by <code class="function">VendorRelease</code>
1056N/Achanged from the window system version to the X server version starting in
1056N/Athe xorg-server 1.3 release.
1056N/A</p><p>
1056N/AFor all X.Org development and release versions using this numbering
1056N/Ascheme, the <code class="function">VendorRelease</code> value is
1056N/A<em class="replaceable"><code>MMmmPPsss</code></em>. That is, version
1056N/A<em class="replaceable"><code>M.m.P.s</code></em> has <code class="function">VendorRelease</code> set to
1056N/A<code class="code">M * 10000000 + m * 100000 + P * 1000 + s</code>.
1056N/A</p><p>
1056N/AThe following is a code fragment taken from <code class="filename">xdpyinfo.c</code>
1056N/Athat shows how the <code class="function">VendorRelease</code> information can be
1056N/Ainterpreted.
1056N/A</p><p>
1056N/A
1056N/A</p><pre class="programlisting">
1056N/A if (strstr(ServerVendor(dpy), "X.Org")) {
1056N/A int vendrel = VendorRelease(dpy);
1056N/A
1056N/A printf("X.Org version: ");
1056N/A printf("%d.%d.%d", vendrel / 10000000,
1056N/A (vendrel / 100000) % 100,
1056N/A (vendrel / 1000) % 100);
1056N/A if (vendrel % 1000) {
1056N/A printf(".%d", vendrel % 1000);
1056N/A }
1056N/A }
1056N/A</pre><p>
1056N/A
1056N/A</p></div></div></body></html>