Initial checkin of libvncserver external library

Change-Id: Ie7c0947e3184490a566a63981ca9baaad2fbcaa3
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..a5d0a89
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,237 @@
+0.9.9
+   - Overall changes:
+     * Added noVNC HTML5 VNC viewer (http://kanaka.github.com/noVNC/) connect possibility
+       to our http server. Pure JavaScript, no Java plugin required anymore! (But a
+       recent browser...)
+     * Added a GTK+ VNC viewer example.
+
+   - LibVNCServer/LibVNCClient:
+     * Added support to build for Google Android.
+     * Complete IPv6 support in both LibVNCServer and LibVNCClient.
+
+   - LibVNCServer:
+     * Split two event-loop related functions out of the rfbProcessEvents() mechanism.
+       This is required to be able to do proper event loop integration with Qt. Idea was
+       taken from Vino's libvncserver fork.
+     * Added TightPNG (http://wiki.qemu.org/VNC_Tight_PNG) encoding support. Like the
+       original Tight encoding, this still uses JPEG, but ZLIB encoded rects are encoded
+       with PNG here.
+     * Added suport for serving VNC sessions through WebSockets
+       (http://en.wikipedia.org/wiki/WebSocket), a web technology providing for multiplexing
+       bi-directional, full-duplex communications channels over a single TCP connection.
+     * Support connections from the Mac OS X built-in VNC client to LibVNCServer
+       instances running with no password.
+     * Replaced the Tight encoder with a TurboVNC one which is tremendously faster in most
+       cases, especially with high-color video or 3D workloads.
+       (http://www.virtualgl.org/pmwiki/uploads/About/tighttoturbo.pdf)
+
+   - LibVNCClient:
+     * Added support to only listen for reverse connections on a specific IP address.
+     * Support for using OpenSSL instead of GnuTLS. This could come in handy on embedded
+       devices where only this TLS implementation is available.
+     * Added support to connect to UltraVNC Single Click servers.
+
+0.9.8.2
+   - Fixed a regression that crept in with the Apple Remote Desktop support.
+
+0.9.8.1
+   - Fixed an ABI compatibility issue.
+
+0.9.8
+   - Overall changes:
+     * Automagically generated API documentation using doxygen.
+     * Added support for pkg-config.
+     * Fixed Mingw32 cross compilation.
+     * Fixed CMake build system.
+
+   - LibVNCServer/LibVNCClient:
+     * All files used by _both_ LibVNCServer and LibVNCClient were put into
+       a 'common' directory, reducing code duplication.
+     * Implemented xvp VNC extension.
+     * Updated minilzo library used for Ultra encoding to ver 2.04.
+       According to the minilzo README, this brings a significant
+       speedup on 64-bit architechtures.
+
+   - LibVNCServer:
+     * Thread safety for ZRLE, Zlib, Tight, RRE, CoRRE and Ultra encodings.
+       This makes all VNC encodings safe to use with a multithreaded server.
+     * A DisplayFinishedHook for LibVNCServer. If set, this hook gets called
+       just before rfbSendFrameBufferUpdate() returns.
+     * Fix for tight security type for RFB 3.8 in TightVNC file transfer
+       (Debian Bug #517422).
+
+   - LibVNCClient:
+     * Unix sockets support.
+     * Anonymous TLS security type support.
+     * VeNCrypt security type support.
+     * MSLogon security type support.
+     * ARD (Apple Remote Desktop) security type support.
+     * UltraVNC Repeater support.
+     * A new FinishedFrameBufferUpdate callback that is invoked after each
+       complete framebuffer update.
+     * A new non-forking listen (reverse VNC) function that works under
+       Windows.
+     * IPv6 support. LibVNCClient is now able to connect to IPv6 VNC servers.
+     * IP QoS support. This enables setting the DSCP/Traffic Class field of
+       IP/IPv6 packets sent by a client. For example starting a client with
+       -qosdscp 184 marks all outgoing traffic for expedited forwarding.
+       Implementation for Win32 is still a TODO, though.
+     * Fixed hostname resolution problems under Windows.
+
+   - SDLvncviewer
+     * Is now resizable and can do key repeat, mouse wheel scrolling
+       and clipboard copy and paste.
+
+   - LinuxVNC:
+     * Fix for no input possible because of ctrl key being stuck.
+       Issue was reported as Debian bug #555988.
+
+
+0.9.7
+   Mark sent me patches to no longer need C++ for ZRLE encoding!
+   added --disable-cxx Option for configure
+   x11vnc changes from Karl Runge:
+      - Changed all those whimpy printf(...)'s into manly fprintf(stdxxx,...)'s.
+
+      - Added -q switch (quiet) to suppress printing all the debug-looking output.
+
+      - Added -bg switch to fork into background after everything is set up.
+        (checks for LIBVNCSERVER_HAVE_FORK and LIBVNCSERVER_HAVE_SETSID)
+
+      - Print this string out to stdout:  'PORT=XXXX' (usually XXXX = 5900).
+        Combining with -bg, easy to write a ssh/rsh wrapper with something like:
+        port=`ssh $host "x11vnc -bg .."` then run vncviewer based on $port output.
+        (tunneling the vnc traffic thru ssh a bit more messy, but doable)
+
+      - Quite a bit of code to be more careful when doing 8bpp indexed color, e.g.
+        not assuming NCOLORS is 256, handling 8bit TrueColor and Direct Color, etc
+        (I did all this probably in April, not quite clear in my mind now, but
+        I did test it out a fair amount on my old Sparcstation 20 wrt a user's
+        questions).
+   introduce rfbErr for Errors (Erik)
+   make rfbLog overridable (suggested by Erik)
+   don't reutrn on EINTR in WriteExact()/ReadExact() (suggested by Erik)
+   use AX_PREFIX_CONFIG_H to prefix constants in config.h to avoid
+	name clashes (also suggested by Erik)
+   transformed Bool, KeySym, Pixel to rfbBool, rfbKeySym, rfbPixel
+	(as suggested by Erik)
+   purged exit() calls (suggested by Erik)
+   fixed bug with maxRectsPerUpdate and Tight Encoding (these are incompatible)
+   checked sync with TightVNC 1.2.8:
+	viewonly/full passwords; if given a list, only the first is a full one
+	vncRandomBytes is a little more secure now
+	new weights for tight encoding
+   checked sync with RealVNC 3.3.7
+	introduced maxRectsPerUpdate
+   added first alpha version of LibVNCClient
+   added simple and simple15 example (really simple examples)
+   finally got around to fix configure in CVS
+   long standing http bug (.jar was sent twice) fixed by a friend of Karl named Mike
+   http options in cargs
+   when closing a client and no longer listening for new ones, don't crash
+   fixed a bug with ClientConnectionGone
+   endianness is checked at configure time
+   fixed a bug that prevented the first client from being closed
+   fixed that annoying "libvncserver-config --link" bug
+   make rfbReverseByte public (for rdp2vnc)
+   fixed compilation on OS X, IRIX, Solaris
+   install target for headers is now ${prefix}/include/rfb ("#include <rfb/rfb.h>")
+   renamed "sraRegion.h" to "rfbregion.h"
+   CARD{8,16,32} are more standard uint{8,16,32}_t now
+   fixed LinuxVNC colour handling
+   fixed a bug with pthreads where the connection was not closed
+   moved vncterm to main package (LinuxVNC included)
+   portability fixes (IRIX, OSX, Solaris)
+   more portable way to determine endianness and types of a given size
+	through autoconf based methods
+0.5
+   rpm packaging through autoconf
+   autoconf'ed the whole package (including optional support for zlib,
+	pthreads and libjpeg as well as zrle/c++)
+   moved appropriate files to contrib/ and examples/ respectively
+   fixed long standing cargs bug (Justin "Zippy" Dearing)
+   Even better x11vnc from Karl J. Runge! (supports different kbd layouts of
+	client/server)
+   Better x11vnc from Karl J. Runge!
+   fixed severe bug (Const Kaplinsky)
+   got patch from Const Kaplisnky with CursorPosUpdate encoding and some Docs
+   sync'ed with newest RealVNC (ZRLE encoding)
+   a HTTP request for tunnelling was added (to fool strict web proxies)
+   sync'ed with TightVNC 1.2.5
+0.4
+   support for NewFB from Const Kaplinsky
+   memory leaks squashed (localtime pseudo leak is still there :-)
+   small improvements for OSXvnc (still not working correctly)
+   synced with TightVNC 1.2.3
+   solaris compile cleanups
+   many x11vnc improvements
+   added backchannel, an encoding which needs special clients to pass
+	arbitrary data to the client
+   changes from Tim Jansen regarding multi threading and client blocking
+	as well as C++ compliancy
+   x11vnc can be controlled by starting again with special options if compiling
+	with LOCAL_CONTROL defined
+0.3
+   added x11vnc, a x0rfbserver clone
+   regard deferUpdateTime in processEvents, if usec<0
+   initialize deferUpdateTime (memory "leak"!)
+   changed command line handling (arguments are parsed and then removed)
+   added very simple example: zippy
+   added rfbDrawLine, rfbDrawPixel
+0.2
+   inserted a deferUpdate mechanism (X11 independent).
+   removed deletion of requestedRegion
+   added rfbLoadConsoleFont
+   fixed font colour handling.
+   added rfbSelectBox
+   added rfbDrawCharWithClip to allow for clipping and a background colour.
+   fixed font colours
+   added rfbFillRect
+   added IO function to check password.
+   rfbNewClient now sets the socket in the fd_set (for the select() call)
+   when compiling the library with HAVE_PTHREADS and an application
+	which includes "rfb.h" without, the structures got mixed up.
+	So, the pthreads section is now always at the end, and also
+	you get a linker error for rfbInitServer when using two different
+	pthread setups.
+   fixed two deadlocks: when setting a cursor and when using CopyRect
+   fixed CopyRect when copying modified regions (they lost the modified
+	 property)
+   WIN32 target compiles and works for example :-)
+   fixed CopyRect (was using the wrong order of rectangles...)
+   	 should also work with pthreads, because copyrects are
+	 always sent immediately (so that two consecutive copy rects
+	 cannot conflict).
+   changed rfbUndrawCursor(rfbClientPtr) to (rfbScreenInfoPtr), because
+   	   this makes more sense!
+   flag backgroundLoop in rfbScreenInfo (if having pthreads)
+   CopyRect & CopyRegion were implemented.
+	if you use a rfbDoCopyR* function, it copies the data in the
+	framebuffer. If you prefer to do that yourself, use rfbScheduleCopyR*
+	instead; this doesn't modify the frameBuffer.
+   added flag to optionally not send XCursor updates, but only RichCursor,
+	or if that is not possible, fall back to server side cursor.
+	This is useful if your cursor has many nice colours.
+   fixed java viewer on server side:
+	SendCursorUpdate would send data even before the client pixel format
+	was set, but the java applet doesn't like the server's format.
+   fixed two pthread issues:
+	rfbSendFramebuffer was sent by a ProcessClientMessage function
+	(unprotected by updateMutex).
+	cursor coordinates were set without protection by cursorMutex
+   source is now equivalent to TridiaVNC 1.2.1
+   pthreads now work (use iterators!)
+   cursors are supported (rfbSetCursor automatically undraws cursor)
+   support for 3 bytes/pixel (slow!)
+   server side colourmap support
+   fixed rfbCloseClient not to close the connection (pthreads!)
+	this is done lazily (and with proper signalling).
+   cleaned up mac.c (from original OSXvnc); now compiles (untested!)
+   compiles cleanly on Linux, IRIX, BSD, Apple (Darwin)
+   fixed prototypes
+0.1
+   rewrote API to use pseudo-methods instead of required functions.
+   lots of clean up.
+   Example can show symbols now.
+   All encodings
+   HTTP