Added a first-cut version of MapVirtualKeyExW() that has the same
[wine] / README
diff --git a/README b/README
index 4e3c6a3..c6542fc 100644 (file)
--- a/README
+++ b/README
-Copyright  Robert J. Amstadt, 1993.  All code is provided without
-warranty.  All code is covered by the license contained in the file
-LICENSE unless explicitly stated in the individual source file.
+1. INTRODUCTION
 
+Wine is a program which allows running Microsoft Windows programs
+(including DOS, Windows 3.x and Win32 executables) on Unix.  It
+consists of a program loader which loads and executes a Microsoft
+Windows binary, and a library that implements Windows API calls using
+their Unix or X11 equivalents. The library may also be used for
+porting Win32 code into native Unix executables.
 
+Wine is free software, and its license (contained in the file LICENSE)
+is BSD style.  Basically, you can do anything with it except claim
+that you wrote it.
 
-1. COMPILATION:
+2. QUICK START
 
-You must have one of:
+Whenever you compile from source, it is recommended to use the Wine
+Installer to build and install wine.  From the top-level Wine
+directory (which contains this file), run:
 
-       Linux version 0.99.13 or above
-       NetBSD-current
-       FreeBSD-current or FreeBSD 1.1
+./tools/wineinstall
 
-To build Wine, first do a "./Configure" and then a "make".  The
-executable "wine" will be built.  "wine" will load and run 16-bit
-Windows' executables. 
+Run programs as "wine [options] program".  For more information and
+problem resolution, read the rest of this file, the Wine manpage,
+and the files in the documentation directory in the Wine source.
 
+3. REQUIREMENTS
 
+To compile and run Wine, you must have one of the following:
 
-2. SETUP:
+       Linux version 2.0.36 or above
+       FreeBSD-current or FreeBSD 3.0 or later
+       Solaris x86 2.5 or later
 
-Wine requires you to have a file /usr/local/etc/wine.conf (you can
-supply a different name when configuring wine) or a file called .winerc
-in your homedirectory.
+Although Linux version 2.0.x will mostly work, certain features
+(specifically LDT sharing) required for properly supporting Win32
+threads were not implemented until kernel version 2.2.  If you get
+consistent thread-related crashes, you may want to upgrade to 2.2.
 
-The formatstyle of this config file is just like a windows .ini file.
+Similarly if you are on FreeBSD you may want to apply an LDT sharing
+patch too (unless you are tracking -current where it finally has
+been committed just recently), and there also is a small sigtrap
+fix thats needed for wine's debugger. (Actually now that its using
+ptrace() by default it may no longer make a difference but it still
+doesn't hurt...) And if you're running a system from the -stable
+branch older than Nov 15 1999, like a 3.3-RELEASE, then you also
+need to apply a signal handling change that was MFC'd at that date.
+More information including patches for the -stable branch is in
+the ports tree:
+ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/ports/emulators/wine/files/
 
-Here's an explanation of each section:
+You need to have the X11 development include files installed
+(called xlib6g-dev in Debian and XFree86-devel-4.0.1-1 in RedHat).
 
-* [drives]
+You also need to have libXpm installed on your system. The sources for
+it are available at ftp.x.org and all its mirror sites in the directory
+/contrib/libraries. If you are using RedHat, libXpm is distributed as the
+xpm and xpm-devel packages. Debian distributes libXpm as xpm4.7, xpm4g,
+and xpm4g-dev 3.4j. SuSE calls these packages xpm and xpm-devel.
 
-format: <driveletter> = <rootdirectory>
-default: none
+On x86 Systems gcc >= 2.7.2 is required. You also need flex version 2.5
+or later and yacc. Bison will work as a replacement for yacc. If you are
+using RedHat, install the flex and bison packages.
 
-This section is used to specify the root directory of each `dos'drive 
-as windows' applications require a dos/mswindows based diskdrive & 
-directory scheme. 
+4. COMPILATION
 
-If you mounted you dos-partition as /dos and installed microsoft windows 
-in c:\windows than you should specify c=/dos in the drives section.
+To build Wine, run the following commands:
 
-* [wine]
+./configure
+make depend
+make
 
-format: windows = <directory>
-default: c:\windows
+This will build the library "libwine.a" and the program "wine".  
+The program "wine" will load and run Windows executables.
+The library "libwine.a" can be used to compile and link Windows source
+code under Unix.
 
-Used to specify an different windows directory.
+If you do not intend to compile Windows source code, use
+"./configure --disable-lib" to skip building the library and reduce disk
+space requirements. If you have an ELF compiler (which you probably do),
+you can use "./configure --enable-dll" to build a shared library instead.
+To see other configuration options, do ./configure --help.
 
-format: system = <directory>
-default: c:\windows\system
+To upgrade to a new release by using a patch file, first cd to the
+top-level directory of the release (the one containing this README
+file). Then do a "make clean", and patch the release with:
 
-Used to specify an different system directory.
+    gunzip -c patch-file | patch -p1
 
-format: temp = <directory>
-default: c:\temp
+where "patch-file" is the name of the patch file (something like
+Wine-yymmdd.diff.gz). You can then re-run "./configure", and then
+run "make depend && make".
 
-Used to specify a directory where windows applications can store temporary
-files.
 
-format: path = <directories separated by semi-colons>
-default: c:\windows;c:\windows\system
+5. SETUP
 
-Used to specify the path which will be used to find executables and DLL's.
+Once Wine has been built correctly, you can do "make install"; this
+will install the wine executable, the Wine man page, and a few other
+needed files.
 
-format: systemresources = <filename>
-default: c:\temp
+Wine requires a configuration file named wine.conf. Its default location is
+/usr/local/etc, but you can supply a different name when configuring wine by
+using the --prefix or --sysconfdir options to ./configure. You can also override
+the global configuration file with a .winerc file in your home directory.
 
-Used to specify the name of sysres.dll, a dll which is used by wine itself.
+The format of this file is explained in the man page. The file
+wine.ini contains an example configuration file which has to be adapted
+and copied to one of the two locations mentioned above.
 
-* [serialports]
+See http://www.winehq.com/config.html for further configuration hints.
 
-format: com[12345678] = <devicename>
-default: none
 
-Used to specify the devices which are used as com1 - com8.
+6. RUNNING PROGRAMS
 
-* [parallelports]
-
-format: lpt[12345678] = <devicename>
-default: none
-
-Used to specify the devices which are used as lpt1 - lpt8.
-
-* [spy]
-
-format: file = <filename or CON when logging to stdout>
-default: none
-
-used to specify the file which will be used as logfile.
-
-format: exclude = <message names separated by semicolons>
-default: none
-
-Used to specify which messages will be excluded from the logfile.
-
-format: include = <message names separated by semicolons>
-default: none
+When invoking Wine, you may specify the entire path to the executable,
+or a filename only.
 
-Used to specify which messages will be included in the logfile.
+For example: to run Solitaire:
 
+       wine sol                   (using the searchpath to locate the file)
+       wine sol.exe
 
+       wine c:\\windows\\sol.exe  (using a DOS filename)
 
-3. RUNNING PROGRAMS
+       wine /usr/windows/sol.exe  (using a Unix filename)
 
-When invoking wine, you must specify the entire path to the executable,
-or a filename only.
+Note: the path of the file will also be added to the path when
+      a full name is supplied on the commandline.
 
-For example: to run Windows' solitaire:
+Wine is not yet complete, so some programs may crash. Provided you set up
+winedbg correctly according to documentation/debugger.sgml, you will be dropped
+into a debugger so that you can investigate and fix the problem. For more
+information on how to do this, please read the file documentation/debugging.
+If you post a bug report, please read the file documentation/bugreports to
+see what information is required.
 
-       wine sol                   (using the searchpath to locate the file)
-       wine sol.exe
 
-       wine c:\\windows\\sol.exe  (using a dosfilename)
+7. GETTING MORE INFORMATION
 
-       wine /usr/windows/sol.exe  (using a unixfilename)
+DOCU:  grep -i "SearchString" `find documentation/`|more
 
-note: the path of the file will also be added to the path when
-      a full name is supplied on the commandline.
+FAQ:   The Wine FAQ is located at http://www.winehq.com/faq.html.
 
-Have a nice game of solitaire, but be careful.  Emulation isn't perfect.
-So, occassionally it will crash.
+WWW:   A great deal of information about Wine is available from WineHQ at
+       http://www.winehq.com/. Untested patches against the current release
+       are available on the wine-patches mailing list; see 
+       http://www.winehq.com/dev.html#ml for more information.
 
+HOWTO: The Wine HOWTO is available at
+       http://www.westfalen.de/witch/wine-HOWTO.txt .
 
+Usenet:        Please browse old messages on http://www.dejanews.com/ to check whether 
+       your problem is already fixed before posting a bug report to the 
+       newsgroup. 
 
-4. EXAMPLE CONFIGFILE
+       The best place to get help or to report bugs is the Usenet newsgroup
+       comp.emulators.ms-windows.wine. Please read the file 
+       documentation/bugreports to see what information should be included 
+       in a bug report.
 
-----------------------------------------------------------------------------
-[drives]
-a=/mnt/fd0
-c=/dos
-d=~/Wine
+IRC:   Online help is available at channel #WineHQ on IRCnet.
 
-[wine]
-windows=c:\windows
-system=c:\windows\system
-temp=c:\temp
-path=c:\windows;c:\windows\system;c:\winapps\word\;c:\winapps\pctools
-systemresources=./sysres.dll
+CVS:   The current Wine development tree is available through CVS.
+       Go to http://www.winehq.com/dev.html for more information.
 
-[serialports]
-com1=/dev/cua1
-com2=/dev/cua1
+If you add something, or fix a bug, please send a patch ('diff -u'
+format preferred) to julliard@winehq.com for inclusion in the next
+release.
 
-[parallelports]
-lpt1=/dev/lp0
-
-[spy]
-;File=CON
-;File=spy.log
-Exclude=WM_TIMER;WM_SETCURSOR;WM_MOUSEMOVE;WM_NCHITTEST;WM_NCACTIVATE;WM_GETDLGCODE;
-Include=WM_COMMAND;
-
-----------------------------------------------------------------------------
-
-
-5. BUILD:
-
-    The documentation for the build program is in the file build-spec.txt
-
-
-6. FINALE:
-
-Good luck,
-
-       If you successfully add anything, please send me a copy.
-
-Bob Amstadt
-bob@amscons.com
-
-
-7. WHAT'S NEW
-
-WHAT'S NEW with Wine-940420: (see ChangeLog for details)
-       - new property functions
-       - new listbox and combo box functions
-       - GrayString() and CallGrayStringProc()
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940412: (see ChangeLog for details)
-       - menuing improvements
-       - drawing performance improvements
-       - beginnings of hooks
-       - MDI maximizing and tiling
-       - improvements in winsock implementation
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940405: (see ChangeLog for details)
-       - Mouse activation of menus working again
-       - GetprocAddress()
-       - SetDIBitsToDevice()
-       - FindWindow()
-       - int 10hm 25h and 26h
-       - in, inb, out, outb emulation
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940329: (see ChangeLog for details)
-       - MDI: child windows can be created, activated and cascaded.
-       - -depth option
-       - support for dithered brushes
-       - GetNearestColor(), RealizeDefaultPalette(), 
-         GetSystemPaletteEntries(), and SelectPalette()
-       - System colors read from WIN.INI
-       - Keyboard menu manipulation (mouse is temporarily broken)
-       - GetFreeSystemResources()
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940322: (see ChangeLog for details)
-       - Speed improvements in bitmaps and mouse messages
-       - More MDI support.  More to come next week...
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940315: (see ChangeLog for details)
-       - Beginnings of MDI support.  More to come next week...
-       - Stress DLL
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940309: (see ChangeLog for details)
-       - New "exclude" and "include" filters for spy feature.  See sample
-         wine.ini for details.
-       - -desktop and -name options (see ChangeLog)
-       - GetFreeSpace() and CreateIcon()
-       - and many many bug fixes!
-
-WHAT'S NEW with Wine-940301: (see ChangeLog for details)
-       - NEW Configure script to set compile time options!
-       - Support for filesystems with short (less than 14 chars) filenames.
-       - Clipboard functions!
-       - and more...
-
-WHAT'S NEW with Wine-940223: (see ChangeLog for details)
-       - FreeBSD support
-       - FloodFill()
-       - Desktop window support
-       - Menu fixes
-       - and more...
-
-WHAT'S NEW with Wine-940216: (see ChangeLog for details)
-       - Many many bug fixes
-       - Switched to using Imakefile's instead of Makefile's.
-       - Lot's of changes for libwine.a
-
-WHAT'S NEW with Wine-940209: (see ChangeLog for details)
-       - Many many bug fixes
-       - Minor directory structure reorganization
-       - New GetModule*() functions.
-       - WINSOCK DLL
-       - First stab at Wine as a library
-
-WHAT'S NEW with Wine-940201: (see ChangeLog for details)
-       - Support for huge data structures.
-       - FreeBSD support.
-       - Many many bug fixes
-
-WHAT'S NEW with version 0.8: (see ChangeLog for details)
-       - Eliminated Xt-dependent code.  Thanks to Alexandre and Martin.
-       - EnumWindows() and EnumChildWindows()
-       - Activating and deactivating of windows.
-       - More work on system menus.
-
-WHAT'S NEW with version 0.7: (see ChangeLog for details)
-       - Eliminated Xt-dependent code.  Thanks to Alexandre and Martin.
-       - Other bug fixes.
-       - IsWIndowEnabled() and EnableWindow() now implemented.
-       - New command line options.
-
-WHAT'S NEW with version 0.6: (see ChangeLog for details)
-       - Working towards elimination of Xt-dependent code.  Thanks to
-         Alexandre and Martin.
-       - Other bug fixes.
-       - I added a rudimentary spy facility which can be turned
-         on from the wine.ini file.  See the sample wine.ini
-         for details
-
-WHAT'S NEW with version 0.5: (see ChangeLog for details)
-       - Working towards elimination of Xt-dependent code.
-       - StretchBlt()
-       - GetClassName() & GetClassInfo()
-       - Implemented loader relocation types 5 and 6.
-
-WHAT'S NEW with version 0.4.14: (see ChangeLog for details)
-       - Bug fixes and enhancements
-       - Comm functions
-       - Text caret functions
-
-WHAT'S NEW with version 0.4.13: (see ChangeLog for details)
-       - Bug fixes
-       - GetCapture()
-       - More keyboard handling
-       - Polyline() and Polygon()
-
-WHAT'S NEW with version 0.4.12: (see ChangeLog for details)
-       - Bug fixes
-       - New DOS file functions
-       - Experimental Imakefiles
-
-WHAT'S NEW with version 0.4.11: (see ChangeLog for details)
-       - Bug fixes
-       - New cursor functions
-       - New file system handling
-       - Atoms
-
-WHAT'S NEW with version 0.4.10: (see ChangeLog for details)
-       - Bug fixes
-       - More scroll bar functions
-       - More icon and cursor handling
-
-WHAT'S NEW with version 0.4.9: (see ChangeLog for details)
-       - Bug fixes
-       - real MessageBox()
-       - New resource functions
-       - Icon functions
-       - Selector manipulation functions
-       - Catch()/Throw()
-
-WHAT'S NEW with version 0.4.7: (see ChangeLog for details)
-       - More dialog box functions
-       - More DOS interrupts
-       - NetBSD compatibility patches
-
-WHAT'S NEW with version 0.4.5: (see ChangeLog for details)
-       - Bug fixes
-       - focus routines
-       - dialog box functions
-       - improvements to control windows
-
-WHAT'S NEW with version 0.4.4: (see ChangeLog for details)
-       - Bug fixes
-       - New static control class
-       - Preliminary listbox, combobox and scrollbar controls
-       - System initialization file is now called "wine.ini", and
-         may be located in the user's current directory, the
-         user's home directory or any directory specified by
-         the WINEPATH environment variable.
-       - The loader now searches the directories specified by the
-         WINEPATH environment variable for programs and DLLs.
-       - Internal debugger now works on 386BSD.
-
-WHAT'S NEW with version 0.4.3: (see ChangeLog for details)
-       - Bug fixes
-       - Resource loading now able to load DLL resources
-       - Button control now based on GDI calls
-       - Preliminary system color support
-       - Miscellaneous window functions
-       - Limited debugging facility (sometimes hangs)
-
-WHAT'S NEW with version 0.4.2: (see ChangeLog for details)
-       - Bug fixes
-       - 32-bit callback functions allowed
-       - .INI file handling
-       - lstr* functions and ANSI<->OEM conversion functions.
-
-WHAT'S NEW with version 0.4.1: (see ChangeLog for details)
-       - Bug fixes
-       - Memory usage changes.
-
-WHAT'S NEW with version 0.4.0: (see ChangeLog for details)
-       - Wine now compiles and runs under NetBSD.  Patches are
-         required for NetBSD.
-       - Wine stat patches included.  Add "-DWINESTAT" to the definition
-         of COPTS in the main Makefile to activate.
-       - Preliminary keyboard handling.
-       - Button control window implemented.
-       - many other new functions added.
-
-WHAT'S NEW with version 0.3.1: (see ChangeLog for details)
-       - LineDDA() completed
-       - numerous bug fixes
-       - INT 1Ah implemented
-       - SOUND DLL implemented
-       - More of WIN87EM DLL implemented
-       - OpenFile() and friends implemented
-
-WHAT'S NEW with version 0.3.0: (see ChangeLog for details)
-       - Mouse capture
-       - Text justification and underlining
-       - Clipping
-       - LoadBitmap() completed
-       - Code generated by the Borland compiler should now work
-
-WHAT'S NEW with version 0.2.8: (see ChangeLog for details)
-       - Text functions from Alexandre
-       - INT 21h from Eric
-       - Menu improvements from David
-       - Bug fixes and GetProcAddress() stub from me
-
-WHAT'S NEW with version 0.2.7: (see ChangeLog for details)
-    - sol.exe gets further.  I did some debugging and now solitaire
-      stops when it tries to call GetTextExtent().  Any volunteers?
-    - Many DC updates from Alexandre.
-    - Menu updates to support underlining characters from David Metcalfe.
-
-WHAT'S NEW with version 0.2.6: (see ChangeLog for details)
-    - More region updates from Alexandre
-
-WHAT'S NEW with version 0.2.5: (see ChangeLog for details)
-    - Regions implemented by Alexandre
-    - More menuing code from me
-
-WHAT'S NEW with version 0.2.4: (see ChangeLog for details)
-    - Many improvements to GDI from Alexandre
-    - Many improvements to menu handling by me.
-
-WHAT'S NEW with version 0.2.3: (see ChangeLog for details)
-    - Bug fixes with SendMessage() and PostMessage()
-    - Preliminary menu support
-
-WHAT'S NEW with version 0.2.2: (see ChangeLog for details)
-    - Misc bug fixes
-    - More bitmap code
-    - Timers
-    - Memory DC's
-
-WHAT'S NEW with version 0.2.1:
-    - I have placed things into sub-directories.  The organization is
-      not finalized.  I imagine that the directory structure will
-      change as is necessary.  Files in the ./misc directory need
-      to be split apart and placed in apropriate directories.
-    - Tons of code from Alexandre.  He has constructed the framework
-      for handling GDI objects.  He has also provided code for DCEs.
-    - Local heap functions have been completed.
-    - Bug fixes in global.c and win.c
-    - New function GlobalQuickAlloc() combines GlobalAlloc() and
-      GlobalLock() into a single function call.
-    - New patch kit for Linux 0.99 pl11 kernel.  Thanks to Linus
-      who has graciously included our patches into the ALPHA patch
-      release cycle.
-
-WHAT'S NEW with version 0.2.0:
-    - Alexandre Julliard has provided a replacement for the Tcl code.
-      The new code uses Xlib and Xt directly with no intervening
-      interpretted language.  This should reduce the learning
-      curve for casual hackers.
-    - I changed all GLOBAL_ names to Global.
-
-WHAT'S NEW with version 0.1.1:
-    - I have completed global memory allocation, but I don't like it.
-      It is not 100% compatible with Windows.  I need some more kernel
-      modifications for 100% compatibility.
-    - Alexandre Julliard has provided written better emulation for
-      the Windows message queue.
-
-WHAT'S NEW with version 0.1.0:
-    - Latest patches from Alexandre Julliard.
-    - minor bug fix in if1632.S
-
-WHAT'S NEW with version 0.0.5:
-    - Patches from Alexandre Julliard.  Some integration with Tcl.
-    - Generic interface for callback procedures.  This will allow
-      callbacks into DLLs.
-    - MakeProcInstance() has been implemented but untested.
-
-WHAT'S NEW with version 0.0.4:
-    - Eric Youngdale modified wine.c and selector.c to allow loading
-      of Windows DLLs.
-    - Added global memory allocation routines (GlobalAlloc, GlobalFree,
-      and GlobalLock)
-    - Bitmap resource loading into global memory.
-
-WHAT'S NEW with version 0.0.3:
-    - Fixed bug with sector sizes.
-    - Registers at program startup are now set correctly.
-    - Segment fixups for relocatable-segment internal entry points.
-    - Fixed bug in DOS PSP structure.
-    - Some resource loading is done.
-    - Added "return" ordinal type to build program.
-    - Added comment capability to build program.
-
-WHAT'S NEW with version 0.0.2:
-
-    - Again thanks to Eric Youngdale for some very useful comments.
-    - The Windows startup code created by Micrsoft C 7.0 now runs 
-      to completion.
-    - Added a new patch to the kernel to increase the usable size of
-      the ldt to the full 32 entries currently allowed.
-    - Imported name relocations are now supported.
-    - Source code for my infamous test program is now included.
-    - A handful of basic Windows functions are now emulated.  See
-      "kernel.spec" for examples of how to use the build program.
-
-WHAT'S NEW with version 0.0.1:
-
-    - Eric Youngdale contributed countless improvements in memory
-      efficiency, bug fixes, and relocation.
-    - The build program has been completed.  It now lets you specify
-      how the main DLL entry point should interface to your emulation
-      library routines.  A brief description of how to build these
-      specifications is included in the file "build-spec.txt".
-    - The code to dispatch builtin DLL calls is complete, but untested.
+--
+Alexandre Julliard
+julliard@winehq.com