Commit 1af53cbb authored by Andreas Mohr's avatar Andreas Mohr Committed by Alexandre Julliard

- README update

- add offsets to ASPI struct defines - spelling
parent 5448c534
...@@ -69,16 +69,12 @@ To build Wine, run the following commands: ...@@ -69,16 +69,12 @@ To build Wine, run the following commands:
make depend make depend
make make
This will build the library "libwine.a" and the program "wine". This will build the program "wine" and numerous support libraries/binaries.
The program "wine" will load and run Windows executables. The program "wine" will load and run Windows executables.
The library "libwine.a" can be used to compile and link Windows source The library "libwine" ("Winelib") can be used to compile and link
code under Unix. Windows source code under Unix.
If you do not intend to compile Windows source code, use To see compile configuration options, do ./configure --help.
"./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.
To upgrade to a new release by using a patch file, first cd to the 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 top-level directory of the release (the one containing this README
...@@ -145,7 +141,7 @@ FAQ: The Wine FAQ is located at http://www.winehq.com/faq.html. ...@@ -145,7 +141,7 @@ FAQ: The Wine FAQ is located at http://www.winehq.com/faq.html.
WWW: A great deal of information about Wine is available from WineHQ at WWW: A great deal of information about Wine is available from WineHQ at
http://www.winehq.com/. Untested patches against the current release http://www.winehq.com/. Untested patches against the current release
are available on the wine-patches mailing list; see are available on the wine-patches mailing list; see
http://www.winehq.com/dev.html#ml for more information. http://www.winehq.com/dev.shtml#ml for more information.
HOWTO: The Wine HOWTO is available at HOWTO: The Wine HOWTO is available at
http://www.westfalen.de/witch/wine-HOWTO.txt . http://www.westfalen.de/witch/wine-HOWTO.txt .
...@@ -162,7 +158,7 @@ Usenet: Please browse old messages on http://www.dejanews.com/ to check whether ...@@ -162,7 +158,7 @@ Usenet: Please browse old messages on http://www.dejanews.com/ to check whether
IRC: Online help is available at channel #WineHQ on IRCnet. IRC: Online help is available at channel #WineHQ on IRCnet.
CVS: The current Wine development tree is available through CVS. CVS: The current Wine development tree is available through CVS.
Go to http://www.winehq.com/dev.html for more information. Go to http://www.winehq.com/dev.shtml for more information.
If you add something, or fix a bug, please send a patch ('diff -u' 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 format preferred) to julliard@winehq.com for inclusion in the next
......
...@@ -136,7 +136,7 @@ BSTR16 WINAPI SysAllocStringLen16(const char *in, int len) ...@@ -136,7 +136,7 @@ BSTR16 WINAPI SysAllocStringLen16(const char *in, int len)
* SysAllocStringLen [OLEAUT32.4] * SysAllocStringLen [OLEAUT32.4]
* *
* In "Inside OLE, second edition" by Kraig Brockshmidt. In the Automation * In "Inside OLE, second edition" by Kraig Brockshmidt. In the Automation
* section, he describes the DWORD value placed before the BSTR data type. * section, he describes the DWORD value placed *before* the BSTR data type.
* he describes it as a "DWORD count of characters". By experimenting with * he describes it as a "DWORD count of characters". By experimenting with
* a windows application, this count seems to be a DWORD count of bytes in * a windows application, this count seems to be a DWORD count of bytes in
* the string. Meaning that the count is double the number of wide * the string. Meaning that the count is double the number of wide
...@@ -149,13 +149,13 @@ BSTR WINAPI SysAllocStringLen(const OLECHAR *in, unsigned int len) ...@@ -149,13 +149,13 @@ BSTR WINAPI SysAllocStringLen(const OLECHAR *in, unsigned int len)
WCHAR* stringBuffer; WCHAR* stringBuffer;
/* /*
* Find the lenth of the buffer passed-in in bytes. * Find the length of the buffer passed-in in bytes.
*/ */
bufferSize = len * sizeof (WCHAR); bufferSize = len * sizeof (WCHAR);
/* /*
* Allocate a new buffer to hold the string. * Allocate a new buffer to hold the string.
* dont't forget to keep an empty spot at the begining of the * dont't forget to keep an empty spot at the beginning of the
* buffer for the character count and an extra character at the * buffer for the character count and an extra character at the
* end for the NULL. * end for the NULL.
*/ */
......
...@@ -63,7 +63,7 @@ static BOOL MIX_GetVal(int chn, int* val) ...@@ -63,7 +63,7 @@ static BOOL MIX_GetVal(int chn, int* val)
WARN("mixer device not available !\n"); WARN("mixer device not available !\n");
} else { } else {
if (ioctl(mixer, MIXER_READ(chn), val) >= 0) { if (ioctl(mixer, MIXER_READ(chn), val) >= 0) {
TRACE("Reading %x on %d\n", *val, chn); TRACE("Reading volume %x on %d\n", *val, chn);
ret = TRUE; ret = TRUE;
} }
close(mixer); close(mixer);
...@@ -79,7 +79,7 @@ static BOOL MIX_SetVal(int chn, int val) ...@@ -79,7 +79,7 @@ static BOOL MIX_SetVal(int chn, int val)
int mixer; int mixer;
BOOL ret = FALSE; BOOL ret = FALSE;
TRACE("Writing %x on %d\n", val, chn); TRACE("Writing volume %x on %d\n", val, chn);
if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) { if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
/* FIXME: ENXIO => no mixer installed */ /* FIXME: ENXIO => no mixer installed */
...@@ -199,7 +199,7 @@ static DWORD MIX_GetLineInfo(WORD wDevID, LPMIXERLINEA lpMl, DWORD fdwInfo) ...@@ -199,7 +199,7 @@ static DWORD MIX_GetLineInfo(WORD wDevID, LPMIXERLINEA lpMl, DWORD fdwInfo)
TRACE("SOURCE (%08lx)\n", lpMl->dwSource); TRACE("SOURCE (%08lx)\n", lpMl->dwSource);
i = lpMl->dwSource; i = lpMl->dwSource;
for (j = 1; j < SOUND_MIXER_NRDEVICES; j++) { for (j = 1; j < SOUND_MIXER_NRDEVICES; j++) {
if (WINE_CHN_SUPPORTS(MIX_DevMask, j) && (i-- == 0)) if (WINE_CHN_SUPPORTS(MIX_DevMask, j) && (i-- == 0))
break; break;
} }
if (j >= SOUND_MIXER_NRDEVICES) if (j >= SOUND_MIXER_NRDEVICES)
......
...@@ -40,7 +40,7 @@ typedef struct tagSMSG ...@@ -40,7 +40,7 @@ typedef struct tagSMSG
HQUEUE16 hSrcQueue; /* sending Queue, (NULL if it didn't wait) */ HQUEUE16 hSrcQueue; /* sending Queue, (NULL if it didn't wait) */
HQUEUE16 hDstQueue; /* destination Queue */ HQUEUE16 hDstQueue; /* destination Queue */
HWND hWnd; /* destinantion window */ HWND hWnd; /* destination window */
UINT msg; /* message sent */ UINT msg; /* message sent */
WPARAM wParam; /* wParam of the sent message */ WPARAM wParam; /* wParam of the sent message */
LPARAM lParam; /* lParam of the sent message */ LPARAM lParam; /* lParam of the sent message */
...@@ -65,7 +65,7 @@ typedef struct tagSMSG ...@@ -65,7 +65,7 @@ typedef struct tagSMSG
#define SMSG_EARLY_REPLY 0x0080 #define SMSG_EARLY_REPLY 0x0080
/* set when sender is Win32 thread */ /* set when sender is Win32 thread */
#define SMSG_WIN32 0x1000 #define SMSG_WIN32 0x1000
/* set when sender is a unnicode thread */ /* set when sender is a unicode thread */
#define SMSG_UNICODE 0x2000 #define SMSG_UNICODE 0x2000
/* Per-queue data for the message queue /* Per-queue data for the message queue
......
...@@ -156,11 +156,11 @@ void MAIN_ParseDebugOptions( const char *arg ) ...@@ -156,11 +156,11 @@ void MAIN_ParseDebugOptions( const char *arg )
error: error:
MESSAGE("%s: Syntax: --debugmsg [class]+xxx,... or " MESSAGE("%s: Syntax: --debugmsg [class]+xxx,... or "
"-debugmsg [class]-xxx,...\n",argv0); "--debugmsg [class]-xxx,...\n",argv0);
MESSAGE("Example: --debugmsg +all,warn-heap\n" MESSAGE("Example: --debugmsg +all,warn-heap\n"
" turn on all messages except warning heap messages\n"); " turn on all messages except warning heap messages\n");
MESSAGE("Special case: --debugmsg +relay=DLL:DLL.###:FuncName\n" MESSAGE("Special case: --debugmsg +relay=DLL:DLL.###:FuncName\n"
" turn on -debugmsg +relay only as specified\n" " turn on --debugmsg +relay only as specified\n"
"Special case: --debugmsg -relay=DLL:DLL.###:FuncName\n" "Special case: --debugmsg -relay=DLL:DLL.###:FuncName\n"
" turn on --debugmsg +relay except as specified\n" " turn on --debugmsg +relay except as specified\n"
"Also permitted, +snoop=..., -snoop=... as with relay.\n\n"); "Also permitted, +snoop=..., -snoop=... as with relay.\n\n");
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* win31->NT migration book) * win31->NT migration book)
* *
* FIXME: There seems to be a general problem with hInstance in WINE * FIXME: There seems to be a general problem with hInstance in WINE
* classes are getting registred with wrong hInstance. * classes are getting registered with wrong hInstance.
*/ */
#include <stdlib.h> #include <stdlib.h>
......
...@@ -361,7 +361,7 @@ END: ...@@ -361,7 +361,7 @@ END:
/*********************************************************************** /***********************************************************************
* MSG_TranslateKbdMsg * MSG_TranslateKbdMsg
* *
* Translate an keyboard hardware event into a real message. * Translate a keyboard hardware event into a real message.
*/ */
static DWORD MSG_TranslateKbdMsg( HWND hTopWnd, DWORD first, DWORD last, static DWORD MSG_TranslateKbdMsg( HWND hTopWnd, DWORD first, DWORD last,
MSG *msg, BOOL remove ) MSG *msg, BOOL remove )
...@@ -508,7 +508,7 @@ static int MSG_JournalPlayBackMsg(void) ...@@ -508,7 +508,7 @@ static int MSG_JournalPlayBackMsg(void)
if (wtime<=0) if (wtime<=0)
{ {
wtime=0; wtime=0;
if ((tmpMsg->message>= WM_KEYFIRST) && (tmpMsg->message <= WM_KEYLAST)) if ((tmpMsg->message >= WM_KEYFIRST) && (tmpMsg->message <= WM_KEYLAST))
{ {
wParam=tmpMsg->paramL & 0xFF; wParam=tmpMsg->paramL & 0xFF;
lParam=MAKELONG(tmpMsg->paramH&0x7ffff,tmpMsg->paramL>>8); lParam=MAKELONG(tmpMsg->paramH&0x7ffff,tmpMsg->paramL>>8);
...@@ -590,8 +590,6 @@ static int MSG_JournalPlayBackMsg(void) ...@@ -590,8 +590,6 @@ static int MSG_JournalPlayBackMsg(void)
static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, DWORD first, DWORD last, static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, DWORD first, DWORD last,
BOOL remove ) BOOL remove )
{ {
/* FIXME: should deal with MSG32 instead of MSG16 */
DWORD status = SYSQ_MSG_ACCEPT; DWORD status = SYSQ_MSG_ACCEPT;
MESSAGEQUEUE *sysMsgQueue = QUEUE_GetSysQueue(); MESSAGEQUEUE *sysMsgQueue = QUEUE_GetSysQueue();
enum { MOUSE_MSG = 0, KEYBOARD_MSG, HARDWARE_MSG } msgType; enum { MOUSE_MSG = 0, KEYBOARD_MSG, HARDWARE_MSG } msgType;
...@@ -789,7 +787,7 @@ UINT WINAPI GetDoubleClickTime(void) ...@@ -789,7 +787,7 @@ UINT WINAPI GetDoubleClickTime(void)
* Implementation of an inter-task SendMessage. * Implementation of an inter-task SendMessage.
* Return values: * Return values:
* 0 if error or timeout * 0 if error or timeout
* 1 if successflul * 1 if successful
*/ */
static LRESULT MSG_SendMessageInterThread( HQUEUE16 hDestQueue, static LRESULT MSG_SendMessageInterThread( HQUEUE16 hDestQueue,
HWND hwnd, UINT msg, HWND hwnd, UINT msg,
...@@ -2204,7 +2202,7 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd, ...@@ -2204,7 +2202,7 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd,
/* FIXME : should handle ToUnicode yielding 2 */ /* FIXME : should handle ToUnicode yielding 2 */
switch (ToUnicode(wParam, HIWORD(lParam), QueueKeyStateTable, wp, 2, 0)) switch (ToUnicode(wParam, HIWORD(lParam), QueueKeyStateTable, wp, 2, 0))
{ {
case 1 : case 1:
message = (message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR; message = (message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR;
/* Should dead chars handling go in ToAscii ? */ /* Should dead chars handling go in ToAscii ? */
if (dead_char) if (dead_char)
...@@ -2232,7 +2230,7 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd, ...@@ -2232,7 +2230,7 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd,
PostMessageW( hwnd, message, wp[0], lParam ); PostMessageW( hwnd, message, wp[0], lParam );
return TRUE; return TRUE;
case -1 : case -1:
message = (message == WM_KEYDOWN) ? WM_DEADCHAR : WM_SYSDEADCHAR; message = (message == WM_KEYDOWN) ? WM_DEADCHAR : WM_SYSDEADCHAR;
dead_char = wp[0]; dead_char = wp[0];
TRACE_(key)("-1 -> PostMessage(%s)\n", SPY_GetMsgName(message)); TRACE_(key)("-1 -> PostMessage(%s)\n", SPY_GetMsgName(message));
...@@ -2293,9 +2291,9 @@ LONG WINAPI DispatchMessage16( const MSG16* msg ) ...@@ -2293,9 +2291,9 @@ LONG WINAPI DispatchMessage16( const MSG16* msg )
{ {
if (msg->lParam) if (msg->lParam)
{ {
/* before calling window proc, verify it the timer is still valid, /* before calling window proc, verify whether timer is still valid;
there's a slim chance the application kill the timer between there's a slim chance that the application kills the timer
getMessage and DisaptachMessage API calls */ between GetMessage and DispatchMessage API calls */
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam)) if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
return 0; /* invalid winproc */ return 0; /* invalid winproc */
...@@ -2377,9 +2375,9 @@ LONG WINAPI DispatchMessageA( const MSG* msg ) ...@@ -2377,9 +2375,9 @@ LONG WINAPI DispatchMessageA( const MSG* msg )
{ {
/* HOOK_CallHooks32A( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */ /* HOOK_CallHooks32A( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
/* before calling window proc, verify it the timer is still valid, /* before calling window proc, verify whether timer is still valid;
there's a slim chance the application kill the timer between there's a slim chance that the application kills the timer
getMessage and DisaptachMessage API calls */ between GetMessage and DispatchMessage API calls */
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam)) if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
return 0; /* invalid winproc */ return 0; /* invalid winproc */
...@@ -2460,9 +2458,9 @@ LONG WINAPI DispatchMessageW( const MSG* msg ) ...@@ -2460,9 +2458,9 @@ LONG WINAPI DispatchMessageW( const MSG* msg )
{ {
/* HOOK_CallHooks32W( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */ /* HOOK_CallHooks32W( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
/* before calling window proc, verify it the timer is still valid, /* before calling window proc, verify whether timer is still valid;
there's a slim chance the application kill the timer between there's a slim chance that the application kills the timer
getMessage and DisaptachMessage API calls */ between GetMessage and DispatchMessage API calls */
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam)) if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
return 0; /* invalid winproc */ return 0; /* invalid winproc */
...@@ -2598,8 +2596,10 @@ BOOL WINAPI SendNotifyMessageW(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) ...@@ -2598,8 +2596,10 @@ BOOL WINAPI SendNotifyMessageW(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
/*********************************************************************** /***********************************************************************
* SendMessageCallbackA * SendMessageCallbackA
* FIXME: It's like PostMessage. The callback gets called when the message * FIXME: It's like PostMessage. The callback gets called when the message
* is processed. We have to modify the message processing for a exact * is processed. We have to modify the message processing for an exact
* implementation... * implementation...
* The callback is only called when the thread that called us calls one of
* Get/Peek/WaitMessage.
*/ */
BOOL WINAPI SendMessageCallbackA( BOOL WINAPI SendMessageCallbackA(
HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam, HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
...@@ -2617,9 +2617,7 @@ BOOL WINAPI SendMessageCallbackA( ...@@ -2617,9 +2617,7 @@ BOOL WINAPI SendMessageCallbackA(
} }
/*********************************************************************** /***********************************************************************
* SendMessageCallbackW * SendMessageCallbackW
* FIXME: It's like PostMessage. The callback gets called when the message * FIXME: see SendMessageCallbackA.
* is processed. We have to modify the message processing for a exact
* implementation...
*/ */
BOOL WINAPI SendMessageCallbackW( BOOL WINAPI SendMessageCallbackW(
HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam, HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment