"Initial commit to Gerrit" "1.1.0-05182012"
authorTu Truong <tctruong@tctruong.xps>
Fri, 18 May 2012 22:39:47 +0000 (15:39 -0700)
committerTu Truong <tctruong@tctruong.xps>
Fri, 18 May 2012 22:39:47 +0000 (15:39 -0700)
40 files changed:
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
NEWS [new file with mode: 0644]
README [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
build.sh [new file with mode: 0755]
config.guess [new file with mode: 0644]
config.sub [new file with mode: 0644]
configure.ac [new file with mode: 0644]
control.in [new file with mode: 0644]
cpprules.in [new file with mode: 0644]
debian/changelog [new file with mode: 0755]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0755]
debian/copyright [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/xinit.install [new file with mode: 0644]
org.x.startx.plist.cpp [new file with mode: 0644]
packaging/xorg-x11-xinit.changes [new file with mode: 0644]
packaging/xorg-x11-xinit.spec [new file with mode: 0644]
privileged_startx/10-tmpdirs.cpp [new file with mode: 0755]
privileged_startx/20-font_cache.cpp [new file with mode: 0755]
privileged_startx/Makefile.am [new file with mode: 0644]
privileged_startx/client.c [new file with mode: 0644]
privileged_startx/org.x.privileged_startx.plist.cpp [new file with mode: 0644]
privileged_startx/privileged_startx.c [new file with mode: 0644]
privileged_startx/privileged_startx.defs [new file with mode: 0644]
privileged_startx/privileged_startx_types.h [new file with mode: 0644]
privileged_startx/server.c [new file with mode: 0644]
startx.cmd [new file with mode: 0644]
startx.cpp [new file with mode: 0644]
startx.man [new file with mode: 0644]
xinit.c [new file with mode: 0755]
xinit.def [new file with mode: 0644]
xinit.man [new file with mode: 0644]
xinitrc.cmd [new file with mode: 0644]
xinitrc.cpp [new file with mode: 0644]

diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..8db1bec
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,21 @@
+Copyright 1986, 1988, 1993, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..e51f34d
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,802 @@
+commit 44e2ee01b456deb2630d21786d19ee2734d2f40a
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Wed May 28 12:01:35 2008 -0700
+
+    Apple: Don't use launchd on Tiger since it doesn't support the features we need.
+    
+    https://bugs.freedesktop.org/show_bug.cgi?id=15893
+
+commit d315445cb85876cda56f46cb657167d4eb906ba0
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Wed May 28 11:54:22 2008 -0700
+
+    Properly handle using xserverrc
+
+commit 3c5e2ed686bd3ab39e2c1e87feffb5990603cf3c
+Author: Adam Jackson <ajax@redhat.com>
+Date:   Wed May 21 14:34:52 2008 -0400
+
+    xinit 1.0.9
+
+commit c07501f69239e9c1448736ad7e689a2c3da49af9
+Author: Adam Jackson <ajax@redhat.com>
+Date:   Wed May 21 14:29:55 2008 -0400
+
+    Unset session environment variables so startx works within a running session.
+
+commit ef2610f44c7cf40489203fddc77ddcdfb7764eed
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue May 13 16:28:33 2008 -0700
+
+    Use /bin/ksh instead of /bin/sh on Solaris
+
+commit d3bc7001315a8ba13be073af86fe710740b2d4c3
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue May 13 16:25:49 2008 -0700
+
+    Check for proper cookie creation on all platforms
+
+commit ef7abe2e72074f8252f0812ab2ca05dff7e76a38
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Tue May 13 16:25:22 2008 -0700
+
+    Use od on /dev/random to generate cookie on Solaris
+
+commit e0e89545db1fc08ffe49b2b24455bb30137da671
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Mon May 12 13:17:46 2008 -0700
+
+    Apple: Don't need to spew unneccessary 'directory exists' messages.
+
+commit 85561f8347b33422dd4b0ea11911347c0666e409
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Tue May 6 00:07:18 2008 -0700
+
+    Apple: No need for these bits being here in xinit as of xserver-1.4.0-apple9
+
+commit 280774466dc9f57b4b46c618345f7938290dbb2c
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Fri Apr 25 19:00:23 2008 -0700
+
+    Apple: Added some OSX version protection, so this will still compile on Tiger and below.
+
+commit 0806ae2ecfdcb4ad5f3b7a66dcc9bc5d29d72649
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Fri Apr 25 15:12:54 2008 -0700
+
+    Apple: Use CFProcessPath instead of argv[0] trick.
+
+commit edc3112679af749f0c6fc54b2eec1b89aaf0d0c8
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Apr 20 17:30:14 2008 +0200
+
+    Replace sprintf() and strcpy() with snprintf().
+
+commit 47d561fd6efb8923cfbace6fea40dfeb314b4662
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Sat Apr 19 08:50:45 2008 -0700
+
+    Cleaned up handling of defaultserver{,args}
+    Per comments from Jeremy Reed on the list... basically doing for everyone what I do for Apple
+
+commit f6e75ebf5f7f245e1cdeb883a1d2db74f2451fd4
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Sat Apr 19 08:47:20 2008 -0700
+
+    Apple: Fixed make dist to include a missing header and not include generated sources
+
+commit 2b06b58a328e13df4704df8a48d4cd0b1100ba7e
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Thu Apr 17 17:19:41 2008 -0700
+
+    Apple: Added privileged_startx
+
+commit fe5af014f2645d1ecf981d40d3c10a3621e9ec56
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Mon Apr 14 13:05:26 2008 -0700
+
+    Apple: Wait for privileged_startx to finish, so we don't race to create /tmp/.X11-unix
+
+commit d5590dba3cce39367762d39822094ca51000142b
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Sun Apr 13 23:15:27 2008 -0700
+
+    Apple: We renamed font_cache.sh to font_cache for better consistency... Changing startx to work with this
+
+commit 5ef443bb6bff0a03ee00105d9bf95bc3f6f82b11
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Sun Apr 13 19:51:18 2008 -0700
+
+    Apple: privileged_startx is in XINITDIR
+
+commit c1b70ca67ecd12d6837584e7ef4abd01ee3b7ad9
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Tue Apr 8 17:25:54 2008 -0700
+
+    Correctly handle users with spaces in $HOME
+
+commit 1cb4bb208d481967fb736acf10c6ac2b66bf3181
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Sat Apr 5 17:23:02 2008 -0700
+
+    Apple: Renamed LaunchAgent to org.x.startx to distinguish it from the org.x.X11 application
+
+commit f7c706ff46d4a2364d65731cd1c3135ef7987380
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Fri Apr 4 22:49:51 2008 -0700
+
+    Apple: Execute /usr/X11/bin/privileged_startx if it's present
+
+commit ca08a36d10f15be6d230a9af92288da4cb24cd43
+Author: Jeremy Huddleston <jeremyhu@freedesktop.org>
+Date:   Fri Apr 4 02:31:10 2008 -0700
+
+    Apple: Fixed issue where display would not be passed correctly to the server if nolisten tcp was enabled.
+
+commit 8c52bd4509b7fe5a74026b5bc638d59add9e8945
+Author: Jeremy C. Reed <reed@tx.reedmedia.net>
+Date:   Sat Mar 15 18:23:45 2008 -0500
+
+    Use /dev/urandom for cookie it it exists
+    else fall back to /dev/random.
+    Not doing in configure.ac because can't easily check for
+    existence when doing cross-builds.
+    (Alternative would be to define this for every operating system
+    in configure.ac. Currently only is defined for OpenBSD.
+    Systems that have mcookie also will not be effected.)
+
+commit 062524614fdd4f11f32ba3d054f7fc16b9bc5f12
+Author: Matthieu Herrb <matthieu@bluenote.herrb.net>
+Date:   Sat Mar 8 19:02:05 2008 +0100
+
+    OpenBSD: use openssl rand -hex 16 to generate the cookie.
+
+commit 3eaee22196a03d88c419c42470baf562552c1a3b
+Author: Adam Jackson <ajax@redhat.com>
+Date:   Thu Mar 6 17:09:45 2008 -0500
+
+    xinit 1.0.8
+
+commit 96c8650369a99e344b4e3510f713b331d83c4272
+Author: Jeremy Huddleston <jeremy@tifa.local>
+Date:   Sun Mar 2 10:32:58 2008 -0800
+
+    Apple: Use -c in the launchd plist, so broken .profile/.bashrc don't much up startx
+
+commit aa026deef43a8c1479e6a558194e0a473bbdaeb0
+Author: Jeremy Huddleston <jeremy@tifa.local>
+Date:   Sat Mar 1 17:30:47 2008 -0800
+
+    Apple: Adding support for an xinitrc.d directory on OSX, so fink doesn't need to clobber files
+
+commit 916b1ab10d10efbdf3a544534acb95f9d28692cf
+Author: Jeremy Huddleston <jeremy@tifa.local>
+Date:   Mon Feb 18 15:53:46 2008 -0800
+
+    Apple: font caching and defaults
+    Quieted defaults "error" messages by initializing default values
+    Do font caching in startx, so users with custom ~/.xinitrc won't have to
+    worry about updating it.
+    Add "cache_fonts" defaults item to toggle whether or not to cache fonts at startup
+    Fall back on fc-cache if font_cache.sh is not present.
+
+commit 19fa8408a2c707081ba984537a3dcab744b0a565
+Author: Jeremy Huddleston <jeremy@tifa-2.local>
+Date:   Sat Feb 16 02:50:47 2008 -0800
+
+    Added org.x.X11.plist.cpp to EXTRA_DIST
+
+commit 9259740a2d69c6c2fc1786508dbd08ae2cfef101
+Author: Jeremy Huddleston <jeremy@tifa.local>
+Date:   Sun Feb 10 18:49:06 2008 -0800
+
+    Apple: Support spaces in $HOME for font path, and remove duplicate entry
+
+commit 4e899293d7f7bb0a67b094402fad7db55169acec
+Author: Jeremy Huddleston <jeremy@tifa.local>
+Date:   Sun Feb 10 02:04:16 2008 -0800
+
+    Apple: Cleaned up font path setting and added font caching to xinitrc
+
+commit 238b74a47eb66bfa24627b099bf9c6a06e91d35a
+Author: Jeremy Huddleston <jeremy@tifa.local>
+Date:   Sat Feb 9 22:17:02 2008 -0800
+
+    Apple: use -nocpp arg to xrdb if cpp is not installed
+
+commit b9a2f211eff9f7fdc1399146d175923ca589cf2a
+Author: David Nusinow <dnusinow@debian.org>
+Date:   Tue Feb 5 11:58:40 2008 -0500
+
+    Unbreak installs on non-launchd systems
+    
+    Thanks to cjb for running the tinderbox that spotted this
+    breakage.
+
+commit 6403e53a1fef9fd7dd8c77640d01bb8aaee09f91
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Fri Feb 1 00:35:27 2008 -0800
+
+    OS-X: Set fontpath in xinitrc to include system / user fonts.  Additionally fixed font scaling issues (trac #52)
+
+commit d9d43955a03fb3d5b2d87d9c1a7de463f1a027b6
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Fri Feb 1 00:23:54 2008 -0800
+
+    OS-X: Fixed typo
+
+commit 7400760ae1b88d0c514aa119643cd412a4a68b06
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Wed Jan 9 21:03:41 2008 -0800
+
+    OS-X: Add bindir to $PATH in startx if it's not there
+    This should also fix this on SCO since it was using the incorrect BINDIR
+    instead of __bindir__ in that code block...
+
+commit 0f740f75ececc9742c6f407d53b482897ef5f698
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Fri Jan 4 11:36:26 2008 -0800
+
+    OS-X: Properly set enable_xauth if the user has no defaults set and choose a valid $display for fast-user-switching.
+
+commit 9c57524fde57284daae2309dce17dbf56a8643de
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Thu Dec 20 18:26:38 2007 -0800
+
+    XQuartz doesn't need the -launchd command line argument anymore.
+
+commit f31042ae688d75c2043e9df56f66cabdd56fdf75
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Thu Dec 20 17:22:16 2007 -0800
+
+    OS-X: Need to use bash --login to setup the environment from launchd.
+
+commit d1c968926fa2fe36b612d4ebc948d73e6e0f6c01
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Thu Dec 20 16:50:39 2007 -0800
+
+    OS-X: Made defaults test more robust
+
+commit 73a2dd64576328de712ee792d569a88550e4ddb4
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Thu Dec 20 16:13:27 2007 -0800
+
+    Added support for OS-X preferences to disable tcp/ip connections and xauth
+
+commit 4afcc5afa0dc7a1d14e93f18289c4490c9f2decd
+Author: root <root@tinderbox.wearablelab.ml.unisa.edu.au>
+Date:   Fri Dec 21 00:53:45 2007 +1030
+
+    Define APPLE for the rest of us
+    
+    APPLE was only defined when, well on an APPLE. However Makefile.am
+    unconditionally required it. Hence define APPLE to false when
+    we're not on an APPLE.
+    
+    Found by: Tinderbox
+
+commit cced740b1e1c8220701e59cec1be04498f851296
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Sun Dec 16 01:12:20 2007 -0800
+
+    OS-X: Added argv[0] hack for finding Xquartz UI and icon as well as claiming its dock icon
+    Partially removes need for x11-exec on OS-X.  We still need to handle options set in defaults.
+
+commit 3c5ae3a242895f53d4f27fefb785f2725077a55d
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Sat Dec 15 15:52:22 2007 -0800
+
+    Changed x11-exec to actually start X11.app.  X11.app will be responsible for calling xinit.
+
+commit f5db2f6bc21b8d589b92c0f1d60bd6ec8da21ae0
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Sat Dec 15 15:01:02 2007 -0800
+
+    Added Apple launchd support
+
+commit c0246278393f9440717eea292a3d31440f7972dd
+Author: James Cloos <cloos@jhcloos.com>
+Date:   Thu Dec 6 15:51:07 2007 -0500
+
+    Add missing PHONY line for automatic ChangeLog generation
+
+commit 3b064b7206a84aae873743b706c41324a67c1f2c
+Author: Jeremy Huddleston <jeremy@yuffie.local>
+Date:   Mon Dec 3 19:57:26 2007 -0800
+
+    Added some support for Xquartz on OS-X.
+
+commit e2963ff8acb7e20aab1f8e31a656f4553dda208a
+Merge: a7fda62... 0516336...
+Author: Matthieu Herrb <matthieu@bluenote.herrb.com>
+Date:   Fri Sep 28 22:26:26 2007 +0200
+
+    Merge branch 'master' of ssh://herrb@git.freedesktop.org/git/xorg/app/xinit
+
+commit a7fda62fcb5600dc65f84148923f5a0a70181e7e
+Author: Matthieu Herrb <matthieu@bluenote.herrb.com>
+Date:   Fri Sep 28 22:25:17 2007 +0200
+
+    Use /dev/arandom instead of /dev/urandom to generate the cookie
+    on OpenBSD. Problem noticed by Joerg Sonnenberger. Thanks.
+
+commit 051633650c7b7a7eb9ef494a48a6a79fa2e06080
+Author: Tilman Sauerbeck <tilman@code-monkey.de>
+Date:   Mon Sep 17 12:46:59 2007 +0200
+
+    Bumped version to 1.0.7.
+
+commit 52121e9de907c61a16e41f0f08acecc1dc1546e5
+Author: Tilman Sauerbeck <tilman@code-monkey.de>
+Date:   Mon Sep 17 08:27:23 2007 +0200
+
+    Bug #12448: Don't try to trap 'ERR'.
+    
+    startx is advertised as a POSIX sh script. These shells don't
+    necessarily support trapping 'ERR'. This makes startx work again with
+    dash (and probably others).
+
+commit ff9752bc4304e5a29ef7e06b56bd4e0e5ca32926
+Author: Matthieu Herrb <matthieu@bluenote.herrb.com>
+Date:   Sat Sep 15 18:51:19 2007 +0200
+
+    Bump to 1.0.6
+
+commit af5e859a8da23f063fd3371a9e7266054532d769
+Author: Matthieu Herrb <matthieu@bluenote.herrb.com>
+Date:   Sat Sep 15 18:50:57 2007 +0200
+
+    generate
+
+commit 6c1bef8580a1dcd945c3a89522daa90fe8f4c272
+Author: Matthieu Herrb <matthieu@bluenote.herrb.com>
+Date:   Sat Sep 15 18:43:52 2007 +0200
+
+    MKCOOKIE program for OpenBSD.
+
+commit b9d07ef3e07ef6f00a2f1cc730a481e5e1291f5b
+Author: Matthieu Herrb <matthieu@bluenote.herrb.com>
+Date:   Sat Sep 15 18:12:52 2007 +0200
+
+    remove .serverauth.$$ file on signals or errors
+
+commit e91874313c99dfb6be042cd1739e463e080b71fc
+Author: Eric Anholt <eric@anholt.net>
+Date:   Wed Sep 5 10:14:52 2007 -0700
+
+    Bump version to 1.0.5.
+
+commit 2640fb97a42e0d91603defc0f37388735c56a54d
+Author: Eric Anholt <eric@anholt.net>
+Date:   Tue Sep 4 13:05:47 2007 -0700
+
+    Fix broken test for /dev/random cookie generation failure.
+
+commit fc6cc81be41af58ffd996994e1325dd072a9ab34
+Author: Eric Anholt <eric@anholt.net>
+Date:   Fri Jul 13 15:34:43 2007 -0700
+
+    Use /dev/random to generate the cookie if mcookie is unavailable.
+    
+    Setting XAUTHORITY without having actually generated a cookie and created
+    .Xauthority led to issues if somebody like ssh later came around and made the
+    .Xauthority file for their own setup.  So, simply make it so that we never
+    fail to create one.
+
+commit e9c1d1667b58c738cb1317219cc0ac84bef2a5d6
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon May 21 20:00:38 2007 -0700
+
+    Version bump: 1.0.4
+
+commit 3686497f31ac9f548f6f3aa5d4418a96fe564497
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon May 21 18:42:56 2007 -0700
+
+    Remove old Imake checks now that we always build with autoconf
+
+commit d5b726c2dbc22b6fd9623604e9252aaef30c387c
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon May 21 18:18:56 2007 -0700
+
+    Remove support for pre-POSIX-1990 platforms
+
+commit dfba9a82068b44429a08b307d26b91495c10c7c1
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon May 21 17:52:38 2007 -0700
+
+    Modernize list of Xservers printed when "X" is not found in $PATH
+
+commit a73284c7aeeab7ee0c1b6027819955ef7b08f23d
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon May 21 17:09:40 2007 -0700
+
+    Replace static ChangeLog with dist hook to generate from git log
+
+commit 8942f1fd8377c0e67e5ad493af55b7d7b3f996c7
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon May 21 16:49:18 2007 -0700
+
+    Don't print windowpath debug messages unless built -DDEBUG
+    
+    No need to print warnings on systems without vt support
+
+commit fa78528b44d4c1c50594359e17114208834a84fd
+Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date:   Fri Aug 25 16:48:00 2006 -0800
+
+    X.Org Bugzilla #8013: xinit should set WINDOWPATH
+    
+    X.Org Bugzilla #8013: <https://bugs.freedesktop.org/show_bug.cgi?id=8013>
+    Patch #6701: <https://bugs.freedesktop.org/attachment.cgi?id=6701>
+
+commit 64f1a94404924b1ada6b43ed33c80a560712ec36
+Author: Daniel Drake <ddrake@brontes3d.com>
+Date:   Mon May 21 16:33:23 2007 -0700
+
+    Fill in COPYING File (X.Org Bugzilla #11024)
+
+commit 3b6dad2ba4d4507cd742d8e7ff760fe006c0aa23
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Fri May 18 23:44:06 2007 -0700
+
+    Bug #10616: Clarify syntax on xinit & startx man pages
+    
+    X.Org Bugzilla #10616: <https://bugs.freedesktop.org/show_bug.cgi?id=10616>
+    Reported upstream from
+    Debian bug #267744 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=267744>
+
+commit ad23a55a581ab18c4614e2cb5d82c4376ee88722
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon Nov 6 14:56:07 2006 -0800
+
+    Stop hardcoding /usr/X11R6/bin in manpage examples
+
+commit c50afd78af7496938a10b317c5e41b4d99d1fc60
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon Nov 6 14:47:34 2006 -0800
+
+    Change example X server argument from bc to -br now that bc is gone
+
+commit 7b3e51364355716731670522b578b23d40fb356b
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon Nov 6 14:46:42 2006 -0800
+
+    Add *~ to .gitignore to skip over emacs/patch droppings
+
+commit c9da362e9f3f80a91b91011c21ef85e1cd3ef48b
+Author: Alan Coopersmith <alan.coopersmith@sun.com>
+Date:   Mon Nov 6 14:46:15 2006 -0800
+
+    renamed: .cvsignore -> .gitignore
+
+commit de19be83afe7d0dc9a71fa529e80d91b4e26bdda
+Author: Adam Jackson <ajax@benzedrine.nwnk.net>
+Date:   Fri Oct 13 17:53:12 2006 -0400
+
+    Bump to 1.0.3
+
+commit 4fc9d215202b494a9182913f84eb41ba2bd1e39b
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Tue Jun 20 19:25:51 2006 +0000
+
+    Check setuid() return value. Bugzilla #7116.
+
+commit 732e5f17cf5189854654360e978a62d6d6b82d4b
+Author: Jeremy C. Reed <reed@reedmedia.net>
+Date:   Sat May 27 15:28:04 2006 +0000
+
+    In comments, change contractions to be spelled out to fix cpp "missing
+        terminating" errors with single quotes.
+
+commit db74ad799da27eec04b5aed64e3564aef9156a04
+Author: Matthieu Herrb <matthieu.herrb@laas.fr>
+Date:   Sun Apr 30 14:19:19 2006 +0000
+
+    Quote MCOOKIE to allow to specify a command with args (ie
+        MCOOKIE="/usr/sbin/openssl rand -hex 16" ./configure ...)
+
+commit 797f51d176ab9a29497a9141a57a968c5a7d3792
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Sun Apr 2 01:06:41 2006 +0000
+
+    Bump to 1.0.2.
+
+commit bbf54921031f679c0d266a6b2ef4926f872d18f1
+Author: Jeremy C. Reed <reed@reedmedia.net>
+Date:   Sat Feb 25 15:20:06 2006 +0000
+
+    Bug #4449 <https://bugs.freedesktop.org/show_bug.cgi?id=4449> Be more
+        portable (for different /bin/sh shells) for the arithmetic.
+    NetBSD's /bin/sh didn't like: dummy=$((dummy+1)) and complained: startx:
+        arith: syntax error: "dummy+1"
+    This was fixed by NetBSD and also by Gentoo, see:
+        https://launchpad.net/distros/ubuntu/+source/xinit/+bug/31241
+
+commit 6690352bdd01603a5e82e177aab4804d5424b8b1
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Dec 21 02:29:51 2005 +0000
+
+    Update package version for X11R7 release.
+
+commit 9ea919f305201ad9c3695a4534f08d5d373d3eb5
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Mon Dec 19 16:22:44 2005 +0000
+
+    Stub COPYING files
+
+commit 0a95c12d2dd1da5a2c2f7ef3a731ef40074fba23
+Author: Kevin E Martin <kem@kem.org>
+Date:   Thu Dec 15 00:24:07 2005 +0000
+
+    Update package version number for final X11R7 release candidate.
+
+commit 18056e663f89b0b5019f549365afbdf975a59d61
+Author: Kevin E Martin <kem@kem.org>
+Date:   Tue Dec 6 22:48:22 2005 +0000
+
+    Change *man_SOURCES ==> *man_PRE to fix autotools warnings.
+
+commit cc7dfc25d5854ac08dfa7dc52c96702e60777e5c
+Author: Kevin E Martin <kem@kem.org>
+Date:   Sat Dec 3 17:08:50 2005 +0000
+
+    Add m4 magic to allow AS_HELP_STRING to work with older versions of
+        autoconf 2.57.
+
+commit b0081f30f7d2bdc59509e09b7d147700456d562e
+Author: Kevin E Martin <kem@kem.org>
+Date:   Sat Dec 3 05:49:24 2005 +0000
+
+    Update package version number for X11R7 RC3 release.
+
+commit 15470956794d19c3b1ee0d17e727e0a77436518f
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Mon Nov 28 22:01:43 2005 +0000
+
+    Change *mandir targets to use new *_MAN_DIR variables set by xorg-macros.m4
+        update to fix bug #5167 (Linux prefers *.1x man pages in man1 subdir)
+
+commit 66b04609fdf1910588e05f74f772441c712ed0cc
+Author: Eric Anholt <anholt@freebsd.org>
+Date:   Mon Nov 21 10:35:01 2005 +0000
+
+    Another pass at .cvsignores for apps.
+
+commit d286ee2400f8f9c4110971545ef50a556e5c08f9
+Author: Eric Anholt <anholt@freebsd.org>
+Date:   Sun Nov 20 22:08:53 2005 +0000
+
+    Add/improve .cvsignore files for apps.
+
+commit 0a06386696875638e9e9b6e47e95affbf542e25d
+Author: Kevin E Martin <kem@kem.org>
+Date:   Tue Nov 15 04:05:59 2005 +0000
+
+    Make the programs used in the xinit scripts configurable.
+
+commit 549c55ea15e60b9aca5da1ed6f18564f1e69cd26
+Author: Kevin E Martin <kem@kem.org>
+Date:   Tue Nov 15 04:03:10 2005 +0000
+
+    Make using full paths in the xinit scripts optional.
+
+commit 277975ec73744657e556a0c6380614d8684db7df
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Thu Nov 10 04:25:39 2005 +0000
+
+    Add settings for SHELL_CMD & ARCHMANDEFS to match monolith changes for bug
+        #3180.
+    AC_DEFINE(XORG,...) so it is listed as available server in xinit help
+        output.
+    Update cpp -D flags to match monolith changes for bug #3180.
+
+commit 6e7bcf4f2ea8bb868ed8b0459f1c0d6cc172f4ae
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Nov 9 21:09:21 2005 +0000
+
+    Update package version number for X11R7 RC2 release.
+
+commit af47a9e0dd891dcaa52b12f4eda85381e0467916
+Author: Kean Johnson <kean@armory.com>
+Date:   Tue Nov 8 06:33:33 2005 +0000
+
+    See ChangeLog entry 2005-11-07 for details.
+
+commit 6beb2e4769b8b3708f30ee7adf8037a4e1f39f3d
+Author: Kevin E Martin <kem@kem.org>
+Date:   Wed Oct 19 02:47:54 2005 +0000
+
+    Update package version number for RC1 release.
+
+commit dc0b907e02d6c1ab917e30c4b262b5c9f780ef12
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Mon Oct 17 23:56:23 2005 +0000
+
+    Use @APP_MAN_SUFFIX@ instead of $(APP_MAN_SUFFIX) in macro substitutions to
+        work better with BSD make
+
+commit 0c48fdb05b2538c94c809e25c8690a7094900e07
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sun Oct 16 22:18:22 2005 +0000
+
+    Use cpp to substitute variables in man pages
+
+commit 9c8787d2ce69e55b9ba362a92f01592d8ee0a3a3
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Tue Oct 11 01:09:43 2005 +0000
+
+    Don't define HAS_COOKIE_MAKER if mcookie wasn't found.
+
+commit e2dd25d3cf2f10c0cff0d37d05f58b81344db68b
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Tue Oct 4 01:27:34 2005 +0000
+
+    Bug #2027: Treat SIGTERM like SIGINT in xinit. (Andreas Luik)
+
+commit 48ea043e65943fd66e03788be9867c69b96c738c
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Mon Aug 29 01:56:12 2005 +0000
+
+    Bump to 0.99.1.
+
+commit 9f74cfed8f808009b3acfa0af383218f3bf0fc00
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Mon Aug 29 01:54:30 2005 +0000
+
+    Define HAS_COOKIE_MAKER and search for mcookie so startx will generate
+        xauth tokens for the servers it starts.
+
+commit 52fb36b1ec52e78916bf9cf1a5e7bdce05482b0c
+Author: Eric Anholt <anholt@freebsd.org>
+Date:   Thu Aug 11 18:11:32 2005 +0000
+
+    Bugzilla #4045: Do a missed replacement of @@ with \ in startx.
+    Submitted by: David Schleef <ds@schleef.org>
+
+commit ef53714d87aa71309fe2f22862f1892a8e620336
+Author: Eric Anholt <anholt@freebsd.org>
+Date:   Thu Aug 11 18:09:45 2005 +0000
+
+    Set CSRG_BASED for BSD systems so the build succeeds.
+
+commit 2b515c0e9940d3fc5b4151d10678f3c0b09668fc
+Author: Kevin E Martin <kem@kem.org>
+Date:   Fri Jul 29 21:22:34 2005 +0000
+
+    Various changes preparing packages for RC0:
+    - Verify and update package version numbers as needed
+    - Implement versioning scheme
+    - Change bug address to point to bugzilla bug entry form
+    - Disable loadable i18n in libX11 by default (use --enable-loadable-i18n to
+        reenable it)
+    - Fix makedepend to use pkgconfig and pass distcheck
+    - Update build script to build macros first
+    - Update modular Xorg version
+
+commit 22c07dc931424a64046c489ff95b9ca14d7a5552
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Tue Jul 26 18:58:15 2005 +0000
+
+    Use AC_TYPE_SIGNAL and AC_FUNC_VFORK to replace Imake's SIGNAL_DEFINES and
+    -DHAS_VFORK
+
+commit db7faf36b93971eef4857d24efe0de155b7cdb19
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Tue Jul 26 18:55:42 2005 +0000
+
+    Add config.h includes for modularization Use RETSIGTYPE if defined by
+        autoconf in addition to Imake's SIGNALRETURNSINT. Use
+        HAVE_WORKING_VFORK if defined by autoconf in addition to Imake's
+        HAS_VFORK
+
+commit e5280bb6562129bf7617a24784b19da4cbd7abc8
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Mon Jul 25 23:19:06 2005 +0000
+
+    Bug #3860: Avoid a bashism. (Diego Pettenò)
+
+commit 4c76716e9eef58c7de7dab27bdeca33a2980b726
+Author: Daniel Stone <daniel@fooishbar.org>
+Date:   Sat Jul 23 03:02:58 2005 +0000
+
+    Move manpages to section 1.
+
+commit b5a90f98073bfa5d5615f5aa0ae73af07f625bbb
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Wed Jul 20 22:49:25 2005 +0000
+
+    Use kbd_mode -a to restore console keyboard on Solaris x86 too.
+
+commit e83a8d3f9816605106a496c89f9e9ccfae3e4f4c
+Author: Adam Jackson <ajax@nwnk.net>
+Date:   Wed Jul 20 19:31:57 2005 +0000
+
+    Use a unique token for PKG_CHECK_MODULES. Otherwise, if you use a global
+        configure cache, you cache it, and the cached value is probably wrong.
+
+commit d8980cb7b6df64cf92c5b660f838497296dbb0bb
+Author: Alan Coopersmith <Alan.Coopersmith@sun.com>
+Date:   Sat Jul 16 23:29:38 2005 +0000
+
+    x11perf/Makefile.am: xinit/Makefile.am: xvidtune/Makefile.am:
+    - Replace $< with portable macro xinit/Makefile.am: xinit/configure.ac:
+        xvidtune/Makefile.am: xvidtune/configure.ac:
+    - Use more portable cpp invocations for pre-processing files
+        xfs/configure.ac:
+    - Add XTRANS_CONNECTION_FLAGS so xtrans transport type defines are set
+        correctly
+
+commit d731a249d0c1c7f9eb77828c0d6e79cfdaf75589
+Author: Søren Sandmann Pedersen <sandmann@daimi.au.dk>
+Date:   Tue Jul 5 21:12:01 2005 +0000
+
+    Build system for xinit
+
+commit dd7fee44b126636d6c3edd9e325ce411e3ae5d78
+Author: Egbert Eich <eich@suse.de>
+Date:   Wed Apr 20 17:54:12 2005 +0000
+
+    Separate server auth and client .Xautority file in startx. .Xautority might
+        have credentials from other Xservers which we might not want to enable
+        on ours Bugzilla #3078).
+
+commit 4118bc8579ac75620ea6cda2b16d3ebbe4f5b6af
+Author: Egbert Eich <eich@suse.de>
+Date:   Fri Apr 23 19:54:49 2004 +0000
+
+    Merging XORG-CURRENT into trunk
+
+commit 52279458e75907cb4d004e8be0c87f1c7b714159
+Author: Egbert Eich <eich@suse.de>
+Date:   Sun Mar 14 08:35:24 2004 +0000
+
+    Importing vendor version xf86-4_4_99_1 on Sun Mar 14 00:26:39 PST 2004
+
+commit 59c01948e5bda5b2584e1a19f735737896a87c69
+Author: Egbert Eich <eich@suse.de>
+Date:   Wed Mar 3 12:13:08 2004 +0000
+
+    Importing vendor version xf86-4_4_0 on Wed Mar 3 04:09:24 PST 2004
+
+commit 6427c13f6e132a3d19bbb7c3a2dc0c5b8215b3d8
+Author: Egbert Eich <eich@suse.de>
+Date:   Thu Feb 26 13:36:25 2004 +0000
+
+    readding XFree86's cvs IDs
+
+commit 40ac2d222287210c7724e3ac5a15af490aed50b9
+Author: Egbert Eich <eich@suse.de>
+Date:   Thu Feb 26 09:24:08 2004 +0000
+
+    Importing vendor version xf86-4_3_99_903 on Wed Feb 26 01:21:00 PST 2004
+
+commit fae621e34ee1eff0bc70e60c7843c0fce9f9ec1a
+Author: Egbert Eich <eich@suse.de>
+Date:   Thu Jan 29 08:09:12 2004 +0000
+
+    Importing vendor version xf86-012804-2330 on Thu Jan 29 00:06:33 PST 2004
+
+commit b1dacbed577312f5fa86d9d81aa946276c646167
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Tue Nov 25 19:29:13 2003 +0000
+
+    XFree86 4.3.99.16 Bring the tree up to date for the Cygwin folks
+
+commit c301daadb9de3348d7dd1b511cadf7d55a59bc1c
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Fri Nov 14 16:49:22 2003 +0000
+
+    XFree86 4.3.0.1
+
+commit b7d9a0b434bb0d32857fc47611926cb59ac7f3c5
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Fri Nov 14 16:49:22 2003 +0000
+
+    Initial revision
+
+commit f18e25ab379836d0885660ad9c42ed588b1152b8
+Author: Kaleb Keithley <kaleb@freedesktop.org>
+Date:   Fri Nov 14 15:54:54 2003 +0000
+
+    R6.6 is the Xorg base-line
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..23e5f25
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,236 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
+Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+Basic Installation
+==================
+
+These are generic installation instructions.
+
+   The `configure' shell script attempts to guess correct values for
+various system-dependent variables used during compilation.  It uses
+those values to create a `Makefile' in each directory of the package.
+It may also create one or more `.h' files containing system-dependent
+definitions.  Finally, it creates a shell script `config.status' that
+you can run in the future to recreate the current configuration, and a
+file `config.log' containing compiler output (useful mainly for
+debugging `configure').
+
+   It can also use an optional file (typically called `config.cache'
+and enabled with `--cache-file=config.cache' or simply `-C') that saves
+the results of its tests to speed up reconfiguring.  (Caching is
+disabled by default to prevent problems with accidental use of stale
+cache files.)
+
+   If you need to do unusual things to compile the package, please try
+to figure out how `configure' could check whether to do them, and mail
+diffs or instructions to the address given in the `README' so they can
+be considered for the next release.  If you are using the cache, and at
+some point `config.cache' contains results you don't want to keep, you
+may remove or edit it.
+
+   The file `configure.ac' (or `configure.in') is used to create
+`configure' by a program called `autoconf'.  You only need
+`configure.ac' if you want to change it or regenerate `configure' using
+a newer version of `autoconf'.
+
+The simplest way to compile this package is:
+
+  1. `cd' to the directory containing the package's source code and type
+     `./configure' to configure the package for your system.  If you're
+     using `csh' on an old version of System V, you might need to type
+     `sh ./configure' instead to prevent `csh' from trying to execute
+     `configure' itself.
+
+     Running `configure' takes awhile.  While running, it prints some
+     messages telling which features it is checking for.
+
+  2. Type `make' to compile the package.
+
+  3. Optionally, type `make check' to run any self-tests that come with
+     the package.
+
+  4. Type `make install' to install the programs and any data files and
+     documentation.
+
+  5. You can remove the program binaries and object files from the
+     source code directory by typing `make clean'.  To also remove the
+     files that `configure' created (so you can compile the package for
+     a different kind of computer), type `make distclean'.  There is
+     also a `make maintainer-clean' target, but that is intended mainly
+     for the package's developers.  If you use it, you may have to get
+     all sorts of other programs in order to regenerate files that came
+     with the distribution.
+
+Compilers and Options
+=====================
+
+Some systems require unusual options for compilation or linking that the
+`configure' script does not know about.  Run `./configure --help' for
+details on some of the pertinent environment variables.
+
+   You can give `configure' initial values for configuration parameters
+by setting variables in the command line or in the environment.  Here
+is an example:
+
+     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+
+   *Note Defining Variables::, for more details.
+
+Compiling For Multiple Architectures
+====================================
+
+You can compile the package for more than one kind of computer at the
+same time, by placing the object files for each architecture in their
+own directory.  To do this, you must use a version of `make' that
+supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+directory where you want the object files and executables to go and run
+the `configure' script.  `configure' automatically checks for the
+source code in the directory that `configure' is in and in `..'.
+
+   If you have to use a `make' that does not support the `VPATH'
+variable, you have to compile the package for one architecture at a
+time in the source code directory.  After you have installed the
+package for one architecture, use `make distclean' before reconfiguring
+for another architecture.
+
+Installation Names
+==================
+
+By default, `make install' installs the package's commands under
+`/usr/local/bin', include files under `/usr/local/include', etc.  You
+can specify an installation prefix other than `/usr/local' by giving
+`configure' the option `--prefix=PREFIX'.
+
+   You can specify separate installation prefixes for
+architecture-specific files and architecture-independent files.  If you
+pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+PREFIX as the prefix for installing programs and libraries.
+Documentation and other data files still use the regular prefix.
+
+   In addition, if you use an unusual directory layout you can give
+options like `--bindir=DIR' to specify different values for particular
+kinds of files.  Run `configure --help' for a list of the directories
+you can set and what kinds of files go in them.
+
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving `configure' the
+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+
+Optional Features
+=================
+
+Some packages pay attention to `--enable-FEATURE' options to
+`configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to `--with-PACKAGE' options, where PACKAGE
+is something like `gnu-as' or `x' (for the X Window System).  The
+`README' should mention any `--enable-' and `--with-' options that the
+package recognizes.
+
+   For packages that use the X Window System, `configure' can usually
+find the X include and library files automatically, but if it doesn't,
+you can use the `configure' options `--x-includes=DIR' and
+`--x-libraries=DIR' to specify their locations.
+
+Specifying the System Type
+==========================
+
+There may be some features `configure' cannot figure out automatically,
+but needs to determine by the type of machine the package will run on.
+Usually, assuming the package is built to be run on the _same_
+architectures, `configure' can figure that out, but if it prints a
+message saying it cannot guess the machine type, give it the
+`--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as `sun4', or a canonical name which has the form:
+
+     CPU-COMPANY-SYSTEM
+
+where SYSTEM can have one of these forms:
+
+     OS KERNEL-OS
+
+   See the file `config.sub' for the possible values of each field.  If
+`config.sub' isn't included in this package, then this package doesn't
+need to know the machine type.
+
+   If you are _building_ compiler tools for cross-compiling, you should
+use the option `--target=TYPE' to select the type of system they will
+produce code for.
+
+   If you want to _use_ a cross compiler, that generates code for a
+platform different from the build platform, you should specify the
+"host" platform (i.e., that on which the generated programs will
+eventually be run) with `--host=TYPE'.
+
+Sharing Defaults
+================
+
+If you want to set default values for `configure' scripts to share, you
+can create a site shell script called `config.site' that gives default
+values for variables like `CC', `cache_file', and `prefix'.
+`configure' looks for `PREFIX/share/config.site' if it exists, then
+`PREFIX/etc/config.site' if it exists.  Or, you can set the
+`CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all `configure' scripts look for a site script.
+
+Defining Variables
+==================
+
+Variables not defined in a site shell script can be set in the
+environment passed to `configure'.  However, some packages may run
+configure again during the build, and the customized values of these
+variables may be lost.  In order to avoid this problem, you should set
+them in the `configure' command line, using `VAR=value'.  For example:
+
+     ./configure CC=/usr/local2/bin/gcc
+
+causes the specified `gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).  Here is a another example:
+
+     /bin/bash ./configure CONFIG_SHELL=/bin/bash
+
+Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
+configuration-related scripts to be executed by `/bin/bash'.
+
+`configure' Invocation
+======================
+
+`configure' recognizes the following options to control how it operates.
+
+`--help'
+`-h'
+     Print a summary of the options to `configure', and exit.
+
+`--version'
+`-V'
+     Print the version of Autoconf used to generate the `configure'
+     script, and exit.
+
+`--cache-file=FILE'
+     Enable the cache: use and save the results of the tests in FILE,
+     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     disable caching.
+
+`--config-cache'
+`-C'
+     Alias for `--cache-file=config.cache'.
+
+`--quiet'
+`--silent'
+`-q'
+     Do not print messages saying which checks are being made.  To
+     suppress all normal output, redirect it to `/dev/null' (any error
+     messages will still be shown).
+
+`--srcdir=DIR'
+     Look for the package's source code in directory DIR.  Usually
+     `configure' can determine that directory automatically.
+
+`configure' also accepts some other, not widely useful, options.  Run
+`configure --help' for more details.
+
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..83f66f6
--- /dev/null
@@ -0,0 +1,86 @@
+# 
+#  Copyright 2005  Red Hat, Inc.
+# 
+#  Permission to use, copy, modify, distribute, and sell this software and its
+#  documentation for any purpose is hereby granted without fee, provided that
+#  the above copyright notice appear in all copies and that both that
+#  copyright notice and this permission notice appear in supporting
+#  documentation, and that the name of Red Hat not be used in
+#  advertising or publicity pertaining to distribution of the software without
+#  specific, written prior permission.  Red Hat makes no
+#  representations about the suitability of this software for any purpose.  It
+#  is provided "as is" without express or implied warranty.
+# 
+#  RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+#  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+#  EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+#  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+#  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+#  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+#  PERFORMANCE OF THIS SOFTWARE.
+
+XINITDIR = $(libdir)/X11/xinit
+
+bin_PROGRAMS = xinit
+#bin_SCRIPTS = startx
+bin_SCRIPTS = 
+
+xinit_CFLAGS = $(XINIT_CFLAGS) -DXINITDIR=\"$(XINITDIR)\" -DBINDIR=\"$(bindir)\"
+xinit_LDADD = $(XINIT_LIBS)
+
+xinit_SOURCES =        \
+        xinit.c
+
+appmandir = $(APP_MAN_DIR)
+
+appman_PRE = \
+       startx.man \
+        xinit.man
+
+appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
+
+include $(top_srcdir)/cpprules.in
+
+xinitrcdir = $(XINITDIR)
+
+PROGCPPDEFS = \
+       -DXRDB=@XRDB@ \
+       -DXMODMAP=@XMODMAP@ \
+       -DTWM=@TWM@ \
+       -DXCLOCK=@XCLOCK@ \
+       -DXTERM=@XTERM@ \
+       -DXSERVER=@XSERVER@ \
+       -DXAUTH=@XAUTH@ \
+       -DXINIT=@XINIT@
+
+CPP_FILES_FLAGS = \
+       -DXINITDIR=$(XINITDIR) $(PROGCPPDEFS) -DLIBDIR=$(libdir) \
+       -DSHELL_CMD=$(SHELL_CMD) $(STARTX_COOKIE_FLAGS) \
+       -D__libexecdir__="$(libexecdir)" \
+       -D__bindir__="$(bindir)"
+
+if LAUNCHD
+launchagents_PRE = org.x.startx.plist.cpp
+launchagents_DATA = $(launchagents_PRE:plist.cpp=plist)
+
+SUBDIRS = privileged_startx
+endif
+
+DIST_SUBDIRS = privileged_startx
+
+xinitrc: xinitrc.cpp Makefile
+startx: startx.cpp Makefile
+
+xinitrc_DATA = xinitrc
+
+CLEANFILES = xinitrc startx $(appman_DATA) $(launchagents_DATA)
+
+EXTRA_DIST = xinitrc.cpp startx.cpp org.x.startx.plist.cpp $(appman_PRE)       \
+               startx.cmd xinitrc.cmd xinit.def ChangeLog autogen.sh
+
+.PHONY: ChangeLog
+
+ChangeLog:
+       (GIT_DIR=$(top_srcdir)/.git git-log > .changelog.tmp && mv .changelog.tmp ChangeLog; rm -f .changelog.tmp) || (touch ChangeLog; echo 'git directory not found: installing possibly empty changelog.' >&2)
+
+dist-hook: ChangeLog
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..9bbe2c9
--- /dev/null
+++ b/README
@@ -0,0 +1,5 @@
+The xinit is not intended for naive users.  Instead, site administrators should
+design user-friendly scripts that present the desired interface when starting
+up X.  The startx script is one such example.  
+
+Note that the sample xinitrc file is NOT installed by default.
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..9f1a620
--- /dev/null
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+srcdir=`dirname $0`
+test -z "$srcdir" && srcdir=.
+
+ORIGDIR=`pwd`
+cd $srcdir
+
+aclocal &&
+libtoolize &&
+autoconf &&
+autoheader &&
+automake --add-missing --copy --no-force
+
+#autoreconf -v --install || exit 1
+cd $ORIGDIR || exit $?
+
+#$srcdir/configure --enable-maintainer-mode "$@"
diff --git a/build.sh b/build.sh
new file mode 100755 (executable)
index 0000000..7648cff
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+### WARNING: DO NOT CHANGE CODES from HERE !!! ###
+#import setup
+cd `dirname $0`
+_PWD=`pwd`
+pushd ./ > /dev/null
+while [ ! -f "./xo-setup.conf" ]
+do
+    cd ../
+    SRCROOT=`pwd`
+    if [ "$SRCROOT" == "/" ]; then
+        echo "Cannot find xo-setup.conf !!"
+        exit 1
+    fi
+done
+popd > /dev/null
+. ${SRCROOT}/xo-setup.conf
+cd ${_PWD}
+### WARNING: DO NOT CHANGE CODES until HERE!!! ###
+
+export VERSION=1.0
+
+CFLAGS="${CFLAGS}"
+
+if [ $1 ];
+then
+     make $1 || exit 1
+else
+     ./autogen.sh || exit 1
+     ./configure --prefix=$PREFIX || exit 1
+     make || exit 1
+     make install || exit 1
+     make_pkg.sh || exit 1   
+fi
+
diff --git a/config.guess b/config.guess
new file mode 100644 (file)
index 0000000..45bee13
--- /dev/null
@@ -0,0 +1,1465 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-04-22'
+
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Originally written by Per Bothner <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.guess ($timestamp)
+
+Originally written by Per Bothner.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help" >&2
+       exit 1 ;;
+    * )
+       break ;;
+  esac
+done
+
+if test $# != 0; then
+  echo "$me: too many arguments$help" >&2
+  exit 1
+fi
+
+trap 'exit 1' 1 2 15
+
+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a
+# compiler to aid in system detection is discouraged as it requires
+# temporary files to be created and, as you can see below, it is a
+# headache to deal with in a portable fashion.
+
+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
+# use `HOST_CC' if defined, but it is deprecated.
+
+# Portable tmp directory creation inspired by the Autoconf team.
+
+set_cc_for_build='
+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
+: ${TMPDIR=/tmp} ;
+ { tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
+dummy=$tmp/dummy ;
+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
+case $CC_FOR_BUILD,$HOST_CC,$CC in
+ ,,)    echo "int x;" > $dummy.c ;
+       for c in cc gcc c89 c99 ; do
+         if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
+            CC_FOR_BUILD="$c"; break ;
+         fi ;
+       done ;
+       if test x"$CC_FOR_BUILD" = x ; then
+         CC_FOR_BUILD=no_compiler_found ;
+       fi
+       ;;
+ ,,*)   CC_FOR_BUILD=$CC ;;
+ ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
+esac ;'
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 1994-08-24)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    *:NetBSD:*:*)
+       # NetBSD (nbsd) targets should (where applicable) match one or
+       # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+       # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
+       # switched to ELF, *-*-netbsd* would select the old
+       # object file format.  This provides both forward
+       # compatibility and a consistent mechanism for selecting the
+       # object file format.
+       #
+       # Note: NetBSD doesn't particularly care about the vendor
+       # portion of the name.  We always set it to "unknown".
+       sysctl="sysctl -n hw.machine_arch"
+       UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \
+           /usr/sbin/$sysctl 2>/dev/null || echo unknown)`
+       case "${UNAME_MACHINE_ARCH}" in
+           armeb) machine=armeb-unknown ;;
+           arm*) machine=arm-unknown ;;
+           sh3el) machine=shl-unknown ;;
+           sh3eb) machine=sh-unknown ;;
+           *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
+       esac
+       # The Operating System including object format, if it has switched
+       # to ELF recently, or will in the future.
+       case "${UNAME_MACHINE_ARCH}" in
+           arm*|i386|m68k|ns32k|sh3*|sparc|vax)
+               eval $set_cc_for_build
+               if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+                       | grep __ELF__ >/dev/null
+               then
+                   # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+                   # Return netbsd for either.  FIX?
+                   os=netbsd
+               else
+                   os=netbsdelf
+               fi
+               ;;
+           *)
+               os=netbsd
+               ;;
+       esac
+       # The OS release
+       # Debian GNU/NetBSD machines have a different userland, and
+       # thus, need a distinct triplet. However, they do not need
+       # kernel version information, so it can be replaced with a
+       # suitable tag, in the style of linux-gnu.
+       case "${UNAME_VERSION}" in
+           Debian*)
+               release='-gnu'
+               ;;
+           *)
+               release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+               ;;
+       esac
+       # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+       # contains redundant information, the shorter form:
+       # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+       echo "${machine}-${os}${release}"
+       exit 0 ;;
+    amd64:OpenBSD:*:*)
+       echo x86_64-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    amiga:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    cats:OpenBSD:*:*)
+       echo arm-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    hp300:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    luna88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mac68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    macppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme68k:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvme88k:OpenBSD:*:*)
+       echo m88k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mvmeppc:OpenBSD:*:*)
+       echo powerpc-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sgi:OpenBSD:*:*)
+       echo mips64-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sun3:OpenBSD:*:*)
+       echo m68k-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:OpenBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:ekkoBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+       exit 0 ;;
+    macppc:MirBSD:*:*)
+       echo powerppc-unknown-mirbsd${UNAME_RELEASE}
+       exit 0 ;;
+    *:MirBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
+       exit 0 ;;
+    alpha:OSF1:*:*)
+       case $UNAME_RELEASE in
+       *4.0)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+               ;;
+       *5.*)
+               UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+               ;;
+       esac
+       # According to Compaq, /usr/sbin/psrinfo has been available on
+       # OSF/1 and Tru64 systems produced since 1995.  I hope that
+       # covers most systems running today.  This code pipes the CPU
+       # types through head -n 1, so we only detect the type of CPU 0.
+       ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+       case "$ALPHA_CPU_TYPE" in
+           "EV4 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "EV4.5 (21064)")
+               UNAME_MACHINE="alpha" ;;
+           "LCA4 (21066/21068)")
+               UNAME_MACHINE="alpha" ;;
+           "EV5 (21164)")
+               UNAME_MACHINE="alphaev5" ;;
+           "EV5.6 (21164A)")
+               UNAME_MACHINE="alphaev56" ;;
+           "EV5.6 (21164PC)")
+               UNAME_MACHINE="alphapca56" ;;
+           "EV5.7 (21164PC)")
+               UNAME_MACHINE="alphapca57" ;;
+           "EV6 (21264)")
+               UNAME_MACHINE="alphaev6" ;;
+           "EV6.7 (21264A)")
+               UNAME_MACHINE="alphaev67" ;;
+           "EV6.8CB (21264C)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8AL (21264B)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.8CX (21264D)")
+               UNAME_MACHINE="alphaev68" ;;
+           "EV6.9A (21264/EV69A)")
+               UNAME_MACHINE="alphaev69" ;;
+           "EV7 (21364)")
+               UNAME_MACHINE="alphaev7" ;;
+           "EV7.9 (21364A)")
+               UNAME_MACHINE="alphaev79" ;;
+       esac
+       # A Pn.n version is a patched version.
+       # A Vn.n version is a released version.
+       # A Tn.n version is a released field test version.
+       # A Xn.n version is an unreleased experimental baselevel.
+       # 1.2 uses "1.2" for uname -r.
+       echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+       exit 0 ;;
+    Alpha\ *:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # Should we change UNAME_MACHINE based on the output of uname instead
+       # of the specific Alpha model?
+       echo alpha-pc-interix
+       exit 0 ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit 0 ;;
+    Amiga*:UNIX_System_V:4.0:*)
+       echo m68k-unknown-sysv4
+       exit 0;;
+    *:[Aa]miga[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-amigaos
+       exit 0 ;;
+    *:[Mm]orph[Oo][Ss]:*:*)
+       echo ${UNAME_MACHINE}-unknown-morphos
+       exit 0 ;;
+    *:OS/390:*:*)
+       echo i370-ibm-openedition
+       exit 0 ;;
+    *:z/VM:*:*)
+       echo s390-ibm-zvmoe
+       exit 0 ;;
+    *:OS400:*:*)
+        echo powerpc-ibm-os400
+       exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit 0;;
+    SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+       echo hppa1.1-hitachi-hiuxmpp
+       exit 0;;
+    Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+       # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit 0 ;;
+    NILE*:*:*:dcosx)
+       echo pyramid-pyramid-svr4
+       exit 0 ;;
+    DRS?6000:unix:4.0:6*)
+       echo sparc-icl-nx6
+       exit 0 ;;
+    DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+       case `/usr/bin/uname -p` in
+           sparc) echo sparc-icl-nx7 && exit 0 ;;
+       esac ;;
+    sun4H:SunOS:5.*:*)
+       echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    i86pc:SunOS:5.*:*)
+       echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit 0 ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    sun*:*:4.2BSD:*)
+       UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+       test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+       case "`/bin/arch`" in
+           sun3)
+               echo m68k-sun-sunos${UNAME_RELEASE}
+               ;;
+           sun4)
+               echo sparc-sun-sunos${UNAME_RELEASE}
+               ;;
+       esac
+       exit 0 ;;
+    aushp:SunOS:*:*)
+       echo sparc-auspex-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    # The situation for MiNT is a little confusing.  The machine name
+    # can be virtually everything (everything which is not
+    # "atarist" or "atariste" at least should have a processor
+    # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
+    # to the lowercase version "mint" (or "freemint").  Finally
+    # the system name "TOS" denotes a system which is actually not
+    # MiNT.  But MiNT is downward compatible to TOS, so this should
+    # be no problem.
+    atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+       echo m68k-atari-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+        echo m68k-atari-mint${UNAME_RELEASE}
+       exit 0 ;;
+    milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+        echo m68k-milan-mint${UNAME_RELEASE}
+        exit 0 ;;
+    hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+        echo m68k-hades-mint${UNAME_RELEASE}
+        exit 0 ;;
+    *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+        echo m68k-unknown-mint${UNAME_RELEASE}
+        exit 0 ;;
+    m68k:machten:*:*)
+       echo m68k-apple-machten${UNAME_RELEASE}
+       exit 0 ;;
+    powerpc:machten:*:*)
+       echo powerpc-apple-machten${UNAME_RELEASE}
+       exit 0 ;;
+    RISC*:Mach:*:*)
+       echo mips-dec-mach_bsd4.3
+       exit 0 ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    2020:CLIX:*:* | 2430:CLIX:*:*)
+       echo clipper-intergraph-clix${UNAME_RELEASE}
+       exit 0 ;;
+    mips:*:*:UMIPS | mips:*:*:RISCos)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h>  /* for printf() prototype */
+       int main (int argc, char *argv[]) {
+#else
+       int main (argc, argv) int argc; char *argv[]; {
+#endif
+       #if defined (host_mips) && defined (MIPSEB)
+       #if defined (SYSTYPE_SYSV)
+         printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_SVR4)
+         printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
+       #endif
+       #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
+         printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
+       #endif
+       #endif
+         exit (-1);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c \
+         && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+         && exit 0
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit 0 ;;
+    Motorola:PowerMAX_OS:*:*)
+       echo powerpc-motorola-powermax
+       exit 0 ;;
+    Motorola:*:4.3:PL8-*)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
+       echo powerpc-harris-powermax
+       exit 0 ;;
+    Night_Hawk:Power_UNIX:*:*)
+       echo powerpc-harris-powerunix
+       exit 0 ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit 0 ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit 0 ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    AViiON:dgux:*:*)
+        # DG/UX returns AViiON for all architectures
+        UNAME_PROCESSOR=`/usr/bin/uname -p`
+       if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+       then
+           if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
+              [ ${TARGET_BINARY_INTERFACE}x = x ]
+           then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+           else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+           fi
+       else
+           echo i586-dg-dgux${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit 0 ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit 0 ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit 0 ;;
+    ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i*86:AIX:*:*)
+       echo i386-ibm-aix
+       exit 0 ;;
+    ia64:AIX:*:*)
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               eval $set_cc_for_build
+               sed 's/^                //' << EOF >$dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+               echo rs6000-ibm-aix3.2.5
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit 0 ;;
+    *:AIX:*:[45])
+       IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+       if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
+       exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit 0 ;;
+    9000/[34678]??:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/[678][0-9][0-9])
+               if [ -x /usr/bin/getconf ]; then
+                   sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+                    sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+                    case "${sc_cpu_version}" in
+                      523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+                      528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+                      532)                      # CPU_PA_RISC2_0
+                        case "${sc_kernel_bits}" in
+                          32) HP_ARCH="hppa2.0n" ;;
+                          64) HP_ARCH="hppa2.0w" ;;
+                         '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
+                        esac ;;
+                    esac
+               fi
+               if [ "${HP_ARCH}" = "" ]; then
+                   eval $set_cc_for_build
+                   sed 's/^              //' << EOF >$dummy.c
+
+              #define _HPUX_SOURCE
+              #include <stdlib.h>
+              #include <unistd.h>
+
+              int main ()
+              {
+              #if defined(_SC_KERNEL_BITS)
+                  long bits = sysconf(_SC_KERNEL_BITS);
+              #endif
+                  long cpu  = sysconf (_SC_CPU_VERSION);
+
+                  switch (cpu)
+               {
+               case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
+               case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
+               case CPU_PA_RISC2_0:
+              #if defined(_SC_KERNEL_BITS)
+                   switch (bits)
+                       {
+                       case 64: puts ("hppa2.0w"); break;
+                       case 32: puts ("hppa2.0n"); break;
+                       default: puts ("hppa2.0"); break;
+                       } break;
+              #else  /* !defined(_SC_KERNEL_BITS) */
+                   puts ("hppa2.0"); break;
+              #endif
+               default: puts ("hppa1.0"); break;
+               }
+                  exit (0);
+              }
+EOF
+                   (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
+                   test -z "$HP_ARCH" && HP_ARCH=hppa
+               fi ;;
+       esac
+       if [ ${HP_ARCH} = "hppa2.0w" ]
+       then
+           # avoid double evaluation of $set_cc_for_build
+           test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+           if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null
+           then
+               HP_ARCH="hppa2.0w"
+           else
+               HP_ARCH="hppa64"
+           fi
+       fi
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    ia64:HP-UX:*:*)
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ia64-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    3050*:HI-UX:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0
+       echo unknown-hitachi-hiuxwe2
+       exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit 0 ;;
+    *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
+       echo hppa1.0-hp-mpeix
+       exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit 0 ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit 0 ;;
+    i*86:OSF1:*:*)
+       if [ -x /usr/sbin/sysversion ] ; then
+           echo ${UNAME_MACHINE}-unknown-osf1mk
+       else
+           echo ${UNAME_MACHINE}-unknown-osf1
+       fi
+       exit 0 ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*[A-Z]90:*:*:*)
+       echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
+       | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
+             -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
+             -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*TS:*:*:*)
+       echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*T3E:*:*:*)
+       echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    CRAY*SV1:*:*:*)
+       echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    *:UNICOS/mp:*:*)
+       echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+       exit 0 ;;
+    F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
+       FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
+        echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+        exit 0 ;;
+    5000:UNIX_System_V:4.*:*)
+        FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
+        FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
+        echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
+       exit 0 ;;
+    i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+       echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    sparc*:BSD/OS:*:*)
+       echo sparc-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:FreeBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
+    i*:CYGWIN*:*)
+       echo ${UNAME_MACHINE}-pc-cygwin
+       exit 0 ;;
+    i*:MINGW*:*)
+       echo ${UNAME_MACHINE}-pc-mingw32
+       exit 0 ;;
+    i*:PW*:*)
+       echo ${UNAME_MACHINE}-pc-pw32
+       exit 0 ;;
+    x86:Interix*:[34]*)
+       echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
+       exit 0 ;;
+    [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
+       echo i${UNAME_MACHINE}-pc-mks
+       exit 0 ;;
+    i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+       # How do we know it's Interix rather than the generic POSIX subsystem?
+       # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+       # UNAME_MACHINE based on the output of uname instead of i386?
+       echo i586-pc-interix
+       exit 0 ;;
+    i*:UWIN*:*)
+       echo ${UNAME_MACHINE}-pc-uwin
+       exit 0 ;;
+    amd64:CYGWIN*:*:*)
+       echo x86_64-unknown-cygwin
+       exit 0 ;;
+    p*:CYGWIN*:*)
+       echo powerpcle-unknown-cygwin
+       exit 0 ;;
+    prep*:SunOS:5.*:*)
+       echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    *:GNU:*:*)
+       # the GNU system
+       echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit 0 ;;
+    *:GNU/*:*:*)
+       # other systems with GNU libc and userland
+       echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+       exit 0 ;;
+    i*86:Minix:*:*)
+       echo ${UNAME_MACHINE}-pc-minix
+       exit 0 ;;
+    arm*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    cris:Linux:*:*)
+       echo cris-axis-linux-gnu
+       exit 0 ;;
+    crisv32:Linux:*:*)
+       echo crisv32-axis-linux-gnu
+       exit 0 ;;
+    frv:Linux:*:*)
+       echo frv-unknown-linux-gnu
+       exit 0 ;;
+    ia64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    m32r*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    m68*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    mips:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips
+       #undef mipsel
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mipsel
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+       ;;
+    mips64:Linux:*:*)
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #undef CPU
+       #undef mips64
+       #undef mips64el
+       #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+       CPU=mips64el
+       #else
+       #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+       CPU=mips64
+       #else
+       CPU=
+       #endif
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
+       test x"${CPU}" != x && echo "${CPU}-unknown-linux-gnu" && exit 0
+       ;;
+    ppc:Linux:*:*)
+       echo powerpc-unknown-linux-gnu
+       exit 0 ;;
+    ppc64:Linux:*:*)
+       echo powerpc64-unknown-linux-gnu
+       exit 0 ;;
+    alpha:Linux:*:*)
+       case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+         EV5)   UNAME_MACHINE=alphaev5 ;;
+         EV56)  UNAME_MACHINE=alphaev56 ;;
+         PCA56) UNAME_MACHINE=alphapca56 ;;
+         PCA57) UNAME_MACHINE=alphapca56 ;;
+         EV6)   UNAME_MACHINE=alphaev6 ;;
+         EV67)  UNAME_MACHINE=alphaev67 ;;
+         EV68*) UNAME_MACHINE=alphaev68 ;;
+        esac
+       objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+       if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+       echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+       exit 0 ;;
+    parisc:Linux:*:* | hppa:Linux:*:*)
+       # Look for CPU level
+       case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+         PA7*) echo hppa1.1-unknown-linux-gnu ;;
+         PA8*) echo hppa2.0-unknown-linux-gnu ;;
+         *)    echo hppa-unknown-linux-gnu ;;
+       esac
+       exit 0 ;;
+    parisc64:Linux:*:* | hppa64:Linux:*:*)
+       echo hppa64-unknown-linux-gnu
+       exit 0 ;;
+    s390:Linux:*:* | s390x:Linux:*:*)
+       echo ${UNAME_MACHINE}-ibm-linux
+       exit 0 ;;
+    sh64*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sh*:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    sparc:Linux:*:* | sparc64:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit 0 ;;
+    x86_64:Linux:*:*)
+       echo x86_64-unknown-linux-gnu
+       exit 0 ;;
+    i*86:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us. cd to the root directory to prevent
+       # problems with other programs or directories called `ld' in the path.
+       # Set LC_ALL=C to ensure ld outputs messages in English.
+       ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+                        | sed -ne '/supported targets:/!d
+                                   s/[         ][      ]*/ /g
+                                   s/.*supported targets: *//
+                                   s/ .*//
+                                   p'`
+        case "$ld_supported_targets" in
+         elf32-i386)
+               TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+               ;;
+         a.out-i386-linux)
+               echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+               exit 0 ;;
+         coff-i386)
+               echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+               exit 0 ;;
+         "")
+               # Either a pre-BFD a.out linker (linux-gnuoldld) or
+               # one that does not give us useful --help.
+               echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+               exit 0 ;;
+       esac
+       # Determine whether the default compiler is a.out or elf
+       eval $set_cc_for_build
+       sed 's/^        //' << EOF >$dummy.c
+       #include <features.h>
+       #ifdef __ELF__
+       # ifdef __GLIBC__
+       #  if __GLIBC__ >= 2
+       LIBC=gnu
+       #  else
+       LIBC=gnulibc1
+       #  endif
+       # else
+       LIBC=gnulibc1
+       # endif
+       #else
+       #ifdef __INTEL_COMPILER
+       LIBC=gnu
+       #else
+       LIBC=gnuaout
+       #endif
+       #endif
+       #ifdef __dietlibc__
+       LIBC=dietlibc
+       #endif
+EOF
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
+       test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
+       test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
+       ;;
+    i*86:DYNIX/ptx:4*:*)
+       # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+       # earlier versions are messed up and put the nodename in both
+       # sysname and nodename.
+       echo i386-sequent-sysv4
+       exit 0 ;;
+    i*86:UNIX_SV:4.2MP:2.*)
+        # Unixware is an offshoot of SVR4, but it has its own version
+        # number series starting with 2...
+        # I am not positive that other SVR4 systems won't match this,
+       # I just have to hope.  -- rms.
+        # Use sysv4.2uw... so that sysv4* matches it.
+       echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+       exit 0 ;;
+    i*86:OS/2:*:*)
+       # If we were able to find `uname', then EMX Unix compatibility
+       # is probably installed.
+       echo ${UNAME_MACHINE}-pc-os2-emx
+       exit 0 ;;
+    i*86:XTS-300:*:STOP)
+       echo ${UNAME_MACHINE}-unknown-stop
+       exit 0 ;;
+    i*86:atheos:*:*)
+       echo ${UNAME_MACHINE}-unknown-atheos
+       exit 0 ;;
+       i*86:syllable:*:*)
+       echo ${UNAME_MACHINE}-pc-syllable
+       exit 0 ;;
+    i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    i*86:*DOS:*:*)
+       echo ${UNAME_MACHINE}-pc-msdosdjgpp
+       exit 0 ;;
+    i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+       UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+       else
+               echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+       fi
+       exit 0 ;;
+    i*86:*:5:[78]*)
+       case `/bin/uname -X | grep "^Machine"` in
+           *486*)           UNAME_MACHINE=i486 ;;
+           *Pentium)        UNAME_MACHINE=i586 ;;
+           *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+       esac
+       echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+       exit 0 ;;
+    i*86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
+               (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
+                       && UNAME_MACHINE=i586
+               (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
+                       && UNAME_MACHINE=i686
+               echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-pc-sysv32
+       fi
+       exit 0 ;;
+    pc:*:*:*)
+       # Left here for compatibility:
+        # uname -m prints for DJGPP always 'pc', but it prints nothing about
+        # the processor, so we play safe by assuming i386.
+       echo i386-pc-msdosdjgpp
+        exit 0 ;;
+    Intel:Mach:3*:*)
+       echo i386-pc-mach3
+       exit 0 ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit 0 ;;
+    mc68k:UNIX:SYSTEM5:3.51m)
+       echo m68k-convergent-sysv
+       exit 0 ;;
+    M680?0:D-NIX:5.3:*)
+       echo m68k-diab-dnix
+       exit 0 ;;
+    M68*:*:R3V[5678]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+       OS_REL=''
+       test -r /etc/.relid \
+       && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+       /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+         && echo i486-ncr-sysv4.3${OS_REL} && exit 0
+       /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+         && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    mc68030:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit 0 ;;
+    TSUNAMI:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    rs6000:LynxOS:2.*:*)
+       echo rs6000-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    SM[BE]S:UNIX_SV:*:*)
+       echo mips-dde-sysv${UNAME_RELEASE}
+       exit 0 ;;
+    RM*:ReliantUNIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit 0 ;;
+    PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+                      # says <Richard.M.Bartel@ccMail.Census.GOV>
+        echo i586-unisys-sysv4
+        exit 0 ;;
+    *:UNIX_System_V:4*:FTX*)
+       # From Gerald Hewes <hewes@openmarket.com>.
+       # How about differentiating between stratus architectures? -djm
+       echo hppa1.1-stratus-sysv4
+       exit 0 ;;
+    *:*:*:FTX*)
+       # From seanf@swdc.stratus.com.
+       echo i860-stratus-sysv4
+       exit 0 ;;
+    i*86:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo ${UNAME_MACHINE}-stratus-vos
+       exit 0 ;;
+    *:VOS:*:*)
+       # From Paul.Green@stratus.com.
+       echo hppa1.1-stratus-vos
+       exit 0 ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit 0 ;;
+    news*:NEWS-OS:6*:*)
+       echo mips-sony-newsos6
+       exit 0 ;;
+    R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
+       if [ -d /usr/nec ]; then
+               echo mips-nec-sysv${UNAME_RELEASE}
+       else
+               echo mips-unknown-sysv${UNAME_RELEASE}
+       fi
+        exit 0 ;;
+    BeBox:BeOS:*:*)    # BeOS running on hardware made by Be, PPC only.
+       echo powerpc-be-beos
+       exit 0 ;;
+    BeMac:BeOS:*:*)    # BeOS running on Mac or Mac clone, PPC only.
+       echo powerpc-apple-beos
+       exit 0 ;;
+    BePC:BeOS:*:*)     # BeOS running on Intel PC compatible.
+       echo i586-pc-beos
+       exit 0 ;;
+    SX-4:SUPER-UX:*:*)
+       echo sx4-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-5:SUPER-UX:*:*)
+       echo sx5-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    SX-6:SUPER-UX:*:*)
+       echo sx6-nec-superux${UNAME_RELEASE}
+       exit 0 ;;
+    Power*:Rhapsody:*:*)
+       echo powerpc-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Rhapsody:*:*)
+       echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+       exit 0 ;;
+    *:Darwin:*:*)
+       UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
+       case $UNAME_PROCESSOR in
+           *86) UNAME_PROCESSOR=i686 ;;
+           unknown) UNAME_PROCESSOR=powerpc ;;
+       esac
+       echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+       exit 0 ;;
+    *:procnto*:*:* | *:QNX:[0123456789]*:*)
+       UNAME_PROCESSOR=`uname -p`
+       if test "$UNAME_PROCESSOR" = "x86"; then
+               UNAME_PROCESSOR=i386
+               UNAME_MACHINE=pc
+       fi
+       echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+       exit 0 ;;
+    *:QNX:*:4*)
+       echo i386-pc-qnx
+       exit 0 ;;
+    NSE-?:NONSTOP_KERNEL:*:*)
+       echo nse-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    NSR-?:NONSTOP_KERNEL:*:*)
+       echo nsr-tandem-nsk${UNAME_RELEASE}
+       exit 0 ;;
+    *:NonStop-UX:*:*)
+       echo mips-compaq-nonstopux
+       exit 0 ;;
+    BS2000:POSIX*:*:*)
+       echo bs2000-siemens-sysv
+       exit 0 ;;
+    DS/*:UNIX_System_V:*:*)
+       echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+       exit 0 ;;
+    *:Plan9:*:*)
+       # "uname -m" is not consistent, so use $cputype instead. 386
+       # is converted to i386 for consistency with other x86
+       # operating systems.
+       if test "$cputype" = "386"; then
+           UNAME_MACHINE=i386
+       else
+           UNAME_MACHINE="$cputype"
+       fi
+       echo ${UNAME_MACHINE}-unknown-plan9
+       exit 0 ;;
+    *:TOPS-10:*:*)
+       echo pdp10-unknown-tops10
+       exit 0 ;;
+    *:TENEX:*:*)
+       echo pdp10-unknown-tenex
+       exit 0 ;;
+    KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+       echo pdp10-dec-tops20
+       exit 0 ;;
+    XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+       echo pdp10-xkl-tops20
+       exit 0 ;;
+    *:TOPS-20:*:*)
+       echo pdp10-unknown-tops20
+       exit 0 ;;
+    *:ITS:*:*)
+       echo pdp10-unknown-its
+       exit 0 ;;
+    SEI:*:*:SEIUX)
+        echo mips-sei-seiux${UNAME_RELEASE}
+       exit 0 ;;
+    *:DragonFly:*:*)
+       echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
+    *:*VMS:*:*)
+       UNAME_MACHINE=`(uname -p) 2>/dev/null`
+       case "${UNAME_MACHINE}" in
+           A*) echo alpha-dec-vms && exit 0 ;;
+           I*) echo ia64-dec-vms && exit 0 ;;
+           V*) echo vax-dec-vms && exit 0 ;;
+       esac ;;
+    *:XENIX:*:SysV)
+       echo i386-pc-xenix
+       exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+eval $set_cc_for_build
+cat >$dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+         ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  if (version < 4)
+    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+  else
+    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+# if !defined (ultrix)
+#  include <sys/param.h>
+#  if defined (BSD)
+#   if BSD == 43
+      printf ("vax-dec-bsd4.3\n"); exit (0);
+#   else
+#    if BSD == 199006
+      printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#    else
+      printf ("vax-dec-bsd\n"); exit (0);
+#    endif
+#   endif
+#  else
+    printf ("vax-dec-bsd\n"); exit (0);
+#  endif
+# else
+    printf ("vax-dec-ultrix\n"); exit (0);
+# endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && $dummy && exit 0
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit 0 ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit 0 ;;
+    c34*)
+       echo c34-convex-bsd
+       exit 0 ;;
+    c38*)
+       echo c38-convex-bsd
+       exit 0 ;;
+    c4*)
+       echo c4-convex-bsd
+       exit 0 ;;
+    esac
+fi
+
+cat >&2 <<EOF
+$0: unable to guess system type
+
+This script, last modified $timestamp, has failed to recognize
+the operating system you are using. It is advised that you
+download the most up to date version of the config scripts from
+
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+  http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess timestamp = $timestamp
+
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
+/bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
+
+hostinfo               = `(hostinfo) 2>/dev/null`
+/bin/universe          = `(/bin/universe) 2>/dev/null`
+/usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
+/bin/arch              = `(/bin/arch) 2>/dev/null`
+/usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+
+UNAME_MACHINE = ${UNAME_MACHINE}
+UNAME_RELEASE = ${UNAME_RELEASE}
+UNAME_SYSTEM  = ${UNAME_SYSTEM}
+UNAME_VERSION = ${UNAME_VERSION}
+EOF
+
+exit 1
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/config.sub b/config.sub
new file mode 100644 (file)
index 0000000..87a1ee4
--- /dev/null
@@ -0,0 +1,1569 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+#   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+
+timestamp='2005-04-22'
+
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can.
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Please send patches to <config-patches@gnu.org>.  Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+#      CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+       $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+  -h, --help         print this help, then exit
+  -t, --time-stamp   print date of last modification, then exit
+  -v, --version      print version number, then exit
+
+Report bugs and patches to <config-patches@gnu.org>."
+
+version="\
+GNU config.sub ($timestamp)
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+  case $1 in
+    --time-stamp | --time* | -t )
+       echo "$timestamp" ; exit 0 ;;
+    --version | -v )
+       echo "$version" ; exit 0 ;;
+    --help | --h* | -h )
+       echo "$usage"; exit 0 ;;
+    -- )     # Stop option processing
+       shift; break ;;
+    - )        # Use stdin as input.
+       break ;;
+    -* )
+       echo "$me: invalid option $1$help"
+       exit 1 ;;
+
+    *local*)
+       # First pass through any local machine types.
+       echo $1
+       exit 0;;
+
+    * )
+       break ;;
+  esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+    exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+    exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+  nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
+  kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
+    os=-$maybe_os
+    basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+    ;;
+  *)
+    basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+    if [ $basic_machine != $1 ]
+    then os=`echo $1 | sed 's/.*-/-/'`
+    else os=; fi
+    ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+       -apple | -axis | -knuth | -cray)
+               os=
+               basic_machine=$1
+               ;;
+       -sim | -cisco | -oki | -wec | -winbond)
+               os=
+               basic_machine=$1
+               ;;
+       -scout)
+               ;;
+       -wrs)
+               os=-vxworks
+               basic_machine=$1
+               ;;
+       -chorusos*)
+               os=-chorusos
+               basic_machine=$1
+               ;;
+       -chorusrdb)
+               os=-chorusrdb
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco5)
+               os=-sco3.2v5
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -udk*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+       -psos*)
+               os=-psos
+               ;;
+       -mint | -mint[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       1750a | 580 \
+       | a29k \
+       | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
+       | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
+       | am33_2.0 \
+       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
+       | bfin \
+       | c4x | clipper \
+       | d10v | d30v | dlx | dsp16xx \
+       | fr30 | frv \
+       | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
+       | i370 | i860 | i960 | ia64 \
+       | ip2k | iq2000 \
+       | m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
+       | mips | mipsbe | mipseb | mipsel | mipsle \
+       | mips16 \
+       | mips64 | mips64el \
+       | mips64vr | mips64vrel \
+       | mips64orion | mips64orionel \
+       | mips64vr4100 | mips64vr4100el \
+       | mips64vr4300 | mips64vr4300el \
+       | mips64vr5000 | mips64vr5000el \
+       | mipsisa32 | mipsisa32el \
+       | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa64 | mipsisa64el \
+       | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64sb1 | mipsisa64sb1el \
+       | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipstx39 | mipstx39el \
+       | mn10200 | mn10300 \
+       | msp430 \
+       | ns16k | ns32k \
+       | openrisc | or32 \
+       | pdp10 | pdp11 | pj | pjl \
+       | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+       | pyramid \
+       | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+       | sh64 | sh64le \
+       | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
+       | sparcv8 | sparcv9 | sparcv9b \
+       | strongarm \
+       | tahoe | thumb | tic4x | tic80 | tron \
+       | v850 | v850e \
+       | we32k \
+       | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
+       | z8k)
+               basic_machine=$basic_machine-unknown
+               ;;
+       m6811 | m68hc11 | m6812 | m68hc12)
+               # Motorola 68HC11/12.
+               basic_machine=$basic_machine-unknown
+               os=-none
+               ;;
+       m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+               ;;
+
+       # We use `pc' rather than `unknown'
+       # because (1) that's what they normally are, and
+       # (2) the word "unknown" tends to confuse beginning users.
+       i*86 | x86_64)
+         basic_machine=$basic_machine-pc
+         ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       580-* \
+       | a29k-* \
+       | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
+       | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
+       | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
+       | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
+       | avr-* \
+       | bfin-* | bs2000-* \
+       | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
+       | clipper-* | craynv-* | cydra-* \
+       | d10v-* | d30v-* | dlx-* \
+       | elxsi-* \
+       | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+       | h8300-* | h8500-* \
+       | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
+       | i*86-* | i860-* | i960-* | ia64-* \
+       | ip2k-* | iq2000-* \
+       | m32r-* | m32rle-* \
+       | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* \
+       | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+       | mips16-* \
+       | mips64-* | mips64el-* \
+       | mips64vr-* | mips64vrel-* \
+       | mips64orion-* | mips64orionel-* \
+       | mips64vr4100-* | mips64vr4100el-* \
+       | mips64vr4300-* | mips64vr4300el-* \
+       | mips64vr5000-* | mips64vr5000el-* \
+       | mipsisa32-* | mipsisa32el-* \
+       | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa64-* | mipsisa64el-* \
+       | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64sb1-* | mipsisa64sb1el-* \
+       | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipstx39-* | mipstx39el-* \
+       | mmix-* \
+       | msp430-* \
+       | none-* | np1-* | ns16k-* | ns32k-* \
+       | orion-* \
+       | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+       | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+       | pyramid-* \
+       | romp-* | rs6000-* \
+       | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+       | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+       | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
+       | sparclite-* \
+       | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
+       | tahoe-* | thumb-* \
+       | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+       | tron-* \
+       | v850-* | v850e-* | vax-* \
+       | we32k-* \
+       | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
+       | xstormy16-* | xtensa-* \
+       | ymp-* \
+       | z8k-*)
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       386bsd)
+               basic_machine=i386-unknown
+               os=-bsd
+               ;;
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       a29khif)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       abacus)
+               basic_machine=abacus-unknown
+               ;;
+       adobe68k)
+               basic_machine=m68010-adobe
+               os=-scout
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amd64)
+               basic_machine=x86_64-pc
+               ;;
+       amd64-*)
+               basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-unknown
+               ;;
+       amigaos | amigados)
+               basic_machine=m68k-unknown
+               os=-amigaos
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-unknown
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       apollo68bsd)
+               basic_machine=m68k-apollo
+               os=-bsd
+               ;;
+       aux)
+               basic_machine=m68k-apple
+               os=-aux
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       c90)
+               basic_machine=c90-cray
+               os=-unicos
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | j90)
+               basic_machine=j90-cray
+               os=-unicos
+               ;;
+       craynv)
+               basic_machine=craynv-cray
+               os=-unicosmp
+               ;;
+       cr16c)
+               basic_machine=cr16c-unknown
+               os=-elf
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       crisv32 | crisv32-* | etraxfs*)
+               basic_machine=crisv32-axis
+               ;;
+       cris | cris-* | etrax*)
+               basic_machine=cris-axis
+               ;;
+       crx)
+               basic_machine=crx-unknown
+               os=-elf
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       decsystem10* | dec10*)
+               basic_machine=pdp10-dec
+               os=-tops10
+               ;;
+       decsystem20* | dec20*)
+               basic_machine=pdp10-dec
+               os=-tops20
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       djgpp)
+               basic_machine=i586-pc
+               os=-msdosdjgpp
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       es1800 | OSE68k | ose68k | ose | OSE)
+               basic_machine=m68k-ericsson
+               os=-ose
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       go32)
+               basic_machine=i386-pc
+               os=-go32
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       h8300xray)
+               basic_machine=h8300-hitachi
+               os=-xray
+               ;;
+       h8500hms)
+               basic_machine=h8500-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp3k9[0-9][0-9] | hp9[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k6[0-9][0-9] | hp6[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hp9k7[0-79][0-9] | hp7[0-79][0-9])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k78[0-9] | hp78[0-9])
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+               # FIXME: really hppa2.0-hp
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][13679] | hp8[0-9][13679])
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       hppa-next)
+               os=-nextstep3
+               ;;
+       hppaosf)
+               basic_machine=hppa1.1-hp
+               os=-osf
+               ;;
+       hppro)
+               basic_machine=hppa1.1-hp
+               os=-proelf
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i*86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv32
+               ;;
+       i*86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv4
+               ;;
+       i*86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-sysv
+               ;;
+       i*86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+               os=-solaris2
+               ;;
+       i386mach)
+               basic_machine=i386-mach
+               os=-mach
+               ;;
+       i386-vsta | vsta)
+               basic_machine=i386-unknown
+               os=-vsta
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       mingw32)
+               basic_machine=i386-pc
+               os=-mingw32
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+               basic_machine=m68k-atari
+               os=-mint
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       monitor)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       morphos)
+               basic_machine=powerpc-unknown
+               os=-morphos
+               ;;
+       msdos)
+               basic_machine=i386-pc
+               os=-msdos
+               ;;
+       mvs)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       netbsd386)
+               basic_machine=i386-unknown
+               os=-netbsd
+               ;;
+       netwinder)
+               basic_machine=armv4l-rebel
+               os=-linux
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       necv70)
+               basic_machine=v70-nec
+               os=-sysv
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       mon960)
+               basic_machine=i960-intel
+               os=-mon960
+               ;;
+       nonstopux)
+               basic_machine=mips-compaq
+               os=-nonstopux
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       nsr-tandem)
+               basic_machine=nsr-tandem
+               ;;
+       op50n-* | op60c-*)
+               basic_machine=hppa1.1-oki
+               os=-proelf
+               ;;
+       or32 | or32-*)
+               basic_machine=or32-unknown
+               os=-coff
+               ;;
+       os400)
+               basic_machine=powerpc-ibm
+               os=-os400
+               ;;
+       OSE68000 | ose68000)
+               basic_machine=m68000-ericsson
+               os=-ose
+               ;;
+       os68k)
+               basic_machine=m68k-none
+               os=-os68k
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+       pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pentium | p5 | k5 | k6 | nexgen | viac3)
+               basic_machine=i586-pc
+               ;;
+       pentiumpro | p6 | 6x86 | athlon | athlon_*)
+               basic_machine=i686-pc
+               ;;
+       pentiumii | pentium2 | pentiumiii | pentium3)
+               basic_machine=i686-pc
+               ;;
+       pentium4)
+               basic_machine=i786-pc
+               ;;
+       pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumpro-* | p6-* | 6x86-* | athlon-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+               basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pentium4-*)
+               basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=power-ibm
+               ;;
+       ppc)    basic_machine=powerpc-unknown
+               ;;
+       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64)  basic_machine=powerpc64-unknown
+               ;;
+       ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+               basic_machine=powerpc64le-unknown
+               ;;
+       ppc64le-* | powerpc64little-*)
+               basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       pw32)
+               basic_machine=i586-unknown
+               os=-pw32
+               ;;
+       rom68k)
+               basic_machine=m68k-rom68k
+               os=-coff
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       s390 | s390-*)
+               basic_machine=s390-ibm
+               ;;
+       s390x | s390x-*)
+               basic_machine=s390x-ibm
+               ;;
+       sa29200)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       sb1)
+               basic_machine=mipsisa64sb1-unknown
+               ;;
+       sb1el)
+               basic_machine=mipsisa64sb1el-unknown
+               ;;
+       sei)
+               basic_machine=mips-sei
+               os=-seiux
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparclite-wrs | simso-wrs)
+               basic_machine=sparclite-wrs
+               os=-vxworks
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       st2000)
+               basic_machine=m68k-tandem
+               ;;
+       stratus)
+               basic_machine=i860-stratus
+               os=-sysv4
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       sv1)
+               basic_machine=sv1-cray
+               os=-unicos
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       t3e)
+               basic_machine=alphaev5-cray
+               os=-unicos
+               ;;
+       t90)
+               basic_machine=t90-cray
+               os=-unicos
+               ;;
+       tic54x | c54x*)
+               basic_machine=tic54x-unknown
+               os=-coff
+               ;;
+       tic55x | c55x*)
+               basic_machine=tic55x-unknown
+               os=-coff
+               ;;
+       tic6x | c6x*)
+               basic_machine=tic6x-unknown
+               os=-coff
+               ;;
+       tx39)
+               basic_machine=mipstx39-unknown
+               ;;
+       tx39el)
+               basic_machine=mipstx39el-unknown
+               ;;
+       toad1)
+               basic_machine=pdp10-xkl
+               os=-tops20
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       tpf)
+               basic_machine=s390x-ibm
+               os=-tpf
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       v810 | necv810)
+               basic_machine=v810-nec
+               os=-none
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vpp*|vx|vx-*)
+               basic_machine=f301-fujitsu
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       w65*)
+               basic_machine=w65-wdc
+               os=-none
+               ;;
+       w89k-*)
+               basic_machine=hppa1.1-winbond
+               os=-proelf
+               ;;
+       xbox)
+               basic_machine=i686-pc
+               os=-mingw32
+               ;;
+       xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       z8k-*-coff)
+               basic_machine=z8k-unknown
+               os=-sim
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       w89k)
+               basic_machine=hppa1.1-winbond
+               ;;
+       op50n)
+               basic_machine=hppa1.1-oki
+               ;;
+       op60c)
+               basic_machine=hppa1.1-oki
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       mmix)
+               basic_machine=mmix-knuth
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp10)
+               # there are many clones, so DEC is not a safe bet
+               basic_machine=pdp10-unknown
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+               basic_machine=sh-unknown
+               ;;
+       sh64)
+               basic_machine=sh64-unknown
+               ;;
+       sparc | sparcv8 | sparcv9 | sparcv9b)
+               basic_machine=sparc-sun
+               ;;
+       cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       mac | mpw | mac-mpw)
+               basic_machine=m68k-apple
+               ;;
+       pmac | pmac-mpw)
+               basic_machine=powerpc-apple
+               ;;
+       *-unknown)
+               # Make sure to match an already-canonicalized machine name.
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+        # First match some system type aliases
+        # that might get confused with valid system types.
+       # -solaris* is a basic system type, with this one exception.
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -svr4*)
+               os=-sysv4
+               ;;
+       -unixware*)
+               os=-sysv4.2uw
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+             | -aos* \
+             | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+             | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
+             | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
+             | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
+             | -chorusos* | -chorusrdb* \
+             | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+             | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
+             | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
+             | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
+             | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
+             | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
+             | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -qnx*)
+               case $basic_machine in
+                   x86-* | i*86-*)
+                       ;;
+                   *)
+                       os=-nto$os
+                       ;;
+               esac
+               ;;
+       -nto-qnx*)
+               ;;
+       -nto*)
+               os=`echo $os | sed -e 's|nto|nto-qnx|'`
+               ;;
+       -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+             | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+             | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+               ;;
+       -mac*)
+               os=`echo $os | sed -e 's|mac|macos|'`
+               ;;
+       -linux-dietlibc)
+               os=-linux-dietlibc
+               ;;
+       -linux*)
+               os=`echo $os | sed -e 's|linux|linux-gnu|'`
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -opened*)
+               os=-openedition
+               ;;
+        -os400*)
+               os=-os400
+               ;;
+       -wince*)
+               os=-wince
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -atheos*)
+               os=-atheos
+               ;;
+       -syllable*)
+               os=-syllable
+               ;;
+       -386bsd)
+               os=-bsd
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       -nova*)
+               os=-rtmk-nova
+               ;;
+       -ns2 )
+               os=-nextstep2
+               ;;
+       -nsk*)
+               os=-nsk
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+        -tpf*)
+               os=-tpf
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -ose*)
+               os=-ose
+               ;;
+       -es1800*)
+               os=-ose
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+               os=-mint
+               ;;
+       -aros*)
+               os=-aros
+               ;;
+       -kaos*)
+               os=-kaos
+               ;;
+       -zvmoe)
+               os=-zvmoe
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-rebel)
+               os=-linux
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+    c4x-* | tic4x-*)
+        os=-coff
+        ;;
+       # This must come before the *-dec entry.
+       pdp10-*)
+               os=-tops20
+               ;;
+       pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       m68*-cisco)
+               os=-aout
+               ;;
+       mips*-cisco)
+               os=-elf
+               ;;
+       mips*-*)
+               os=-elf
+               ;;
+       or32-*)
+               os=-coff
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-be)
+               os=-beos
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-knuth)
+               os=-mmixware
+               ;;
+       *-wec)
+               os=-proelf
+               ;;
+       *-winbond)
+               os=-proelf
+               ;;
+       *-oki)
+               os=-proelf
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigaos
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-next )
+               os=-nextstep
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+       *-gould)
+               os=-sysv
+               ;;
+       *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+       *-sgi)
+               os=-irix
+               ;;
+       *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       f30[01]-fujitsu | f700-fujitsu)
+               os=-uxpv
+               ;;
+       *-rom68k)
+               os=-coff
+               ;;
+       *-*bug)
+               os=-coff
+               ;;
+       *-apple)
+               os=-macos
+               ;;
+       *-atari*)
+               os=-mint
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -aix*)
+                               vendor=ibm
+                               ;;
+                       -beos*)
+                               vendor=be
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -mpeix*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs* | -opened*)
+                               vendor=ibm
+                               ;;
+                       -os400*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -tpf*)
+                               vendor=ibm
+                               ;;
+                       -vxsim* | -vxworks* | -windiss*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+                       -hms*)
+                               vendor=hitachi
+                               ;;
+                       -mpw* | -macos*)
+                               vendor=apple
+                               ;;
+                       -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+                               vendor=atari
+                               ;;
+                       -vos*)
+                               vendor=stratus
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
+exit 0
+
+# Local variables:
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "timestamp='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
diff --git a/configure.ac b/configure.ac
new file mode 100644 (file)
index 0000000..2d09cad
--- /dev/null
@@ -0,0 +1,189 @@
+dnl  Copyright 2005 Red Hat, Inc.
+dnl 
+dnl  Permission to use, copy, modify, distribute, and sell this software and its
+dnl  documentation for any purpose is hereby granted without fee, provided that
+dnl  the above copyright notice appear in all copies and that both that
+dnl  copyright notice and this permission notice appear in supporting
+dnl  documentation, and that the name of Red Hat not be used in
+dnl  advertising or publicity pertaining to distribution of the software without
+dnl  specific, written prior permission.  Red Hat makes no
+dnl  representations about the suitability of this software for any purpose.  It
+dnl  is provided "as is" without express or implied warranty.
+dnl 
+dnl  RED HAT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+dnl  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+dnl  EVENT SHALL RED HAT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+dnl  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+dnl  DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+dnl  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+dnl  PERFORMANCE OF THIS SOFTWARE.
+dnl
+dnl Process this file with autoconf to create configure.
+
+AC_PREREQ([2.57])
+AC_INIT(xinit,[1.1.0], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xinit)
+AM_INIT_AUTOMAKE([dist-bzip2])
+AM_MAINTAINER_MODE
+
+AM_CONFIG_HEADER(config.h)
+
+AC_PROG_CC
+AM_PROG_CC_C_O
+XORG_PROG_RAWCPP
+AC_PROG_INSTALL
+AC_PATH_PROG(SED,sed)
+AC_CANONICAL_HOST
+
+AC_TYPE_SIGNAL
+AC_FUNC_FORK
+
+AC_CHECK_FUNCS([killpg])
+
+m4_ifdef([AS_HELP_STRING], , [m4_define([AS_HELP_STRING], m4_defn([AC_HELP_STRING]))])
+
+# Build options
+DEFAULT_XRDB=xrdb
+DEFAULT_XMODMAP=xmodmap
+DEFAULT_TWM=twm
+DEFAULT_XCLOCK=xclock
+DEFAULT_XTERM=xterm
+# You always want to specify the full path to the X server
+DEFAULT_XSERVER=${bindir}/X
+DEFAULT_XAUTH=xauth
+DEFAULT_XINIT=xinit
+
+AC_ARG_WITH(xrdb,
+        AS_HELP_STRING([--with-xrdb=XRDB], [Path to xrdb]),
+       [XRDB="$withval"],
+       [XRDB="$DEFAULT_XRDB"])
+
+AC_ARG_WITH(xmodmap,
+        AS_HELP_STRING([--with-xmodmap=XMODMAP], [Path to xmodmap]),
+       [XMODMAP="$withval"],
+       [XMODMAP="$DEFAULT_XMODMAP"])
+
+AC_ARG_WITH(twm,
+        AS_HELP_STRING([--with-twm=TWM], [Path to twm]),
+       [TWM="$withval"],
+       [TWM="$DEFAULT_TWM"])
+
+AC_ARG_WITH(xclock,
+        AS_HELP_STRING([--with-xclock=XCLOCK], [Path to xclock]),
+       [XCLOCK="$withval"],
+       [XCLOCK="$DEFAULT_XCLOCK"])
+
+AC_ARG_WITH(xterm,
+        AS_HELP_STRING([--with-xterm=XTERM], [Path to xterm]),
+       [XTERM="$withval"],
+       [XTERM="$DEFAULT_XTERM"])
+
+AC_ARG_WITH(xserver,
+        AS_HELP_STRING([--with-xserver=XSERVER], [Path to default X server]),
+       [XSERVER="$withval"],
+       [XSERVER="$DEFAULT_XSERVER"])
+
+AC_ARG_WITH(xauth,
+        AS_HELP_STRING([--with-xauth=XAUTH], [Path to xauth]),
+       [XAUTH="$withval"],
+       [XAUTH="$DEFAULT_XAUTH"])
+
+AC_ARG_WITH(xinit,
+        AS_HELP_STRING([--with-xinit=XINIT], [Path to xinit]),
+       [XINIT="$withval"],
+       [XINIT="$DEFAULT_XINIT"])
+
+AC_ARG_WITH(launchd,            AS_HELP_STRING([--with-launchd], [Build with support for Apple's launchd (default: auto)]), [LAUNCHD=$withval], [LAUNCHD=auto])
+AC_ARG_WITH(launchagents-dir,   AS_HELP_STRING([--with-launchagents-dir=PATH], [Path to launchd's LaunchAgents directory (default: /Library/LaunchAgents)]),
+                                [ launchagentsdir="${withval}" ],
+                                [ launchagentsdir="/Library/LaunchAgents" ])
+AC_ARG_WITH(launchdaemons-dir,  AS_HELP_STRING([--with-launchdaemons-dir=PATH], [Path to launchd's LaunchDaemonss directory (default: /Library/LaunchDaemons)]),
+                                [ launchdaemonsdir="${withval}" ],
+                                [ launchdaemonsdir="/Library/LaunchDaemons" ])
+
+if test "x$LAUNCHD" = "xauto"; then
+       unset LAUNCHD
+       case $host_os in
+               darwin8*)
+                       LAUNCHD=no
+               ;;
+               *)
+                       AC_CHECK_PROG(LAUNCHD, [launchd], [yes], [no])
+               ;;
+       esac
+fi
+
+if test "x$LAUNCHD" = "xyes" ; then
+       AC_DEFINE(HAVE_LAUNCHD, 1, [launchd support available])
+else
+        launchagentsdir=""
+        launchdaemonsdir=""
+fi
+AC_SUBST([launchagentsdir])
+AC_SUBST([launchdaemonsdir])
+AM_CONDITIONAL(LAUNCHD, [test "x$LAUNCHD" = "xyes"])
+
+# Checks for pkg-config packages
+PKG_CHECK_MODULES(XINIT, x11)
+
+case $host_os in
+    *bsd*)
+        XINIT_CFLAGS="$XINIT_CFLAGS -DCSRG_BASED"
+        ;;
+esac
+
+AC_SUBST(XINIT_CFLAGS)
+AC_SUBST(XINIT_LIBS)
+
+AC_PATH_PROGS(MCOOKIE, [mcookie], [$MCOOKIE],
+  [$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/local/bin])
+
+case $host_os in
+       *openbsd*)
+       MCOOKIE='/usr/sbin/openssl rand -hex 16'
+       ;;
+       *solaris*)
+       MCOOKIE="/usr/bin/od -X -A n -N 16 /dev/urandom | /usr/bin/tr -d ' '"
+       ;;
+esac
+
+if test "x$MCOOKIE" != x ; then
+       STARTX_COOKIE_FLAGS='-DHAS_COOKIE_MAKER -DMK_COOKIE="$(MCOOKIE)"'
+fi
+AC_SUBST(STARTX_COOKIE_FLAGS)
+
+# Additional substitutions in startx, xinitrc & man pages
+case $host_os in
+    *solaris*)
+       SHELL_CMD="/bin/ksh"
+       ARCHMANDEFS=""
+       ;;
+    *sco*)
+       SHELL_CMD="/bin/ksh"
+       ARCHMANDEFS="-D__SCOMAN__"
+       ;;
+    *)
+       SHELL_CMD="/bin/sh"
+       ARCHMANDEFS=""
+       ;;
+esac
+AC_SUBST(SHELL_CMD)
+AC_SUBST(ARCHMANDEFS)
+
+AC_SUBST(XRDB)
+AC_SUBST(XMODMAP)
+AC_SUBST(TWM)
+AC_SUBST(XCLOCK)
+AC_SUBST(XTERM)
+AC_SUBST(XSERVER)
+AC_SUBST(XAUTH)
+AC_SUBST(XINIT)
+
+# Defines which X servers are listed in help output in xinit.c
+# Cheat, lie, and assume all the world is Xorg for now
+AC_DEFINE(XORG, 1, [Define if you have Xorg X server])
+
+XORG_MANPAGE_SECTIONS
+XORG_RELEASE_VERSION
+
+AC_OUTPUT([Makefile])
+AC_OUTPUT([privileged_startx/Makefile])
diff --git a/control.in b/control.in
new file mode 100644 (file)
index 0000000..78faef9
--- /dev/null
@@ -0,0 +1,10 @@
+Package: tinyx-xinit-@MACHINE@
+Priority: optional
+Version: @VERSION@
+Section: headers
+Architecture: @HOST@
+Maintainer: SooChan Lim <sc.lim@samsung.com>
+Source: xinit-1.1.0
+Depends: 
+Description: xinit
+
diff --git a/cpprules.in b/cpprules.in
new file mode 100644 (file)
index 0000000..f32eafc
--- /dev/null
@@ -0,0 +1,37 @@
+# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
+# to cpp, because that trick does not work on all ANSI C preprocessors.
+# Delete line numbers from the cpp output (-P is not portable, I guess).
+# Allow XCOMM to be preceded by whitespace and provide a means of generating
+# output lines with trailing backslashes.
+# Allow XHASH to always be substituted, even in cases where XCOMM isn't.
+
+CPP_SED_MAGIC = $(SED) -e '/^\#  *[0-9][0-9]*  *.*$$/d' \
+                       -e '/^\#line  *[0-9][0-9]*  *.*$$/d' \
+                       -e '/^[         ]*XCOMM$$/s/XCOMM/\#/' \
+                       -e '/^[         ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
+                       -e '/^[         ]*XHASH/s/XHASH/\#/' \
+                       -e '/XSLASHGLOB/s/XSLASHGLOB/\/\*/' \
+                       -e '/\@\@$$/s/\@\@$$/\\/'
+
+# Strings to replace in man pages
+XORGRELSTRING = @PACKAGE_STRING@
+  XORGMANNAME = X Version 11
+
+MANDEFS =  \
+       -D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
+       -D__appmansuffix__=$(APP_MAN_SUFFIX) \
+       -D__filemansuffix__=$(FILE_MAN_SUFFIX) \
+       -D__libmansuffix__=$(LIB_MAN_SUFFIX) \
+       -D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
+       -D__XSERVERNAME__=Xorg -D__XCONFIGFILE__=xorg.conf \
+       -D__xinitdir__=$(XINITDIR) \
+       -D__bindir__=$(bindir) \
+       -DSHELL_CMD=$(SHELL_CMD) $(ARCHMANDEFS)
+
+SUFFIXES = .$(APP_MAN_SUFFIX) .man .cpp
+
+.cpp:
+       $(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@
+
+.man.$(APP_MAN_SUFFIX):
+       $(RAWCPP) $(RAWCPPFLAGS) $(MANDEFS) $(EXTRAMANDEFS) < $< | $(CPP_SED_MAGIC) > $@
diff --git a/debian/changelog b/debian/changelog
new file mode 100755 (executable)
index 0000000..18c5c83
--- /dev/null
@@ -0,0 +1,52 @@
+xinit (1.1.0-7slp2+1) unstable; urgency=low
+
+  * modify the rules file for SBS
+  * Git: 165.213.180.234:slp/pkgs/xorg/app/xinit
+  * Tag: xinit_1.1.0-7slp2+1
+
+ -- SooChan Lim <sc1.lim@samsung.com>  Mon, 21 Feb 2011 19:56:43 +0900
+
+xinit (1.1.0-6slp2+1) unstable; urgency=low
+
+  * modify the rules file for SBS
+  * Git: 165.213.180.234:slp/pkgs/xorg/app/xinit
+  * Tag: xinit_1.1.0-6slp2+1
+
+ -- SooChan Lim <sc1.lim@samsung.com>  Mon, 21 Feb 2011 16:17:13 +0900
+
+xinit (1.1.0-5slp2+1) unstable; urgency=low
+
+  * Add a feature enabled by defining _F_EXIT_AFTER_XORG_AND_XCLIENT_LAUNCHED_
+    - Modify xinit to call exit(0) after Xorg and clients was executed
+  * Remove some whitespaces
+  * Git: 165.213.180.234:slp/pkgs/xorg/app/xinit
+  * Tag: xinit_1.1.0-5slp2+1
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Fri, 11 Feb 2011 14:52:30 +0900
+
+xinit (1.1.0-4slp2) unstable; urgency=low
+
+  * Add xinit-dbg package and synchronize package between git and debian
+    repository
+  * Git: 165.213.180.234:/git/slp/pkgs/xorg/app/xinit
+  * Tag: xinit_1.1.0-4slp2
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Mon, 22 Nov 2010 16:14:23 +0900
+
+xinit (1.1.0-3slp2) unstable; urgency=low
+
+  * Change revision
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Thu, 25 Mar 2010 17:58:08 +0900
+
+xinit (1.1.0-2) unstable; urgency=low
+
+  * Modify debian/control file to satisfy this package's dependency 
+
+ -- Sung-Jin Park <sj76.park@samsung.com>  Wed, 30 Dec 2009 19:07:07 +0900
+
+xinit (1.1.0-1) unstable; urgency=low
+
+  * Initial release
+
+ -- Kyu Young Kim <ky0928.kim@samsung.com>  Sat, 4 Jul 2009 11:30:34 +0900
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..7ed6ff8
--- /dev/null
@@ -0,0 +1 @@
+5
diff --git a/debian/control b/debian/control
new file mode 100755 (executable)
index 0000000..9a1108b
--- /dev/null
@@ -0,0 +1,23 @@
+Source: xinit
+Section: x11
+Priority: optional
+Maintainer: Sung-Jin Park <sj76.park@samsung.com>
+Uploaders: SooChan Lim <sc1.lim@samsung.com>, Sung-Jin Park <sj76.park@samsung.com>
+Build-Depends: debhelper (>= 5.0.0), pkg-config, libx11-dev (>= 2:1.0.0-1), xutils-dev, quilt
+Standards-Version: 3.7.2.0
+
+Package: xinit
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}
+Pre-Depends: x11-common (>= 1:7.0.0)
+Replaces: xbase-clients (<= 1:7.2.ds2-3)
+Description: X server initialisation tool
+ xinit and startx are programs which facilitate starting an X server, and 
+ loading a base X session.
+
+Package: xinit-dbg
+Architecture: any
+Section: debug
+Depends: ${shlibs:Depends}, ${misc:Depends}, xinit (=${Source-Version})
+Description: Debug package of xinit
+
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..1d792bc
--- /dev/null
@@ -0,0 +1,50 @@
+This package was debianized by gouache <sangho.g.park@samsung.com> on
+Sat, 4 Jul 2009 11:30:34 +0900
+
+It was downloaded from  <http://repository.m2.samsung.com>
+
+Upstream Author: <sangho.g.park@samsung.com>
+
+Copyright: 
+
+    (c) 2009 Samsung Electronics, Inc.
+    All rights reserved.
+    This software is the confidential and proprietary information
+    of Samsung Electronics, Inc. ("Confidential Information").  You
+    shall not disclose such Confidential Information and shall use
+    it only in accordance with the terms of the license agreement
+    you entered into with Samsung Electronics.
+
+License: free
+
+Debian Copyright:
+Copyright 1992, 1998  The Open Group
+
+    Permission to use, copy, modify, distribute, and sell this software and its 
+    documentation for any purpose is hereby granted without fee, provided that
+    the above copyright notice appear in all copies and that both that
+    copyright notice and this permission notice appear in supporting
+    documentation.
+    
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+    
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE 
+    OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+    AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+    
+    Except as contained in this notice, the name of The Open Group shall not be
+    used in advertising or otherwise to promote the sale, use or other dealings
+    in this Software without prior written authorization from The Open Group.
+    
+Debian License:
+    On Debian GNU/Linux systems, the complete text of the GNU General
+    Public License can be found in '/usr/share/common-licenses/GPL'.
+    
+    The Debian packaging is (C) 2005-2007, Canonical, Inc.
+    and is licensed under the GPL, see above.
+    
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..c7e9962
--- /dev/null
@@ -0,0 +1,116 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+# These are used for cross-compiling and for saving the configure script
+# from having to guess our platform (since we know it already)
+DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
+
+CFLAGS += -Wall -g -D_F_EXIT_AFTER_XORG_AND_XCLIENT_LAUNCHED_
+LDFLAGS +=
+PREFIX = usr
+DATADIR = /opt
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+# shared library versions, option 1
+version=1.1.0
+major=1
+# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so
+#version=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'`
+#major=`ls src/.libs/lib*.so.* | \
+# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'`
+
+config.status: 
+       dh_testdir
+       # Add here commands to configure the package.
+       ./autogen.sh
+        ./configure --prefix=/$(PREFIX) CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)"
+        
+build: build-stamp
+build-stamp:  config.status
+       dh_testdir
+
+       # Add here commands to compile the package.
+       $(MAKE)
+
+       touch $@
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp 
+
+       # Add here commands to clean up after the build process.
+       -$(MAKE) distclean
+ifneq "$(wildcard /usr/share/misc/config.sub)" ""
+       cp -f /usr/share/misc/config.sub config.sub
+endif
+ifneq "$(wildcard /usr/share/misc/config.guess)" ""
+       cp -f /usr/share/misc/config.guess config.guess
+endif
+
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/tmp
+       $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs
+       dh_installdocs
+       dh_installexamples
+       dh_install --sourcedir debian/tmp
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip --dbg-package=xinit-dbg
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_python
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install 
diff --git a/debian/xinit.install b/debian/xinit.install
new file mode 100644 (file)
index 0000000..c5ad074
--- /dev/null
@@ -0,0 +1,5 @@
+usr/lib/X11/xinit/xinitrc
+usr/bin/xinit
+usr/share/man/man1/xinit.1
+usr/share/man/man1/startx.1
+
diff --git a/org.x.startx.plist.cpp b/org.x.startx.plist.cpp
new file mode 100644 (file)
index 0000000..42c9f70
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>Label</key>
+               <string>org.x.startx</string>
+       <key>ProgramArguments</key>
+               <array>
+                       <string>/bin/bash</string>
+                       <string>--login</string>
+                       <string>-c</string>
+                       <string>__bindir__/startx</string>
+               </array>
+       <key>Sockets</key>
+               <dict>
+                       <key>:0</key>
+                               <dict>
+                                       <key>SecureSocketWithKey</key>
+                                               <string>DISPLAY</string>
+                               </dict>
+               </dict>
+       <key>ServiceIPC</key>
+               <true/>
+</dict>
+</plist>
diff --git a/packaging/xorg-x11-xinit.changes b/packaging/xorg-x11-xinit.changes
new file mode 100644 (file)
index 0000000..310eb7f
--- /dev/null
@@ -0,0 +1,3 @@
+* Fri May 18 22:38:17 UTC 2012 - tu.c.truong@intel.com
+- Initial commit to Gerrit
+
diff --git a/packaging/xorg-x11-xinit.spec b/packaging/xorg-x11-xinit.spec
new file mode 100644 (file)
index 0000000..8564630
--- /dev/null
@@ -0,0 +1,49 @@
+%define pkgname xinit
+
+Summary:   X.Org X11 X Window System xinit startup scripts
+Name:      xorg-x11-%{pkgname}
+Version:   1.1.0
+Release:   1
+License:   MIT/X11
+Group:     User Interface/X
+URL:       http://www.x.org
+
+Source0:  ftp://ftp.x.org/pub/individual/app/%{pkgname}-%{version}.tar.gz
+
+BuildRequires: pkgconfig
+BuildRequires: libX11-devel
+BuildRequires: autoconf
+BuildRequires: automake
+BuildRequires: libtool
+BuildRequires: xorg-x11-util-macros
+Requires: xauth
+
+%description
+X.Org X11 X Window System xinit startup scripts
+
+%prep
+%setup -q -n %{pkgname}-%{version}
+
+%build
+export CFLAGS="${CFLAGS} -D_F_EXIT_AFTER_XORG_AND_XCLIENT_LAUNCHED_"
+./autogen.sh
+./configure --prefix=%{_prefix}
+
+make %{?jobs:-j%jobs}
+
+
+%install
+rm -rf $RPM_BUILD_ROOT
+make install DESTDIR=$RPM_BUILD_ROOT
+
+
+
+%remove_docs
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%{_bindir}/xinit
+%{_libdir}/X11/xinit/xinitrc
+
diff --git a/privileged_startx/10-tmpdirs.cpp b/privileged_startx/10-tmpdirs.cpp
new file mode 100755 (executable)
index 0000000..e30abac
--- /dev/null
@@ -0,0 +1,37 @@
+XCOMM!/bin/sh
+XCOMM Copyright (c) 2008 Apple Inc.
+XCOMM
+XCOMM Permission is hereby granted, free of charge, to any person
+XCOMM obtaining a copy of this software and associated documentation files
+XCOMM (the "Software"), to deal in the Software without restriction,
+XCOMM including without limitation the rights to use, copy, modify, merge,
+XCOMM publish, distribute, sublicense, and/or sell copies of the Software,
+XCOMM and to permit persons to whom the Software is furnished to do so,
+XCOMM subject to the following conditions:
+XCOMM
+XCOMM The above copyright notice and this permission notice shall be
+XCOMM included in all copies or substantial portions of the Software.
+XCOMM
+XCOMM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+XCOMM EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+XCOMM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+XCOMM NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+XCOMM HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+XCOMM WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+XCOMM OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+XCOMM DEALINGS IN THE SOFTWARE.
+XCOMM
+XCOMM Except as contained in this notice, the name(s) of the above
+XCOMM copyright holders shall not be used in advertising or otherwise to
+XCOMM promote the sale, use or other dealings in this Software without
+XCOMM prior written authorization.
+
+XCOMM Make sure these are owned by root
+for dir in /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix ; do
+       # Use mktemp rather than mkdir to avoid possible security issue
+       # if $dir exists and is a symlink
+       if mktemp -d ${dir} >& /dev/null ; then
+               chmod 1777 $dir
+               chown root:wheel $dir
+       fi
+done
diff --git a/privileged_startx/20-font_cache.cpp b/privileged_startx/20-font_cache.cpp
new file mode 100755 (executable)
index 0000000..c13384b
--- /dev/null
@@ -0,0 +1,35 @@
+XCOMM!/bin/sh
+XCOMM Copyright (c) 2008 Apple Inc.
+XCOMM
+XCOMM Permission is hereby granted, free of charge, to any person
+XCOMM obtaining a copy of this software and associated documentation files
+XCOMM (the "Software"), to deal in the Software without restriction,
+XCOMM including without limitation the rights to use, copy, modify, merge,
+XCOMM publish, distribute, sublicense, and/or sell copies of the Software,
+XCOMM and to permit persons to whom the Software is furnished to do so,
+XCOMM subject to the following conditions:
+XCOMM
+XCOMM The above copyright notice and this permission notice shall be
+XCOMM included in all copies or substantial portions of the Software.
+XCOMM
+XCOMM THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+XCOMM EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+XCOMM MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+XCOMM NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+XCOMM HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+XCOMM WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+XCOMM OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+XCOMM DEALINGS IN THE SOFTWARE.
+XCOMM
+XCOMM Except as contained in this notice, the name(s) of the above
+XCOMM copyright holders shall not be used in advertising or otherwise to
+XCOMM promote the sale, use or other dealings in this Software without
+XCOMM prior written authorization.
+
+if [ -x BINDIR/font_cache ] ; then
+       BINDIR/font_cache &
+elif [ -x BINDIR/font_cache.sh ] ; then
+       BINDIR/font_cache.sh -s &
+elif [ -x /usr/X11/bin/fc-cache ] ; then
+       BINDIR/fc-cache &
+fi
diff --git a/privileged_startx/Makefile.am b/privileged_startx/Makefile.am
new file mode 100644 (file)
index 0000000..6a143ca
--- /dev/null
@@ -0,0 +1,74 @@
+# Copyright (c) 2008 Apple Inc.
+#
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation files
+# (the "Software"), to deal in the Software without restriction,
+# including without limitation the rights to use, copy, modify, merge,
+# publish, distribute, sublicense, and/or sell copies of the Software,
+# and to permit persons to whom the Software is furnished to do so,
+# subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+# HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+#
+# Except as contained in this notice, the name(s) of the above
+# copyright holders shall not be used in advertising or otherwise to
+# promote the sale, use or other dealings in this Software without
+# prior written authorization.
+
+include $(top_srcdir)/cpprules.in
+
+xinitrcdir = $(libdir)/X11/xinit
+privstartxdir = $(xinitrcdir)/privileged_startx.d
+
+xinitrc_PROGRAMS = privileged_startx
+privstartx_SCRIPTS = 10-tmpdirs 20-font_cache
+
+AM_CPPFLAGS = -DXINITDIR=\"$(xinitrcdir)\" -DSCRIPTDIR=\"$(privstartxdir)\" -DBINDIR=\"$(bindir)\"
+
+CPP_FILES_FLAGS = -DXINITDIR="$(xinitrcdir)" -DSCRIPTDIR="$(privstartxdir)" -DBINDIR="$(bindir)"
+
+dist_privileged_startx_SOURCES = \
+       server.c \
+       client.c \
+       privileged_startx.c
+
+nodist_privileged_startx_SOURCES = \
+       privileged_startxServer.c \
+       privileged_startxUser.c
+
+BUILT_SOURCES = \
+       privileged_startxServer.c \
+       privileged_startxUser.c \
+       privileged_startxServer.h \
+       privileged_startx.h
+
+launchdaemons_PRE = org.x.privileged_startx.plist.cpp
+launchdaemons_DATA = $(launchdaemons_PRE:plist.cpp=plist)
+
+10-tmpdirs: 10-tmpdirs.cpp Makefile
+20-font_cache: 20-font_cache.cpp Makefile
+
+CLEANFILES = \
+       $(privstartx_SCRIPTS) \
+       $(BUILT_SOURCES) \
+       $(launchdaemons_DATA)
+
+EXTRA_DIST = \
+       10-tmpdirs.cpp \
+       20-font_cache.cpp \
+       org.x.privileged_startx.plist.cpp \
+       privileged_startx.defs \
+       privileged_startx_types.h
+
+$(BUILT_SOURCES): privileged_startx.defs
+       mig -sheader privileged_startxServer.h privileged_startx.defs
diff --git a/privileged_startx/client.c b/privileged_startx/client.c
new file mode 100644 (file)
index 0000000..2a24a70
--- /dev/null
@@ -0,0 +1,56 @@
+/* Copyright (c) 2008 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above
+ * copyright holders shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization.
+ */
+
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <servers/bootstrap.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+
+#include "privileged_startx.h"
+
+int client_main(void) {
+    kern_return_t kr;
+    mach_port_t mp;
+    
+    kr = bootstrap_look_up(bootstrap_port, BOOTSTRAP_NAME, &mp);
+    if (kr != KERN_SUCCESS) {
+        fprintf(stderr, "bootstrap_look_up(): %s\n", bootstrap_strerror(kr));
+        exit(EXIT_FAILURE);
+    }
+    
+    kr = privileged_startx(mp);
+    if (kr != KERN_SUCCESS) {
+        fprintf(stderr, "privileged_startx client: %s\n", mach_error_string(kr));
+        exit(EXIT_FAILURE);
+    }
+    
+    exit(EXIT_SUCCESS);
+}
diff --git a/privileged_startx/org.x.privileged_startx.plist.cpp b/privileged_startx/org.x.privileged_startx.plist.cpp
new file mode 100644 (file)
index 0000000..e878dc3
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+       <key>Label</key>
+               <string>org.x.privileged_startx</string>
+       <key>MachServices</key>
+               <dict>
+                       <key>org.x.privileged_startx</key>
+                               <true/>
+               </dict>
+       <key>ProgramArguments</key>
+               <array>
+                       <string>XINITDIR/privileged_startx</string>
+                       <string>-d</string>
+                       <string>SCRIPTDIR</string>
+               </array>
+       <key>TimeOut</key>
+               <integer>60</integer>
+</dict>
+</plist>
diff --git a/privileged_startx/privileged_startx.c b/privileged_startx/privileged_startx.c
new file mode 100644 (file)
index 0000000..725a1b0
--- /dev/null
@@ -0,0 +1,59 @@
+/* Copyright (c) 2008 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above
+ * copyright holders shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization.
+ */
+
+#include <string.h>
+#include <stdio.h>
+
+#ifndef SCRIPTDIR
+#define SCRIPTDIR="/usr/X11/lib/X11/xinit/privileged_startx.d"
+#endif
+
+static void usage(const char *prog) {
+    fprintf(stderr, "%s: usage\n", prog);
+    fprintf(stderr, "    %s [-d [<script dir>]]\n\n", prog);
+    fprintf(stderr, "              -d: Passed when called from launchd to denote server-mode.\n");
+    fprintf(stderr, "    <script dir>: Directory to use instead of %s\n", SCRIPTDIR);
+}
+
+int client_main(void);
+int server_main(const char *dir);
+
+int main(int argc, char *argv[]) {
+
+    if(argc == 1) {
+        return client_main();
+    } else if(!strncmp(argv[1], "-d", 2)) {
+        if(argc == 2)
+            return server_main(NULL);
+        else if(argc == 3)
+            return server_main(argv[2]);
+    }
+
+    usage(argv[0]);
+    return 1;
+}
diff --git a/privileged_startx/privileged_startx.defs b/privileged_startx/privileged_startx.defs
new file mode 100644 (file)
index 0000000..86f2b3a
--- /dev/null
@@ -0,0 +1,40 @@
+/* Copyright (c) 2008 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above
+ * copyright holders shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization.
+ */
+
+#include <mach/std_types.defs>
+#include <mach/mach_types.defs>
+import "privileged_startx_types.h";
+
+subsystem privileged_startx 12345;
+serverprefix do_;
+
+routine privileged_startx(
+       port            :       mach_port_t);
+
+routine idle_exit(
+       port            :       mach_port_t);
diff --git a/privileged_startx/privileged_startx_types.h b/privileged_startx/privileged_startx_types.h
new file mode 100644 (file)
index 0000000..fef7195
--- /dev/null
@@ -0,0 +1,6 @@
+#ifndef _PRIV_STARTX_TYPES_H_
+#define _PRIV_STARTX_TYPES_H_
+
+#define BOOTSTRAP_NAME "org.x.privileged_startx"
+
+#endif
diff --git a/privileged_startx/server.c b/privileged_startx/server.c
new file mode 100644 (file)
index 0000000..7afd424
--- /dev/null
@@ -0,0 +1,250 @@
+/* Copyright (c) 2008 Apple Inc.
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation files
+ * (the "Software"), to deal in the Software without restriction,
+ * including without limitation the rights to use, copy, modify, merge,
+ * publish, distribute, sublicense, and/or sell copies of the Software,
+ * and to permit persons to whom the Software is furnished to do so,
+ * subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT.  IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ * HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ *
+ * Except as contained in this notice, the name(s) of the above
+ * copyright holders shall not be used in advertising or otherwise to
+ * promote the sale, use or other dealings in this Software without
+ * prior written authorization.
+ */
+
+#include <mach/mach.h>
+#include <mach/mach_error.h>
+#include <servers/bootstrap.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fts.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <sys/time.h>
+#include <launch.h>
+#include <asl.h>
+#include <pthread.h>
+#include <errno.h>
+
+#include "privileged_startx.h"
+#include "privileged_startxServer.h"
+
+union MaxMsgSize {
+    union __RequestUnion__privileged_startx_subsystem req;
+    union __ReplyUnion__privileged_startx_subsystem rep; 
+};
+
+/* globals to trigger idle exit */
+#define DEFAULT_IDLE_TIMEOUT 60 /* 60 second timeout, then the server exits */
+
+struct idle_globals {
+       mach_port_t      mp;
+       long    timeout;
+       struct timeval   lastmsg;
+};
+
+struct idle_globals idle_globals;
+
+#ifndef SCRIPTDIR
+#define SCRIPTDIR="/usr/X11/lib/X11/xinit/privileged_startx.d"
+#endif
+
+/* Default script dir */
+const char *script_dir = SCRIPTDIR;
+
+static void* idle_thread(void* param __attribute__((unused)));
+
+int server_main(const char *dir) {
+    mach_msg_size_t mxmsgsz = sizeof(union MaxMsgSize) + MAX_TRAILER_SIZE;
+    mach_port_t mp;
+    kern_return_t kr;
+    long idle_timeout = DEFAULT_IDLE_TIMEOUT;
+
+    launch_data_t config = NULL, checkin = NULL;
+    checkin = launch_data_new_string(LAUNCH_KEY_CHECKIN);
+    config = launch_msg(checkin);
+    if (!config || launch_data_get_type(config) == LAUNCH_DATA_ERRNO) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR, "launchd checkin failed");
+        exit(EXIT_FAILURE);
+    }
+
+    launch_data_t tmv;
+    tmv = launch_data_dict_lookup(config, LAUNCH_JOBKEY_TIMEOUT);
+    if (tmv) {
+        idle_timeout = launch_data_get_integer(tmv);
+        asl_log(NULL, NULL, ASL_LEVEL_DEBUG,
+                "idle timeout set: %ld seconds", idle_timeout);
+    }
+
+    if(dir) {
+        script_dir = dir;
+        asl_log(NULL, NULL, ASL_LEVEL_DEBUG,
+                "script directory set: %s", script_dir);
+    }
+
+    launch_data_t svc;
+    svc = launch_data_dict_lookup(config, LAUNCH_JOBKEY_MACHSERVICES);
+    if (!svc) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR, "no mach services");
+        exit(EXIT_FAILURE);
+    }
+
+    svc = launch_data_dict_lookup(svc, BOOTSTRAP_NAME);
+    if (!svc) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR, "no mach service: %s",
+                BOOTSTRAP_NAME);
+        exit(EXIT_FAILURE);
+    }
+
+    mp = launch_data_get_machport(svc);
+    if (mp == MACH_PORT_NULL) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR, "NULL mach service: %s",
+                BOOTSTRAP_NAME);
+        exit(EXIT_FAILURE);
+    }
+
+    /* insert a send right so we can send our idle exit message */
+    kr = mach_port_insert_right(mach_task_self(), mp, mp,
+                                MACH_MSG_TYPE_MAKE_SEND);
+    if (kr != KERN_SUCCESS) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR, "send right failed: %s",
+                mach_error_string(kr));
+        exit(EXIT_FAILURE);
+    }
+
+    /* spawn a thread to monitor our idle timeout */
+    pthread_t thread;
+    idle_globals.mp = mp;
+    idle_globals.timeout = idle_timeout;
+    gettimeofday(&idle_globals.lastmsg, NULL);
+    pthread_create(&thread, NULL, &idle_thread, NULL);
+
+    /* Main event loop */
+    kr = mach_msg_server(privileged_startx_server, mxmsgsz, mp, 0);
+    if (kr != KERN_SUCCESS) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR,
+                "mach_msg_server(mp): %s\n", mach_error_string(kr));
+        exit(EXIT_FAILURE);
+    }
+
+    exit(EXIT_SUCCESS);
+}
+
+static int ftscmp(const FTSENT **a, const FTSENT **b) {
+    return strcmp((**a).fts_name, (**b).fts_name);
+}
+
+kern_return_t do_privileged_startx(mach_port_t test_port __attribute__((unused))) {
+    kern_return_t retval = KERN_SUCCESS;
+    char fn_buf[PATH_MAX + 1];
+    char *s;
+    int error_code;
+    FTS *ftsp;
+    FTSENT *ftsent;
+
+    const char * path_argv[2] = {script_dir, NULL};
+
+    /* Store that we were called, so the idle timer will reset */
+    gettimeofday(&idle_globals.lastmsg, NULL);
+
+    /* script_dir contains a set of files to run with root privs when X11 starts */
+    ftsp = fts_open(path_argv, FTS_PHYSICAL, ftscmp);
+    if(!ftsp) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR,
+                "do_privileged_startx: fts_open(%s): %s\n",
+                script_dir, strerror(errno));
+        return KERN_FAILURE;
+    }
+
+    /* Grab our dir */
+    ftsent = fts_read(ftsp);
+    if(!ftsent) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR,
+                "do_privileged_startx: fts_read(): %s\n", strerror(errno));
+        fts_close(ftsp);
+        return KERN_FAILURE;
+    }
+
+    /* Get a list of the files in this directory */
+    ftsent = fts_children(ftsp, 0);
+    if(!ftsent) {
+        asl_log(NULL, NULL, ASL_LEVEL_ERR,
+                "do_privileged_startx: fts_children(): %s\n", strerror(errno));
+        fts_close(ftsp);
+        return KERN_FAILURE;
+    }
+
+    /* Setup the buffer to have the path to the script dir */
+    strncpy(fn_buf, script_dir, PATH_MAX-1);
+    strcat(fn_buf, "/");
+    s = strrchr(fn_buf, 0);
+
+    /* Itterate over these files in alphabetical order */
+    for(; ftsent; ftsent = ftsent->fts_link) {
+        /* We only source regular files that are executable */
+        /* Note: This assumes we own them, which should always be the case */
+        if((ftsent->fts_statp->st_mode & S_IFREG) &&
+           (ftsent->fts_statp->st_mode & S_IXUSR)) {
+
+            /* Complete the full path filename in fn_buf */
+            strcpy(s, ftsent->fts_name);
+
+            /* Run it */
+            error_code = system(fn_buf);
+            if(error_code != 0) {
+                asl_log(NULL, NULL, ASL_LEVEL_ERR,
+                        "do_privileged_startx: %s: exited with status %d\n",
+                        fn_buf, error_code);
+                retval = KERN_FAILURE;
+            }
+        }
+    }
+
+    fts_close(ftsp);
+    return retval;
+}
+
+kern_return_t do_idle_exit(mach_port_t test_port __attribute__((unused))) {
+    struct timeval now;
+    gettimeofday(&now, NULL);
+
+    long delta = now.tv_sec - idle_globals.lastmsg.tv_sec;
+    if (delta >= idle_globals.timeout) {
+        exit(EXIT_SUCCESS);
+    }
+
+    return KERN_SUCCESS;
+}
+
+static void *idle_thread(void* param __attribute__((unused))) {
+    for(;;) {
+        struct timeval now;
+        gettimeofday(&now, NULL);
+        long delta = (now.tv_sec - idle_globals.lastmsg.tv_sec);
+        if (delta < idle_globals.timeout) {
+            /* sleep for remainder of timeout */
+            sleep(idle_globals.timeout - delta);
+        } else {
+            /* timeout has elapsed, attempt to idle exit */
+            idle_exit(idle_globals.mp);
+        }
+    }
+    return NULL;
+}
diff --git a/startx.cmd b/startx.cmd
new file mode 100644 (file)
index 0000000..cd37ecb
--- /dev/null
@@ -0,0 +1,81 @@
+/* OS/2 REXX */
+/* $XFree86: xc/programs/xinit/startx.cmd,v 3.3 1996/10/17 15:23:47 dawes Exp $
+ * 
+ * This is just a sample implementation of a slightly less primitive 
+ * interface than xinit.  It looks for user xinitrc.cmd and xservrc.cmd
+ * files, then system xinitrc.cmd and xservrc.cmd files, else lets xinit choose
+ * its default.  The system xinitrc should probably do things like check
+ * for Xresources files and merge them in, startup up a window manager,
+ * and pop a clock and serveral xterms.
+ *
+ * Site administrators are STRONGLY urged to write nicer versions.
+ */
+'@echo off'
+ADDRESS CMD
+env = 'OS2ENVIRONMENT'
+x11root = VALUE('X11ROOT',,env)
+IF x11root = '' THEN DO
+       SAY "The environment variable X11ROOT is not set. X/OS2 won't run without it."
+       EXIT
+END
+
+home = VALUE('HOME',,env)
+IF home = '' THEN home = x11root
+os_shell = VALUE('X11SHELL',,env)
+IF os_shell = '' THEN os_shell = VALUE('SHELL',,env)
+IF os_shell = '' THEN os_shell = VALUE('OS2_SHELL',,env)
+IF os_shell = '' THEN DO
+       SAY "There is no command interpreter in OS2_SHELL ???"
+       EXIT
+END
+
+userclientrc = home'\xinitrc.cmd'
+userserverrc = home'\xservrc.cmd'
+sysclientrc  = x11root'\usr\X11R6\lib\X11\xinit\xinitrc.cmd'
+sysserverrc  = x11root'\usr\X11R6\lib\X11\xinit\xservrc.cmd'
+clientargs   = ''
+serverargs   = ''
+
+IF exists(userclientrc) THEN
+       clientargs = userclientrc
+ELSE 
+IF exists(sysclientrc) THEN
+       clientargs = sysclientrc
+
+IF exists(userserverrc) THEN
+       serverargs = userserverrc
+ELSE 
+IF exists(sysserverrc) THEN
+       serverargs = sysserverrc
+
+whoseargs = "client"
+PARSE ARG all
+
+DO i=1 TO WORDS(all)
+       cur = WORD(all,i)
+       IF \(FILESPEC('DRIVE',cur) = '') THEN DO
+               IF whoseargs = "client" THEN
+                       clientargs = cur
+               ELSE
+                       serverargs = cur
+       END
+       ELSE
+       IF cur = "--" THEN 
+               whoseargs = "server"
+       ELSE 
+       IF whoseargs = "client" THEN
+               clientargs = clientargs' 'cur
+       ELSE
+               serverargs = serverargs' 'cur
+END
+
+xinit = x11root'\usr\X11R6\bin\xinit'
+xinit os_shell' /c 'clientargs' -- 'serverargs
+
+RETURN
+
+exists:
+       IF STREAM(arg(1), 'C', 'QUERY EXISTS') = '' THEN
+               RETURN 0
+       ELSE
+               RETURN 1
diff --git a/startx.cpp b/startx.cpp
new file mode 100644 (file)
index 0000000..8ffdc70
--- /dev/null
@@ -0,0 +1,332 @@
+XCOMM!SHELL_CMD
+
+XCOMM $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld Exp $
+XCOMM
+XCOMM This is just a sample implementation of a slightly less primitive
+XCOMM interface than xinit.  It looks for user .xinitrc and .xserverrc
+XCOMM files, then system xinitrc and xserverrc files, else lets xinit choose
+XCOMM its default.  The system xinitrc should probably do things like check
+XCOMM for .Xresources files and merge them in, startup up a window manager,
+XCOMM and pop a clock and serveral xterms.
+XCOMM
+XCOMM Site administrators are STRONGLY urged to write nicer versions.
+XCOMM
+XCOMM $XFree86: xc/programs/xinit/startx.cpp,v 3.16tsi Exp $
+
+unset DBUS_SESSION_BUS_ADDRESS
+unset SESSION_MANAGER
+
+#if defined(__SCO__) || defined(__UNIXWARE__) || defined(__APPLE__)
+
+XCOMM Check for /usr/bin/X11 and BINDIR in the path, if not add them.
+XCOMM This allows startx to be placed in a place like /usr/bin or /usr/local/bin
+XCOMM and people may use X without changing their PATH.
+XCOMM Note that we put our own bin directory at the front of the path, and
+XCOMM the standard system path at the back, since if you are using the Xorg
+XCOMM server theres a pretty good chance you want to bias the Xorg clients
+XCOMM over the old system's clients.
+
+XCOMM First our compiled path
+bindir=__bindir__
+
+case $PATH in
+    *:$bindir | *:$bindir:* | $bindir:*) ;;
+    *) PATH=$bindir:$PATH ;;
+esac
+
+XCOMM Now the "old" compiled path
+#ifdef __APPLE__
+oldbindir=/usr/X11R6/bin
+#else
+oldbindir=/usr/bin/X11
+#endif
+
+if [ -d "$oldbindir" ] ; then
+    case $PATH in
+        *:$oldbindir | *:$oldbindir:* | $oldbindir:*) ;;
+        *) PATH=$PATH:$oldbindir ;;
+    esac
+fi
+
+XCOMM Bourne shell does not automatically export modified environment variables
+XCOMM so export the new PATH just in case the user changes the shell
+export PATH
+#endif
+
+#if defined(__SCO__) || defined(__UNIXWARE__)
+XCOMM Set up the XMERGE env var so that dos merge is happy under X
+
+if [ -f /usr/lib/merge/xmergeset.sh ]; then
+       . /usr/lib/merge/xmergeset.sh
+elif [ -f /usr/lib/merge/console.disp ]; then
+       XMERGE=`cat /usr/lib/merge/console.disp`
+       export XMERGE
+fi
+
+userclientrc=$HOME/.startxrc
+sysclientrc=LIBDIR/sys.startxrc
+scouserclientrc=$HOME/.xinitrc
+scosysclientrc=XINITDIR/xinitrc
+#else
+userclientrc=$HOME/.xinitrc
+sysclientrc=XINITDIR/xinitrc
+#endif
+
+userserverrc=$HOME/.xserverrc
+sysserverrc=XINITDIR/xserverrc
+defaultclient=XTERM
+defaultserver=XSERVER
+defaultclientargs=""
+defaultserverargs=""
+defaultdisplay=":0"
+clientargs=""
+serverargs=""
+
+#ifdef __APPLE__
+
+XCOMM Initialize defaults (this will cut down on "safe" error messages)
+if ! defaults read org.x.X11 cache_fonts >& /dev/null ; then
+    defaults write org.x.X11 cache_fonts -bool true
+fi
+
+if ! defaults read org.x.X11 no_auth >& /dev/null ; then
+    defaults write org.x.X11 no_auth -bool false
+fi
+
+if ! defaults read org.x.X11 nolisten_tcp >& /dev/null ; then
+    defaults write org.x.X11 nolisten_tcp -bool true
+fi
+
+XCOMM First, start caching fonts
+if [ x`defaults read org.x.X11 cache_fonts` = x1 ] ; then
+    if [ -x /usr/X11/bin/font_cache ] ; then
+        /usr/X11/bin/font_cache &
+    elif [ -x /usr/X11/bin/font_cache.sh ] ; then
+        /usr/X11/bin/font_cache.sh &
+    elif [ -x /usr/X11/bin/fc-cache ] ; then
+        /usr/X11/bin/fc-cache &
+    fi
+fi
+
+if [ -x XINITDIR/privileged_startx ] ; then
+       # Don't push this into the background becasue it can cause
+       # a race to create /tmp/.X11-unix
+       XINITDIR/privileged_startx
+fi
+
+if [ x`defaults read org.x.X11 no_auth` = x0 ] ; then
+    enable_xauth=1
+else
+    enable_xauth=0
+fi
+
+if [ x`defaults read org.x.X11 nolisten_tcp` = x1 ] ; then
+    defaultserverargs="$defaultserverargs -nolisten tcp"
+fi
+
+for ((d=0; ; d++)) ; do
+    [[ -e /tmp/.X$d-lock ]] || break
+done
+defaultdisplay=":$d"
+
+#else
+enable_xauth=1
+#endif
+
+
+if [ -f $userclientrc ]; then
+    defaultclientargs=$userclientrc
+elif [ -f $sysclientrc ]; then
+    defaultclientargs=$sysclientrc
+#if defined(__SCO__) || defined(__UNIXWARE__)
+elif [ -f $scouserclientrc ]; then
+    defaultclientargs=$scouserclientrc
+elif [ -f $scosysclientrc ]; then
+    defaultclientargs=$scosysclientrc
+#endif
+fi
+
+#if defined(__SCO__) || defined(__UNIXWARE__)
+
+XCOMM SCO -t option: do not start an X server
+case $1 in
+  -t)   if [ -n "$DISPLAY" ]; then
+                REMOTE_SERVER=TRUE
+                shift
+        else
+                echo "DISPLAY environment variable not set"
+                exit 1
+        fi
+        ;;
+esac
+#endif
+
+whoseargs="client"
+while [ x"$1" != x ]; do
+    case "$1" in
+    XCOMM '' required to prevent cpp from treating "/*" as a C comment.
+    /''*|\./''*)
+       if [ "$whoseargs" = "client" ]; then
+           if [ x"$clientargs" = x ]; then
+               client="$1"
+           else
+               clientargs="$clientargs $1"
+           fi
+       else
+           if [ x"$serverargs" = x ]; then
+               server="$1"
+           else
+               serverargs="$serverargs $1"
+           fi
+       fi
+       ;;
+    --)
+       whoseargs="server"
+       ;;
+    *)
+       if [ "$whoseargs" = "client" ]; then
+           clientargs="$clientargs $1"
+       else
+           XCOMM display must be the FIRST server argument
+           if [ x"$serverargs" = x ] && @@
+                expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
+               display="$1"
+           else
+               serverargs="$serverargs $1"
+           fi
+       fi
+       ;;
+    esac
+    shift
+done
+
+XCOMM process client arguments
+if [ x"$client" = x ]; then
+    XCOMM if no client arguments either, use rc file instead
+    if [ x"$clientargs" = x ]; then
+       client="$defaultclientargs"
+    else
+       client=$defaultclient
+    fi
+fi
+
+XCOMM process server arguments
+if [ x"$server" = x ]; then
+    server=$defaultserver
+
+    XCOMM if no server arguments or display either, use defaults
+    if [ x"$serverargs" = x -a x"$display" = x ]; then
+       XCOMM For compatibility reasons, only use xserverrc if there were no server command line arguments
+       if [ -f $userserverrc ]; then
+           server=$userserverrc
+       elif [ -f $sysserverrc ]; then
+           server=$sysserverrc
+       fi
+
+       serverargs=$defaultserverargs
+       display=$defaultdisplay
+    fi
+fi
+
+if [ x"$enable_xauth" = x1 ] ; then
+    if [ x"$XAUTHORITY" = x ]; then
+        XAUTHORITY=$HOME/.Xauthority
+        export XAUTHORITY
+    fi
+
+    removelist=
+
+    XCOMM set up default Xauth info for this machine
+    case `uname` in
+    Linux*)
+        if [ -z "`hostname --version 2>&1 | grep GNU`" ]; then
+            hostname=`hostname -f`
+        else
+            hostname=`hostname`
+        fi
+        ;;
+    *)
+        hostname=`hostname`
+        ;;
+    esac
+
+    authdisplay=${display:-:0}
+#if defined(HAS_COOKIE_MAKER) && defined(MK_COOKIE)
+    mcookie=`MK_COOKIE`
+#else
+    if [ -r /dev/urandom ]; then
+        mcookie=`dd if=/dev/urandom bs=16 count=1 2>/dev/null | hexdump -e \\"%08x\\"`
+    else
+        mcookie=`dd if=/dev/random bs=16 count=1 2>/dev/null | hexdump -e \\"%08x\\"`
+    fi
+#endif
+    if test x"$mcookie" = x; then
+        echo "Couldn't create cookie"
+        exit 1
+    fi
+    dummy=0
+
+    XCOMM create a file with auth information for the server. ':0' is a dummy.
+    xserverauthfile=$HOME/.serverauth.$$
+    trap "rm -f $xserverauthfile" HUP INT QUIT ILL TRAP KILL BUS TERM
+    xauth -q -f $xserverauthfile << EOF
+add :$dummy . $mcookie
+EOF
+    serverargs=${serverargs}" -auth "${xserverauthfile}
+
+    XCOMM now add the same credentials to the client authority file
+    XCOMM if '$displayname' already exists do not overwrite it as another
+    XCOMM server man need it. Add them to the '$xserverauthfile' instead.
+    for displayname in $authdisplay $hostname$authdisplay; do
+        authcookie=`XAUTH list "$displayname" @@
+        | sed -n "s/.*$displayname[[:space:]*].*[[:space:]*]//p"` 2>/dev/null;
+        if [ "z${authcookie}" = "z" ] ; then
+            XAUTH -q << EOF 
+add $displayname . $mcookie
+EOF
+        removelist="$displayname $removelist"
+        else
+            dummy=$(($dummy+1));
+            XAUTH -q -f $xserverauthfile << EOF
+add :$dummy . $authcookie
+EOF
+        fi
+    done
+fi
+
+#if defined(__SCO__) || defined(__UNIXWARE__)
+if [ "$REMOTE_SERVER" = "TRUE" ]; then
+        exec SHELL_CMD ${client}
+else
+        XINIT $client $clientargs -- $server $display $serverargs
+fi
+#else
+XINIT $client $clientargs -- $server $display $serverargs
+#endif
+
+if [ x"$enable_xauth" = x1 ] ; then
+    if [ x"$removelist" != x ]; then
+        XAUTH remove $removelist
+    fi
+    if [ x"$xserverauthfile" != x ]; then
+        rm -f $xserverauthfile
+    fi
+fi
+
+/*
+ * various machines need special cleaning up
+ */
+#ifdef __linux__
+if command -v deallocvt > /dev/null 2>&1; then
+    deallocvt
+fi
+#endif
+
+#ifdef macII
+Xrepair
+screenrestore
+#endif
+
+#if defined(sun)
+kbd_mode -a
+#endif
diff --git a/startx.man b/startx.man
new file mode 100644 (file)
index 0000000..33e731c
--- /dev/null
@@ -0,0 +1,221 @@
+.\" $Xorg: startx.man,v 1.4 2001/02/09 02:05:49 xorgcvs Exp $
+.\" $XdotOrg$
+.\" Copyright 1993, 1998  The Open Group
+.\" 
+.\" Permission to use, copy, modify, distribute, and sell this software and its
+.\" documentation for any purpose is hereby granted without fee, provided that
+.\" the above copyright notice appear in all copies and that both that
+.\" copyright notice and this permission notice appear in supporting
+.\" documentation.
+.\"
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\"
+.\" Except as contained in this notice, the name of The Open Group shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from The Open Group.
+.\"
+.\" $XFree86: xc/programs/xinit/startx.man,v 1.7 2001/04/19 15:08:32 dawes Exp $
+.\"
+.TH STARTX 1 __xorgversion__
+.SH NAME
+startx \- initialize an X session
+.SH SYNOPSIS
+.B startx
+[ [
+.I client
+]
+.I options
+\&\.\|.\|. ] [
+.B \-\^\-
+[
+.I server
+] [
+.I display
+]
+.I options
+\&.\|.\|. ]
+.SH DESCRIPTION
+The \fIstartx\fP script is a front end to \fIxinit\fP that provides a
+somewhat nicer user interface for running a single session of the X
+Window System.  It is often run with no arguments.
+.PP
+Arguments immediately following the
+.I startx
+command are used to start a client in the same manner as
+.IR xinit (1).
+The special argument
+.RB '--'
+marks the end of client arguments and the beginning of server options.
+It may be convenient to specify server options with startx to change on a
+per-session basis the
+default color depth, the server's notion of the number of dots-per-inch the
+display device presents, or take advantage of a different server layout, as
+permitted by the
+.IR __XSERVERNAME__ (1)
+server and specified in the
+.IR __XCONFIGFILE__ (__filemansuffix__)
+file.  Some examples of specifying server arguments follow; consult the
+manual page for your X server to determine which arguments are legal.
+.RS
+.PP
+startx -- -depth 16
+.PP
+startx -- -dpi 100
+.PP
+startx -- -layout Multihead
+.RE
+#ifdef __SCOMAN__
+.PP
+To determine the client to run,
+.I startx
+looks for the following files, in order:
+.RS
+.PP
+.I $(HOME)/.startxrc
+.PP
+.I __libdir__/sys.startxrc
+.PP
+.I $(HOME)/.xinitrc
+.PP
+.I __xinitdir__/xinitrc
+.RE
+.PP
+#else
+.PP
+To determine the client to run,
+.I startx
+first looks for a file called
+.I .xinitrc
+in the user's home directory.  If that is not found, it uses
+the file
+.I xinitrc
+in the
+.I xinit
+library directory.
+#endif
+If command line client options are given, they override this
+behavior and revert to the
+.IR xinit (1)
+behavior.
+To determine the server to run,
+.I startx
+first looks for a file called
+.I .xserverrc
+in the user's home directory.  If that is not found, it uses
+the file
+.I xserverrc
+in the
+.I xinit
+library directory.
+If command line server options are given, they override this
+behavior and revert to the
+.IR xinit (1)
+behavior.  Users rarely need to provide a
+.I .xserverrc
+file.
+See the
+.IR xinit (1)
+manual page for more details on the arguments.
+.PP
+The system-wide
+.I xinitrc
+and
+.I xserverrc
+files are found in the
+.I __xinitdir__
+directory.
+.PP
+The
+.I .xinitrc
+is typically a shell script which starts many clients according to the
+user's preference.  When this shell script exits,
+.I startx
+kills the server and performs any other session shutdown needed.
+Most of the clients started by
+.I .xinitrc
+should be run in the background.  The last client should run in the
+foreground; when it exits, the session will exit.  People often choose
+a session manager, window manager, or \fIxterm\fP as the ''magic'' client.
+.SH EXAMPLE
+.PP
+Below is a sample \fI\.xinitrc\fP that starts several applications and
+leaves the window manager running as the ''last'' application.  Assuming that
+the window manager has been configured properly, the user
+then chooses the ''Exit'' menu item to shut down X.
+.sp
+.in +4
+.nf
+xrdb \-load $HOME/.Xresources
+xsetroot \-solid gray &
+xbiff \-geometry \-430+5 &
+oclock \-geometry 75x75\-0\-0 &
+xload \-geometry \-80\-0 &
+xterm \-geometry +0+60 \-ls &
+xterm \-geometry +0\-100 &
+xconsole \-geometry \-0+0 \-fn 5x7 &
+exec twm
+.fi
+.in -4
+.SH "ENVIRONMENT VARIABLES"
+.TP 25
+DISPLAY
+This variable gets set to the name of the display to which clients should
+connect.  Note that this gets
+.IR set ,
+not read.
+.TP 25
+XAUTHORITY
+This variable, if not already defined, gets set to
+.IR $(HOME)/.Xauthority .
+This is to prevent the X server, if not given the
+.I \-auth
+argument, from automatically setting up insecure host-based authentication
+for the local host.  See the
+.IR Xserver (1)
+and
+.IR Xsecurity (__miscmansuffix__)
+manual pages for more information on X client/server authentication.
+.SH FILES
+#ifdef __SCOMAN__
+.TP 25
+.I $(HOME)/.startxrc
+Client to run.  Typically a shell script which runs many programs in
+the background.
+.TP 25
+.I __libdir__/sys.startxrc
+Client to use if the user has no
+.I .startxrc
+file.
+#endif
+.TP 25
+.I $(HOME)/.xinitrc
+Client to run.  Typically a shell script which runs many programs in
+the background.
+.TP 25
+.I $(HOME)/.xserverrc
+Server to run.  The default is
+.IR X .
+.TP 25
+.I __xinitdir__/xinitrc
+Client to run if the user has no
+.I .xinitrc
+file.
+.TP 25
+.I __xinitdir__/xserverrc
+Server to run if the user has no
+.I .xserverrc
+file.
+.SH "SEE ALSO"
+.IR xinit (1),
+.IR Xserver (1),
+.IR __XSERVERNAME__ (1)
diff --git a/xinit.c b/xinit.c
new file mode 100755 (executable)
index 0000000..8c4dbc9
--- /dev/null
+++ b/xinit.c
@@ -0,0 +1,879 @@
+/* $Xorg: xinit.c,v 1.5 2001/02/09 02:05:49 xorgcvs Exp $ */
+/* $XdotOrg: $ */
+
+/*
+
+Copyright 1986, 1998  The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+*/
+/* $XFree86: xc/programs/xinit/xinit.c,v 3.32 2002/05/31 18:46:13 dawes Exp $ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <X11/Xlib.h>
+#include <X11/Xos.h>
+#include <X11/Xatom.h>
+#include <stdio.h>
+#include <ctype.h>
+#include <stdint.h>
+
+#ifdef X_POSIX_C_SOURCE
+#define _POSIX_C_SOURCE X_POSIX_C_SOURCE
+#include <signal.h>
+#undef _POSIX_C_SOURCE
+#else
+#if defined(X_NOT_POSIX) || defined(_POSIX_SOURCE)
+#include <signal.h>
+#else
+#define _POSIX_SOURCE
+#include <signal.h>
+#undef _POSIX_SOURCE
+#endif
+#endif
+
+#ifndef SYSV
+#include <sys/wait.h>
+#endif
+#include <errno.h>
+#include <setjmp.h>
+#include <stdarg.h>
+
+#if !defined(SIGCHLD) && defined(SIGCLD)
+#define SIGCHLD SIGCLD
+#endif
+#ifdef __UNIXOS2__
+#define INCL_DOSMODULEMGR
+#include <os2.h>
+#define setpgid(a,b)
+#define setuid(a)
+#define setgid(a)
+#define SHELL "cmd.exe"
+#define XINITRC "xinitrc.cmd"
+#define XSERVERRC "xservrc.cmd"
+char **envsave;        /* to circumvent an UNIXOS2 problem */
+#define environ envsave
+#endif
+
+#include <stdlib.h>
+extern char **environ;
+char **newenviron = NULL;
+char **newenvironlast = NULL;
+
+#ifndef SHELL
+#define SHELL "sh"
+#endif
+
+#ifndef HAVE_WORKING_VFORK
+# ifndef vfork
+#  define vfork() fork()
+# endif
+#else
+# ifdef HAVE_VFORK_H
+#  include <vfork.h>
+# endif
+#endif
+
+/* A/UX setpgid incorrectly removes the controlling terminal.
+   Per Posix, only setsid should do that. */
+#ifdef macII
+#define setpgid setpgrp
+#endif
+
+#ifdef __UNIXOS2__
+#define HAS_EXECVPE
+#endif
+
+#ifdef HAS_EXECVPE
+#define Execvpe(path, argv, envp) execvpe(path, argv, envp)
+#else
+#define Execvpe(path, argv, envp) execvp(path, argv)
+#endif
+
+const char *bindir = BINDIR;
+const char * const server_names[] = {
+#if defined(ultrix) && defined(mips)
+    "Xdec        Digital color display on DECstation",
+#endif
+#if defined(sun) && !defined(XORG)     /* Sun */
+    "Xsun        Sun BW2, CG2, CG3, CG4, or CG6 on Sun 2, 3, 4, or 386i",
+    "Xsunmono    Sun BW2 on Sun 2, 3, 4, or 386i ",
+    "Xsun24      Sun BW2, CG2, CG3, CG4, CG6, or CG8 on Sun 4",
+#endif
+#ifdef hpux                            /* HP */
+    "Xhp         HP monochrome and colors displays on 9000/300 series",
+#endif
+#ifdef ibm                             /* IBM */
+    "Xibm        IBM AED, APA, 8514a, megapel, VGA displays on PC/RT",
+#endif
+#ifdef macII                           /* MacII */
+    "XmacII      Apple monochrome display on Macintosh II",
+#endif
+#ifdef XFREE86
+    "XFree86     XFree86 displays",
+#endif
+#ifdef XORG
+    "Xorg        Common X server for most displays",
+#endif
+#ifdef __APPLE__
+    "Xquartz     Mac OSX Quartz displays.",
+#endif
+    "Xvfb        Virtual frame buffer",
+    "Xfake       kdrive-based virtual frame buffer",
+    "Xnest       X server nested in a window on another X server",
+    "Xephyr      kdrive-based nested X server",
+    NULL};
+
+#ifndef XINITRC
+#define XINITRC ".xinitrc"
+#endif
+char xinitrcbuf[256];
+
+#ifndef XSERVERRC
+#define XSERVERRC ".xserverrc"
+#endif
+char xserverrcbuf[256];
+
+#define        TRUE            1
+#define        FALSE           0
+#define        OK_EXIT         0
+#define        ERR_EXIT        1
+
+static char *default_server = "X";
+static char *default_display = ":0";           /* choose most efficient */
+static char *default_client[] = {"xterm", "-geometry", "+1+1", "-n", "login", NULL};
+static char *serverargv[100];
+static char *clientargv[100];
+static char **server = serverargv + 2;         /* make sure room for sh .xserverrc args */
+static char **client = clientargv + 2;         /* make sure room for sh .xinitrc args */
+static char *displayNum = NULL;
+static char *program = NULL;
+static Display *xd = NULL;                     /* server connection */
+#ifndef SYSV
+#if defined(__CYGWIN__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(CSRG_BASED) || defined(__UNIXOS2__) || defined(Lynx) || defined(__APPLE__)
+int status;
+#else
+union wait     status;
+#endif
+#endif /* SYSV */
+int serverpid = -1;
+int clientpid = -1;
+volatile int gotSignal = 0;
+
+static void Execute ( char **vec, char **envp );
+static Bool waitforserver ( void );
+static Bool processTimeout ( int timeout, char *string );
+static int startServer ( char *server[] );
+static int startClient ( char *client[] );
+static int ignorexio ( Display *dpy );
+static void shutdown ( void );
+static void set_environment ( void );
+static void Fatal(char *msg);
+static void Error ( char *fmt, ... );
+
+#ifdef RETSIGTYPE /* autoconf AC_TYPE_SIGNAL */
+# define SIGVAL RETSIGTYPE
+#endif /* RETSIGTYPE */
+
+static SIGVAL
+sigCatch(int sig)
+{
+       /* On system with POSIX signals, just interrupt the system call */
+       gotSignal = sig;
+}
+
+static SIGVAL
+sigAlarm(int sig)
+{
+#if defined(SYSV) || defined(SVR4) || defined(linux) || defined(__UNIXOS2__) || defined(__APPLE__)
+       signal (sig, sigAlarm);
+#endif
+}
+
+static SIGVAL
+sigUsr1(int sig)
+{
+#if defined(SYSV) || defined(SVR4) || defined(linux) || defined(__UNIXOS2__) || defined(__APPLE__)
+       signal (sig, sigUsr1);
+#endif
+}
+
+static void
+Execute(char **vec,            /* has room from up above */
+       char **envp)
+{
+    Execvpe (vec[0], vec, envp);
+#ifndef __UNIXOS2__
+    if (access (vec[0], R_OK) == 0) {
+       vec--;                          /* back it up to stuff shell in */
+       vec[0] = SHELL;
+       Execvpe (vec[0], vec, envp);
+    }
+#endif
+    return;
+}
+
+#ifndef __UNIXOS2__
+int
+main(int argc, char *argv[])
+#else
+int
+main(int argc, char *argv[], char *envp[])
+#endif
+{
+       register char **sptr = server;
+       register char **cptr = client;
+       register char **ptr;
+       int pid;
+       int client_given = 0, server_given = 0;
+       int client_args_given = 0, server_args_given = 0;
+       int start_of_client_args, start_of_server_args;
+       struct sigaction sa;
+
+#ifdef __UNIXOS2__
+       envsave = envp; /* circumvent an EMX problem */
+
+       /* Check whether the system will run at all */
+       if (_emx_rev < 50) {
+               APIRET rc;
+               HMODULE hmod;
+               char name[CCHMAXPATH];
+               char fail[9];
+               fputs ("This program requires emx.dll revision 50 (0.9c) "
+                       "or later.\n", stderr);
+               rc = DosLoadModule (fail, sizeof (fail), "emx", &hmod);
+               if (rc == 0) {
+                       rc = DosQueryModuleName (hmod, sizeof (name), name);
+                       if (rc == 0)
+                               fprintf (stderr, "Please delete or update `%s'.\n", name);
+                       DosFreeModule (hmod);
+               }
+               exit (2);
+       }
+#endif
+       program = *argv++;
+       argc--;
+       /*
+        * copy the client args.
+        */
+       if (argc == 0 ||
+#ifndef __UNIXOS2__
+           (**argv != '/' && **argv != '.')) {
+#else
+           (**argv != '/' && **argv != '\\' && **argv != '.' &&
+            !(isalpha(**argv) && (*argv)[1]==':'))) {
+#endif
+               for (ptr = default_client; *ptr; )
+                       *cptr++ = *ptr++;
+#ifdef sun
+               /*
+                * If running on a sun, and if WINDOW_PARENT isn't defined,
+                * that means SunWindows isn't running, so we should pass
+                * the -C flag to xterm so that it sets up a console.
+                */
+               if ( getenv("WINDOW_PARENT") == NULL )
+                   *cptr++ = "-C";
+#endif /* sun */
+       } else {
+               client_given = 1;
+       }
+       start_of_client_args = (cptr - client);
+       while (argc && strcmp(*argv, "--")) {
+               client_args_given++;
+               *cptr++ = *argv++;
+               argc--;
+       }
+       *cptr = NULL;
+       if (argc) {
+               argv++;
+               argc--;
+       }
+
+       /*
+        * Copy the server args.
+        */
+       if (argc == 0 ||
+#ifndef __UNIXOS2__
+           (**argv != '/' && **argv != '.')) {
+               *sptr++ = default_server;
+#else
+           (**argv != '/' && **argv != '\\' && **argv != '.' &&
+            !(isalpha(**argv) && (*argv)[1]==':'))) {
+               *sptr = getenv("XSERVER");
+               if (!*sptr) {
+                       Error("No XSERVER environment variable set");
+                       exit(1);
+               }
+               *sptr++;
+#endif
+       } else {
+               server_given = 1;
+               *sptr++ = *argv++;
+               argc--;
+       }
+       if (argc > 0 && (argv[0][0] == ':' && isdigit(argv[0][1])))
+               displayNum = *argv;
+       else
+               displayNum = *sptr++ = default_display;
+
+       start_of_server_args = (sptr - server);
+       while (--argc >= 0) {
+               server_args_given++;
+               *sptr++ = *argv++;
+       }
+       *sptr = NULL;
+
+       /*
+        * if no client arguments given, check for a startup file and copy
+        * that into the argument list
+        */
+       if (!client_given) {
+           char *cp;
+           Bool required = False;
+
+           xinitrcbuf[0] = '\0';
+           if ((cp = getenv ("XINITRC")) != NULL) {
+               (void) snprintf (xinitrcbuf, sizeof(xinitrcbuf), "%s", cp);
+               required = True;
+           } else if ((cp = getenv ("HOME")) != NULL) {
+               (void) snprintf (xinitrcbuf, sizeof(xinitrcbuf),
+                                "%s/%s", cp, XINITRC);
+           }
+           if (xinitrcbuf[0]) {
+               if (access (xinitrcbuf, F_OK) == 0) {
+                   client += start_of_client_args - 1;
+                   client[0] = xinitrcbuf;
+               } else if (required) {
+                   fprintf (stderr,
+                            "%s:  warning, no client init file \"%s\"\n",
+                            program, xinitrcbuf);
+               }
+           }
+       }
+
+       /*
+        * if no server arguments given, check for a startup file and copy
+        * that into the argument list
+        */
+       if (!server_given) {
+           char *cp;
+           Bool required = False;
+
+           xserverrcbuf[0] = '\0';
+           if ((cp = getenv ("XSERVERRC")) != NULL) {
+               (void) snprintf (xserverrcbuf, sizeof(xserverrcbuf), "%s", cp);
+               required = True;
+           } else if ((cp = getenv ("HOME")) != NULL) {
+               (void) snprintf (xserverrcbuf, sizeof(xserverrcbuf),
+                                "%s/%s", cp, XSERVERRC);
+           }
+           if (xserverrcbuf[0]) {
+               if (access (xserverrcbuf, F_OK) == 0) {
+                   server += start_of_server_args - 1;
+                   server[0] = xserverrcbuf;
+               } else if (required) {
+                   fprintf (stderr,
+                            "%s:  warning, no server init file \"%s\"\n",
+                            program, xserverrcbuf);
+               }
+           }
+       }
+
+       /*
+        * put the display name into the environment
+        */
+       set_environment ();
+
+       /*
+        * Start the server and client.
+        */
+#ifdef SIGCHLD
+       signal(SIGCHLD, SIG_DFL);       /* Insurance */
+#endif
+
+       /* Let those signal interrupt the wait() call in the main loop */
+       memset(&sa, 0, sizeof sa);
+       sa.sa_handler = sigCatch;
+       sigemptyset(&sa.sa_mask);
+       sa.sa_flags = 0;        /* do not set SA_RESTART */
+
+       sigaction(SIGTERM, &sa, NULL);
+       sigaction(SIGQUIT, &sa, NULL);
+       sigaction(SIGINT, &sa, NULL);
+       sigaction(SIGHUP, &sa, NULL);
+       sigaction(SIGPIPE, &sa, NULL);
+
+       signal(SIGALRM, sigAlarm);
+       signal(SIGUSR1, sigUsr1);
+       if (startServer(server) > 0
+        && startClient(client) > 0) {
+#ifdef _F_EXIT_AFTER_XORG_AND_XCLIENT_LAUNCHED_
+               exit(0);
+#endif//_F_EXIT_AFTER_XORG_AND_XCLIENT_LAUNCHED_
+               pid = -1;
+               while (pid != clientpid && pid != serverpid
+                      && gotSignal == 0
+                       )
+                       pid = wait(NULL);
+       }
+       signal(SIGTERM, SIG_IGN);
+       signal(SIGQUIT, SIG_IGN);
+       signal(SIGINT, SIG_IGN);
+       signal(SIGHUP, SIG_IGN);
+       signal(SIGPIPE, SIG_IGN);
+
+       shutdown();
+
+       if (gotSignal != 0) {
+               Error("unexpected signal %d.\n", gotSignal);
+               exit(ERR_EXIT);
+       }
+
+       if (serverpid < 0 )
+               Fatal("Server error.\n");
+       if (clientpid < 0)
+               Fatal("Client error.\n");
+       exit(OK_EXIT);
+}
+
+
+/*
+ *     waitforserver - wait for X server to start up
+ */
+static Bool
+waitforserver(void)
+{
+       int     ncycles  = 120;         /* # of cycles to wait */
+       int     cycles;                 /* Wait cycle count */
+
+       for (cycles = 0; cycles < ncycles; cycles++) {
+               if ((xd = XOpenDisplay(displayNum))) {
+                       return(TRUE);
+               }
+               else {
+#define MSG "X server to begin accepting connections"
+                   if (!processTimeout (1, MSG))
+                     break;
+#undef MSG
+               }
+       }
+
+       fprintf (stderr, "giving up.\r\n");
+       return(FALSE);
+}
+
+/*
+ * return TRUE if we timeout waiting for pid to exit, FALSE otherwise.
+ */
+static Bool
+processTimeout(int timeout, char *string)
+{
+       int     i = 0, pidfound = -1;
+       static char     *laststring;
+
+       for (;;) {
+#if defined(SYSV) || defined(__UNIXOS2__)
+               alarm(1);
+               if ((pidfound = wait(NULL)) == serverpid)
+                       break;
+               alarm(0);
+#else /* SYSV */
+#if defined(SVR4) || defined(_POSIX_SOURCE) || defined(Lynx) || defined(__APPLE__)
+               if ((pidfound = waitpid(serverpid, &status, WNOHANG)) == serverpid)
+                       break;
+#else
+               if ((pidfound = wait3(&status, WNOHANG, NULL)) == serverpid)
+                       break;
+#endif
+#endif /* SYSV */
+               if (timeout) {
+                       if (i == 0 && string != laststring)
+                               fprintf(stderr, "\r\nwaiting for %s ", string);
+                       else
+                               fprintf(stderr, ".");
+                       fflush(stderr);
+               }
+               if (timeout)
+                       sleep (1);
+               if (++i > timeout)
+                       break;
+       }
+       if ( i > 0 ) fputc( '\n', stderr );     /* tidy up after message */
+       laststring = string;
+       return( serverpid != pidfound );
+}
+
+static int
+startServer(char *server[])
+{
+       sigset_t mask, old;
+#ifdef __UNIXOS2__
+       sigset_t pendings;
+#endif
+
+       sigemptyset(&mask);
+       sigaddset(&mask, SIGUSR1);
+       sigprocmask(SIG_BLOCK, &mask, &old);
+
+       serverpid = fork();
+
+       switch(serverpid) {
+       case 0:
+               /* Unblock */
+               sigprocmask(SIG_SETMASK, &old, NULL);
+
+               /*
+                * don't hang on read/write to control tty
+                */
+#ifdef SIGTTIN
+               (void) signal(SIGTTIN, SIG_IGN);
+#endif
+#ifdef SIGTTOU
+               (void) signal(SIGTTOU, SIG_IGN);
+#endif
+               /*
+                * ignore SIGUSR1 in child.  The server
+                * will notice this and send SIGUSR1 back
+                * at xinit when ready to accept connections
+                */
+               (void) signal(SIGUSR1, SIG_IGN);
+               /*
+                * prevent server from getting sighup from vhangup()
+                * if client is xterm -L
+                */
+#ifndef __UNIXOS2__
+               setpgid(0,getpid());
+#endif
+               Execute (server, environ);
+               Error ("no server \"%s\" in PATH\n", server[0]);
+               {
+                   const char * const *cpp;
+
+                   fprintf (stderr,
+"\nUse the -- option, or make sure that %s is in your path and\n",
+                            bindir);
+                   fprintf (stderr,
+"that \"%s\" is a program or a link to the right type of server\n",
+                            server[0]);
+                   fprintf (stderr,
+"for your display.  Possible server names include:\n\n");
+                   for (cpp = server_names; *cpp; cpp++) {
+                       fprintf (stderr, "    %s\n", *cpp);
+                   }
+                   fprintf (stderr, "\n");
+               }
+               exit (ERR_EXIT);
+
+               break;
+       case -1:
+               break;
+       default:
+               /*
+                * don't nice server
+                */
+#ifdef PRIO_PROCESS
+               setpriority( PRIO_PROCESS, serverpid, -1 );
+#endif
+
+               errno = 0;
+               if (! processTimeout(0, "")) {
+                       serverpid = -1;
+                       break;
+               }
+               /*
+                * kludge to avoid race with TCP, giving server time to
+                * set his socket options before we try to open it,
+                * either use the 15 second timeout, or await SIGUSR1.
+                *
+                * If your machine is substantially slower than 15 seconds,
+                * you can easily adjust this value.
+                */
+               alarm (15);
+
+#ifdef __UNIXOS2__
+               /*
+                * fg2003/05/06: work around a problem in EMX: sigsuspend()
+                * does not deliver pending signals when called but when
+                * returning; so if SIGUSR1 has already been sent by the
+                * server, we would still have to await SIGALRM
+                */
+               sigemptyset(&pendings);
+               sigpending(&pendings);
+               if (!sigismember(&pendings, SIGUSR1))
+#endif /* __UNIXOS2__ */
+               sigsuspend(&old);
+               alarm (0);
+               sigprocmask(SIG_SETMASK, &old, NULL);
+
+               if (waitforserver() == 0) {
+                       Error("unable to connect to X server\r\n");
+                       shutdown();
+                       serverpid = -1;
+               }
+               break;
+       }
+
+       return(serverpid);
+}
+
+static void
+setWindowPath(void)
+{
+       /* setting WINDOWPATH for clients */
+       Atom prop;
+       Atom actualtype;
+       int actualformat;
+       unsigned long nitems;
+       unsigned long bytes_after;
+       unsigned char *buf;
+       const char *windowpath;
+       char *newwindowpath;
+       unsigned long num;
+       char nums[10];
+       int numn;
+       size_t len;
+       prop = XInternAtom(xd, "XFree86_VT", False);
+       if (prop == None) {
+#ifdef DEBUG
+               fprintf(stderr, "no XFree86_VT atom\n");
+#endif
+               return;
+       }
+       if (XGetWindowProperty(xd, DefaultRootWindow(xd), prop, 0, 1,
+               False, AnyPropertyType, &actualtype, &actualformat,
+               &nitems, &bytes_after, &buf)) {
+#ifdef DEBUG
+               fprintf(stderr, "no XFree86_VT property\n");
+#endif
+               return;
+       }
+       if (nitems != 1) {
+#ifdef DEBUG
+               fprintf(stderr, "%lu items in XFree86_VT property!\n", nitems);
+#endif
+               XFree(buf);
+               return;
+       }
+       switch (actualtype) {
+       case XA_CARDINAL:
+       case XA_INTEGER:
+       case XA_WINDOW:
+               switch (actualformat) {
+               case  8:
+                       num = (*(uint8_t  *)(void *)buf);
+                       break;
+               case 16:
+                       num = (*(uint16_t *)(void *)buf);
+                       break;
+               case 32:
+                       num = (*(uint32_t *)(void *)buf);
+                       break;
+               default:
+#ifdef DEBUG
+                       fprintf(stderr, "format %d in XFree86_VT property!\n", actualformat);
+#endif
+                       XFree(buf);
+                       return;
+               }
+               break;
+       default:
+#ifdef DEBUG
+               fprintf(stderr, "type %lx in XFree86_VT property!\n", actualtype);
+#endif
+               XFree(buf);
+               return;
+       }
+       XFree(buf);
+       windowpath = getenv("WINDOWPATH");
+       numn = snprintf(nums, sizeof(nums), "%lu", num);
+       if (!windowpath) {
+               len = 10 + 1 + numn + 1;
+               newwindowpath = malloc(len);
+               if (newwindowpath == NULL)
+                   return;
+               snprintf(newwindowpath, len, "WINDOWPATH=%s", nums);
+       } else {
+               len = 10 + 1 + strlen(windowpath) + 1 + numn + 1;
+               newwindowpath = malloc(len);
+               if (newwindowpath == NULL)
+                   return;
+               snprintf(newwindowpath, len, "WINDOWPATH=%s:%s",
+                        windowpath, nums);
+       }
+       *newenvironlast++ = newwindowpath;
+       *newenvironlast = NULL;
+}
+
+static int
+startClient(char *client[])
+{
+       setWindowPath();
+       if ((clientpid = vfork()) == 0) {
+               if (setuid(getuid()) == -1) {
+                       Error("cannot change uid: %s\n", strerror(errno));
+                       _exit(ERR_EXIT);
+               }
+               setpgid(0, getpid());
+               environ = newenviron;
+#ifdef __UNIXOS2__
+#undef environ
+               environ = newenviron;
+               client[0] = (char*)__XOS2RedirRoot(client[0]);
+#endif
+               Execute (client,newenviron);
+               Error ("no program named \"%s\" in PATH\r\n", client[0]);
+               fprintf (stderr,
+"\nSpecify a program on the command line or make sure that %s\r\n", bindir);
+               fprintf (stderr,
+"is in your path.\r\n");
+               fprintf (stderr, "\n");
+               _exit (ERR_EXIT);
+       }
+       return (clientpid);
+}
+
+#ifndef HAVE_KILLPG
+#define killpg(pgrp, sig) kill(-(pgrp), sig)
+#endif
+
+static jmp_buf close_env;
+
+static int
+ignorexio(Display *dpy)
+{
+    fprintf (stderr, "%s:  connection to X server lost.\r\n", program);
+    longjmp (close_env, 1);
+    /*NOTREACHED*/
+    return 0;
+}
+
+static void
+shutdown(void)
+{
+       /* have kept display opened, so close it now */
+       if (clientpid > 0) {
+               XSetIOErrorHandler (ignorexio);
+               if (! setjmp(close_env)) {
+                   XCloseDisplay(xd);
+               }
+
+               /* HUP all local clients to allow them to clean up */
+               errno = 0;
+               if ((killpg(clientpid, SIGHUP) != 0) &&
+                   (errno != ESRCH))
+                       Error("can't send HUP to process group %d\r\n",
+                               clientpid);
+       }
+
+       if (serverpid < 0)
+               return;
+       errno = 0;
+       if (killpg(serverpid, SIGTERM) < 0) {
+               if (errno == EPERM)
+                       Fatal("Can't kill X server\r\n");
+               if (errno == ESRCH)
+                       return;
+       }
+       if (! processTimeout(10, "X server to shut down")) {
+           fprintf (stderr, "\r\n");
+           return;
+       }
+
+       fprintf(stderr,
+       "\r\n%s:  X server slow to shut down, sending KILL signal.\r\n",
+               program);
+       fflush(stderr);
+       errno = 0;
+       if (killpg(serverpid, SIGKILL) < 0) {
+               if (errno == ESRCH)
+                       return;
+       }
+       if (processTimeout(3, "server to die")) {
+               fprintf (stderr, "\r\n");
+               Fatal("Can't kill server\r\n");
+       }
+       fprintf (stderr, "\r\n");
+       return;
+}
+
+
+/*
+ * make a new copy of environment that has room for DISPLAY
+ */
+
+static void
+set_environment(void)
+{
+    int nenvvars;
+    char **newPtr, **oldPtr;
+    static char displaybuf[512];
+
+    /* count number of environment variables */
+    for (oldPtr = environ; *oldPtr; oldPtr++) ;
+
+    nenvvars = (oldPtr - environ);
+    newenviron = (char **) malloc ((nenvvars + 3) * sizeof(char **));
+    if (!newenviron) {
+       fprintf (stderr,
+                "%s:  unable to allocate %d pointers for environment\n",
+                program, nenvvars + 3);
+       exit (1);
+    }
+
+    /* put DISPLAY=displayname as first element */
+    snprintf (displaybuf, sizeof(displaybuf), "DISPLAY=%s", displayNum);
+    newPtr = newenviron;
+    *newPtr++ = displaybuf;
+
+    /* copy pointers to other variables */
+    for (oldPtr = environ; *oldPtr; oldPtr++) {
+       if (strncmp (*oldPtr, "DISPLAY=", 8) != 0
+        && strncmp (*oldPtr, "WINDOWPATH=", 11) != 0) {
+           *newPtr++ = *oldPtr;
+       }
+    }
+    *newPtr = NULL;
+    newenvironlast=newPtr;
+    return;
+}
+
+static void
+Fatal(char *msg)
+{
+       Error(msg);
+       exit(ERR_EXIT);
+}
+
+static void
+Error(char *fmt, ...)
+{
+        va_list ap;
+
+       va_start(ap, fmt);
+       fprintf(stderr, "%s:  ", program);
+       if (errno > 0)
+         fprintf (stderr, "%s (errno %d):  ", strerror(errno), errno);
+       vfprintf(stderr, fmt, ap);
+       va_end(ap);
+}
diff --git a/xinit.def b/xinit.def
new file mode 100644 (file)
index 0000000..92c4176
--- /dev/null
+++ b/xinit.def
@@ -0,0 +1,4 @@
+NAME xinit NOTWINDOWCOMPAT
+DESCRIPTION "@#XFREE86:4.4.0#@ $XFree86: xc/programs/xinit/xinit.def,v 3.2 2002/05/31 18:46:13 dawes Exp $"
+PROTMODE
+EXETYPE OS2
diff --git a/xinit.man b/xinit.man
new file mode 100644 (file)
index 0000000..a60187a
--- /dev/null
+++ b/xinit.man
@@ -0,0 +1,200 @@
+.\" $Xorg: xinit.man,v 1.4 2001/02/09 02:05:49 xorgcvs Exp $
+.\" Copyright 1988, 1998  The Open Group
+.\" 
+.\" Permission to use, copy, modify, distribute, and sell this software and its
+.\" documentation for any purpose is hereby granted without fee, provided that
+.\" the above copyright notice appear in all copies and that both that
+.\" copyright notice and this permission notice appear in supporting
+.\" documentation.
+.\" 
+.\" The above copyright notice and this permission notice shall be included
+.\" in all copies or substantial portions of the Software.
+.\" 
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+.\" IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+.\" OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+.\" ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+.\" OTHER DEALINGS IN THE SOFTWARE.
+.\" 
+.\" Except as contained in this notice, the name of The Open Group shall
+.\" not be used in advertising or otherwise to promote the sale, use or
+.\" other dealings in this Software without prior written authorization
+.\" from The Open Group.
+.\" 
+.\" $XFree86: xc/programs/xinit/xinit.man,v 3.9 2001/02/07 23:25:56 dawes Exp $
+.\" 
+.TH XINIT 1 __xorgversion__
+.SH NAME
+xinit \- X Window System initializer
+.SH SYNOPSIS
+.B xinit
+[ [
+.I client
+]
+.I options
+\&\.\|.\|. ] [
+.B \-\^\-
+[
+.I server
+] [
+.I display
+]
+.I options
+\&.\|.\|. ]
+.SH DESCRIPTION
+The \fIxinit\fP program is used to start the X Window System server and a first
+client program on systems that
+cannot start X directly from \fI/etc/init\fP or in environments
+that use multiple window systems.  When this first client exits, 
+\fIxinit\fP will kill the X server and then terminate.
+.PP
+If no specific client program is given on the command line,
+\fIxinit\fP will look for a file in the user's home directory
+called \fI.xinitrc\fP to run as a shell script to start up client programs.
+If no such file exists, \fIxinit\fP will use the following as a default:
+.sp
+       xterm  \-geometry  +1+1  \-n  login  \-display  :0
+.sp
+.PP
+If no specific server program is given on the command line,
+\fIxinit\fP will look for a file in the user's home directory
+called \fI.xserverrc\fP to run as a shell script to start up the server.
+If no such file exists, \fIxinit\fP will use the following as a default:
+.sp
+       X  :0
+.sp
+Note that this assumes that there is a program named \fIX\fP in the current
+search path.  However, servers are usually named \fIXdisplaytype\fP where 
+\fIdisplaytype\fP is the type of graphics display which is driven by this
+server.  The site administrator should, therefore, make a link to the 
+appropriate type of server on the machine, or create a shell script that
+runs \fIxinit\fP with the appropriate server.
+.PP
+Note, when using a \fI.xserverrc\fP script be sure to ``exec'' the real X server.
+Failing to do this can make the X server slow to start and exit.  For example:
+.sp
+       exec Xdisplaytype
+.PP
+An important point is that programs which are run by \fI\.xinitrc\fP
+should be run in the background if they do 
+not exit right away, so that they don't prevent other programs from
+starting up.
+However, the last long-lived program started (usually
+a window manager or terminal emulator) should be
+left in the foreground so that the script won't exit (which
+indicates that the user is done and that \fIxinit\fP should exit).
+.PP
+An alternate client and/or server may be specified on the
+command line.  The desired client program and its arguments should be given
+as the first command line arguments to \fIxinit\fP.  To specify a particular
+server command line, append a double dash (\-\^\-) to the \fIxinit\fP command
+line (after any client and arguments) followed by the desired server command.
+.PP
+Both the client program name and the server program name must begin with a
+slash (/) or a period (.).  Otherwise, they are treated as an arguments to be
+appended to their respective startup lines.  This makes it possible to 
+add arguments (for example, foreground and background colors) without 
+having to retype the whole command line.
+.PP
+If an explicit server name is not given and the first argument following the
+double dash (\-\^\-) is a colon followed by a digit, \fIxinit\fP will use that 
+number as the display 
+number instead of zero.  All remaining arguments are appended to the server 
+command line.
+.PP
+.SH EXAMPLES
+Below are several examples of how command line arguments in \fIxinit\fP are
+used.
+.TP 8
+.B "xinit"
+This will start up a server named \fIX\fP and run the user's \fI\.xinitrc\fP,
+if it exists, or else start an \fIxterm\fP.
+.TP 8
+.B "xinit \-\^\- /usr/local/bin/Xqdss  :1"
+This is how one could start a specific type of server on an alternate display.
+.TP 8
+.B "xinit \-geometry =80x65+10+10 \-fn 8x13 \-j \-fg white \-bg navy"
+This will start up a server named \fIX\fP, and will append the given
+arguments to the default \fIxterm\fP command.  It will ignore \fI\.xinitrc\fP.
+.TP 8
+.B "xinit \-e widgets \-\^\- ./Xsun \-l \-c"
+This will use the command \fI\.\/Xsun \-l \-c\fP to start the server and will
+append the arguments \fI\-e widgets\fP to the default \fIxterm\fP command.
+.TP 8
+.B "xinit /usr/ucb/rsh fasthost cpupig \-display ws:1 \-\^\-  :1 \-a 2 \-t 5"
+This will start a server named \fIX\fP on display 1 with the arguments
+\fI\-a 2 \-t 5\fP.  It will then start a remote shell on the machine
+\fBfasthost\fP in which it will run the command \fIcpupig\fP, telling it
+to display back on the local workstation.
+.PP
+Below is a sample \fI\.xinitrc\fP that starts a clock, several terminals, and
+leaves the window manager running as the ``last'' application.  Assuming that
+the window manager has been configured properly, the user
+then chooses the ``Exit'' menu item to shut down X.
+.sp
+.in +8
+.nf
+xrdb \-load $HOME/.Xresources
+xsetroot \-solid gray &
+xclock \-g 50x50\-0+0 \-bw 0 &
+xload \-g 50x50\-50+0 \-bw 0 &
+xterm \-g 80x24+0+0 &
+xterm \-g 80x24+0\-0 &
+twm
+.fi
+.in -8
+.sp
+Sites that want to create a common startup environment could simply create
+a default \fI\.xinitrc\fP that references a site-wide startup file:
+.sp
+.in +8
+.nf
+\&#!/bin/sh
+\&. /usr/local/lib/site.xinitrc
+.fi
+.in -8
+.sp
+Another approach is to write a script that starts \fIxinit\fP with a specific
+shell script.  Such scripts are usually named \fIx11\fP, \fIxstart\fP, or
+\fIstartx\fP and are a convenient way to provide a simple interface for
+novice users:
+.sp
+.in +8
+.nf
+\&#!/bin/sh
+xinit /usr/local/lib/site.xinitrc \-\^\- __bindir__/X -br
+.fi
+.in -8
+.sp
+.SH "ENVIRONMENT VARIABLES"
+.TP 15
+.B DISPLAY
+This variable gets set to the name of the display to which clients should
+connect.
+.TP 15
+.B XINITRC
+This variable specifies an init file containing shell commands to start up the
+initial windows.  By default, \fI\.xinitrc\fP in the home directory will be 
+used.
+.SH FILES
+.TP 15
+.I .xinitrc
+default client script
+.TP 15
+.I xterm
+client to run if \fI.xinitrc\fP does not exist
+.TP 15
+.I .xserverrc
+default server script
+.TP 15
+.I X
+server to run if \fI.xserverrc\fP does not exist
+.SH "SEE ALSO"
+.IR X (__miscmansuffix__),
+.IR startx (1),
+.IR Xserver (1),
+.IR xterm (1)
+.SH AUTHOR
+Bob Scheifler, MIT Laboratory for Computer Science
diff --git a/xinitrc.cmd b/xinitrc.cmd
new file mode 100644 (file)
index 0000000..f40a7b7
--- /dev/null
@@ -0,0 +1,62 @@
+/* OS/2 REXX */
+/* $XFree86: xc/programs/xinit/xinitrc.cmd,v 3.5 1997/01/27 08:26:14 dawes Exp $ */
+'@echo off'
+env = 'OS2ENVIRONMENT'
+x11root = VALUE('X11ROOT',,env)
+IF x11root = '' THEN DO
+       SAY "The environment variable X11ROOT is not set. X/OS2 won't run without it."
+       EXIT
+END
+home = VALUE('HOME',,env)
+IF home = '' THEN home = x11root
+
+userresources = home'\.Xresources'
+usermodmap    = home'\.Xmodmap'
+sysresources  = x11root'\usr\X11R6\lib\X11\xinit\.Xresources'
+sysmodmap     = x11root'\usr\X11R6\lib\X11\xinit\.Xmodmap'
+xbitmapdir    = x11root'\usr\X11R6\include\X11\bitmaps'
+manpath       = VALUE('MANPATH',,env)
+
+/* merge in defaults */
+IF exists(sysresources) THEN
+       'xrdb -merge 'sysresources
+
+IF exists(sysmodmap) THEN
+       'xmodmap 'sysmodmap
+
+IF exists(userresources) THEN
+       'xrdb -merge 'userresources
+
+IF exists(usermodmap) THEN
+       'xmodmap 'usermodmap
+
+/* start some nice :-) test programs */
+'xsetroot -bitmap 'xbitmapdir'\xos2'
+/* also try out the following ones: 
+ * 'xsetroot -bitmap 'xbitmapdir'\xfree1'
+ * 'xsetroot -bitmap 'xbitmapdir'\xfree2'
+ */
+
+/****** WARNING! *********
+ * Below some programs are started minimized, some are started detached.
+ * In general, those that spawn other shells are minimized, others may be
+ * detached. You might be tempted to run the xterm's as well as detached.
+ * This works, but leaves you with an independent xterm/cmd pair, when the 
+ * server shuts down, which you can only see in watchcat, not the process list.
+ * If you start and stop x11 multiple times, this will let you run out of
+ * PTYs, and will lead to a large number of background sessions.
+ */
+'detach xclock -update 1 -geometry 100x100-1+1'
+'start/min/n "Login Xterm" xterm -sb -geometry 80x25+0+0 -name login'
+IF manpath \= '' THEN
+       'detach xman -geometry 100x100-105+1'
+/* 'startx/min/n "Xterm 1" xterm -sb -geometry 80x50+494+51' */
+/* 'startx/min/n "Xterm 2" xterm -sb -geometry 80x20+494-0' */
+'twm'
+
+EXIT
+
+exists:
+'DIR "'arg(1)'" >nul 2>&1'
+if rc = 0 THEN RETURN 1
+RETURN 0
diff --git a/xinitrc.cpp b/xinitrc.cpp
new file mode 100644 (file)
index 0000000..5643340
--- /dev/null
@@ -0,0 +1,103 @@
+XCOMM!SHELL_CMD
+XCOMM $Xorg: xinitrc.cpp,v 1.3 2000/08/17 19:54:30 cpqbld Exp $
+
+userresources=$HOME/.Xresources
+usermodmap=$HOME/.Xmodmap
+sysresources=XINITDIR/.Xresources
+sysmodmap=XINITDIR/.Xmodmap
+
+XCOMM merge in defaults and keymaps
+
+if [ -f $sysresources ]; then
+#ifdef __APPLE__
+    if [ -x /usr/bin/cpp ] ; then
+        XRDB -merge $sysresources
+    else
+        XRDB -nocpp -merge $sysresources
+    fi
+#else
+    XRDB -merge $sysresources
+#endif
+fi
+
+if [ -f $sysmodmap ]; then
+    XMODMAP $sysmodmap
+fi
+
+if [ -f "$userresources" ]; then
+#ifdef __APPLE__
+    if [ -x /usr/bin/cpp ] ; then
+        XRDB -merge "$userresources"
+    else
+        XRDB -nocpp -merge "$userresources"
+    fi
+#else
+    XRDB -merge "$userresources"
+#endif
+fi
+
+if [ -f "$usermodmap" ]; then
+    XMODMAP "$usermodmap"
+fi
+
+XCOMM start some nice programs
+
+#if defined(__SCO__) || defined(__UNIXWARE__)
+if [ -r /etc/default/xdesktops ]; then
+  . /etc/default/xdesktops
+fi
+
+if [ -r $HOME/.x11rc ]; then
+  . $HOME/.x11rc
+else
+  if [ -r /etc/default/X11 ]; then
+  . /etc/default/X11
+  fi
+fi
+
+#if defined(__SCO__)
+if [ -n "$XSESSION" ]; then
+  case "$XSESSION" in
+    [Yy][Ee][Ss])
+      [ -x /usr/bin/X11/scosession ] && exec /usr/bin/X11/scosession
+      ;;
+  esac
+fi
+
+if [ -n "$XDESKTOP" ]; then
+  exec `eval echo $"$XDESKTOP"`
+else
+  if [ -x /usr/bin/X11/pmwm -a -x /usr/bin/X11/scoterm ]; then
+    /usr/bin/X11/scoterm 2> /dev/null &
+    exec /usr/bin/X11/pmwm    2> /dev/null
+  fi
+fi
+#elif defined(__UNIXWARE__)
+if [ -n "$XDESKTOP" ]; then
+  exec `eval echo $"$XDESKTOP"`
+else
+  if [ -x /usr/X/bin/pmwm ]; then
+    exec /usr/X/bin/pmwm    2> /dev/null
+  fi
+fi
+#endif
+
+XCOMM This is the fallback case if nothing else is executed above
+#endif /* !defined(__SCO__)  && !defined(__UNIXWARE__) */
+
+#ifdef __APPLE__
+
+if [ -d XINITDIR/xinitrc.d ] ; then
+       for f in XINITDIR/xinitrc.dXSLASHGLOB.sh ; do
+               [ -x "$f" ] && . "$f"
+       done
+       unset f
+fi
+
+#endif
+
+TWM &
+XCLOCK -geometry 50x50-1+1 &
+XTERM -geometry 80x50+494+51 &
+XTERM -geometry 80x20+494-0 &
+exec XTERM -geometry 80x66+0+0 -name login